Отговори на тема  [ 15 мнения ] 
Грешки при компилиране на програмка за 16F676 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение Грешки при компилиране на програмка за 16F676
Здравейте, първата ми програмка за микроконтролери се овенча с неуспех. :(
Взех си pic 16F676 да се пробвам с него и написах една лесничка програмка с няколкото инструкции които намерих оттук оттам.
Целта е да натисна 2 бутона на входовете PORTA.0 и PORTA.1 като при единият да се промени състоянието на светодиода, а при другият да се реверсира пак светодиода, но при продължително натискане да светва и изгасва светодиода.
Изходите ми съответно са: PORTC0 и PORTC1
Ето го и сорса

Код:
TRISA=%000111   
TRISC=%000000             

@ DEVICE pic16F676
@ DEVICE pic16F676, WDT_ON
@ DEVICE pic16F676, PWRT_ON
@ DEVICE pic16F676, PROTECT_OFF
@ DEVICE pic16F676, MCLR_ON
@ DEVICE pic16F676, INTRC_OSC_NOCLKOUT
                               
ADCON1=7                    

SYMBOL TUS0=PORTA.0           
SYMBOL TUS1=PORTA.1
                               
LED0 VAR PORTC.0               
LED1 VAR PORTC.1

PORTC=0

START:
     IF TUS0=0 THEN               
        TOGGLE LED0                'обърни изхода на LED
        WHILE TUS0=0               ' и проверявай сустоянието на TUS докато не стане равно на нула
        WEND                            ' когато стане нула мини тук и излез от цикъла
     ENDIF
   
   
     IF TUS1=0 THEN                 'при всяко нматискане/задържане на TUS1,
        TOGGLE LED1                 ' обръщай изхода на LED1
     ENDIF
     
     
PAUSE 100
GOTO START

END   



Написах програмката на MicroCode Studio и я компилирам на PicBasicPro и асемблер на MPLAB, но ми излизат следните грешки...

Изображение
Моля хвърлете един поглед и си кажете мнението.
Дали проблема ми е регистрирането на 16F676 при C компилатори мернах че има "include xxFxxx.bas" където се задава номера на чипа. А тука само пускам командата DEVICE и толкоз.?
Погледнах в PBP папката и имам 16F676.inc и 16F676.bas файл.
Дали съм пропуснал нещо да напиша?


Вто Окт 24, 2006 11:37 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
Не ползвам BASIC-о подобни езици за пик, но грешката е лесно преводима и като цяло честно срещана при бързо писане.

DEVICE като дума не може да е на второ място - грубо казано :-)

Виж си синтаксиса в хелп-а на компилтора.

аааа

moment

DEVICE - той го мисли за label - явно ти липстава хедър или бъркаш ключовата дума

Казва "НЕ може label след 1-ва колона :-) " И е прав :-D не може label да е там :-)

УСПЕХ!

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Сря Окт 25, 2006 12:20 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение 
Found label after column 1 - нещо с DEVICE не си го направил както трябва.
А illegal character, най вероятно иска и 16F676.bas

_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Окт 25, 2006 12:22 am
Профил WWW
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение решение!
Намерих решение на двата си проблема

"Found label after column..."

премахвам следните редове за регистриране на устройството
Код:

@ DEVICE pic16F676
@ DEVICE pic16F676, WDT_ON
@ DEVICE pic16F676, PWRT_ON
@ DEVICE pic16F676, PROTECT_OFF
@ DEVICE pic16F676, MCLR_ON
@ DEVICE pic16F676, INTRC_OSC_NOCLKOUT


и вториият

Код:
Source file path exceeds 62 characters....   


Необходимо е било пътя до *.bas файла да е по къс от 62 символа. Просто преместих файла някъде по наблизко. например D:/PIC/xxx и стана.


Мерси все пак :) Сега да се върна на качването на Кода на пика :D


Сря Окт 25, 2006 1:34 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение 
8O Човече то винаги е лесено да изтриеш редовете с грешка, но това не означава , че си премахнал грешката - особено в случея. :-)

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Сря Окт 25, 2006 1:40 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Re: решение!
techboy написа:
Намерих решение на двата си проблема

"Found label after column..."

премахвам следните редове за регистриране на устройството
Код:

@ DEVICE pic16F676
@ DEVICE pic16F676, WDT_ON
@ DEVICE pic16F676, PWRT_ON
@ DEVICE pic16F676, PROTECT_OFF
@ DEVICE pic16F676, MCLR_ON
@ DEVICE pic16F676, INTRC_OSC_NOCLKOUT


и вториият

Код:
Source file path exceeds 62 characters....   


Необходимо е било пътя до *.bas файла да е по къс от 62 символа. Просто преместих файла някъде по наблизко. например D:/PIC/xxx и стана.


Мерси все пак :) Сега да се върна на качването на Кода на пика :D

Защо не работиш направо с MPLAB на асемблер, там няма да имаш такива грешки , не забравяй че 676 има на последните 4ри байта записан код на честотата му, и в началото на програмата трябва да имаш процедура за изчитане :)
Нещо такова :
list p=16F676
#include "p16F676.inc"
__config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _CPD_OFF

;==========================================================
org 0x000
GOTO Main

DATA 0x00
DATA 0x00

org 0x004
GOTO Prekysvane

Tmp equ 0x26
Tmp1 equ 0x27
Status1 equ 0x22
;----------------------------------------------------
Main


CLRWDT
clrf PORTA
clrf PORTC
CLRF INTCON
MOVLW B'00000111'
MOVWF CMCON
BSF STATUS,RP0
CALL 0x3FF
MOVWF OSCCAL

MOVLW B'10000100'
MOVWF OPTION_REG ;w -- > option reg
CLRF ANSEL
MOVLW B'00100111'
MOVWF TRISA
CLRF TRISC
BCF STATUS,RP0
..............................
..............................


Сря Окт 25, 2006 9:22 am
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение 
plameniv да ама немога да резбера това MPLAB и тези адреси ли какво са DATA 0x00, много необятно ми изглежда. В университета сме писали на PASCAL и затуй се хванах с Microcode studio (Като програма на която пиша) и PIC BASIC PRO(на която компилирам) и асемблирането го прави MPLAB. Тя MicroCode STudio ги свързва тези програмки и ми вади .HEx файла като резултат.

Горната програмка не тръгна на пикчето, написах мн. по-лесна да видя какво ще стане.

Код:
TRISA=%000111 'èìàìå 5 I/O íà ïîðòîâåòå À ñ âõîäîâå RA0,RA1, RA2
TRISC=%000000 'Âñè÷êè ñà èçõîäè íà portC

   
ADCON1=7  'çàáðàíÿâà ïîëçâàíåòî íà ÀÖÏ â ÷èïà

PORTC=0


    PORTC.0=1
    PORTC.1=0
    PORTC.2=1
    PORTC.3=0
    PORTC.4=1
   
end

Като резултат тя "почти" тръгна да кажем. Имаше за цел да подава 1 на изходите на които имам светодиоди. И през един 3 светодиода да светят. Като цяло светят но слабо и като докосна MCLR пина с пръст светят силно както им е реда.
Вероятно наистина зациклих с туй дефиниране на DEVICE.

Интересното е че на софтуера за програмиране на микроконтролера имам следните опции
Изображение
и се чудих дали оттука не се определя дали да имам MCLR, FOSC и пр.


Сря Окт 25, 2006 11:52 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Hm
techboy написа:
plameniv да ама немога да резбера това MPLAB и тези адреси ли какво са DATA 0x00, много необятно ми изглежда. В университета сме писали на PASCAL и затуй се хванах с Microcode studio (Като програма на която пиша) и PIC BASIC PRO(на която компилирам) и асемблирането го прави MPLAB. Тя MicroCode STudio ги свързва тези програмки и ми вади .HEx файла като резултат.

Горната програмка не тръгна на пикчето, написах мн. по-лесна да видя какво ще стане.

Код:
TRISA=%000111 'èìàìå 5 I/O íà ïîðòîâåòå À ñ âõîäîâå RA0,RA1, RA2
TRISC=%000000 'Âñè÷êè ñà èçõîäè íà portC

   
ADCON1=7  'çàáðàíÿâà ïîëçâàíåòî íà ÀÖÏ â ÷èïà

PORTC=0


    PORTC.0=1
    PORTC.1=0
    PORTC.2=1
    PORTC.3=0
    PORTC.4=1
   
end

Като резултат тя "почти" тръгна да кажем. Имаше за цел да подава 1 на изходите на които имам светодиоди. И през един 3 светодиода да светят. Като цяло светят но слабо и като докосна MCLR пина с пръст светят силно както им е реда.
Вероятно наистина зациклих с туй дефиниране на DEVICE.

Интересното е че на софтуера за програмиране на микроконтролера имам следните опции
Изображение
и се чудих дали оттука не се определя дали да имам MCLR, FOSC и пр.

Кое не можеш да разбереш, че то толкова лесно и удобно е направено че няма на къде , само малко от ASM трябва да отбираш :?
Няма да ти тръгне защото не си заложил това което ти казах , а това което аз ти пуснах се слага в началото на програмата за инициализация на регистри честота и чак след това си слагаш това което искаш да прави , и за да го прави циклично се прави един затворен цикъл :)
Нещо такова
;Начало
;.....
;.....
Loop
;.....
GOTO Loop


Сря Окт 25, 2006 12:08 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение 
ами май при BAsic Pro e нещо такова:
Код:
@DEVICE PIC16F676
@DEVICE PIC16F676, WDT_ON
@DEVICE PIC16F676, PWRT_ON
@DEVICE PIC16F676, PROTECT_OFF
@DEVICE PIC16F676, MCLR_ON
@DEVICE PIC16F676, INTRC_OSC_NOCLKOUT


Но ми вади грешки когато го пусна с тия редове

Ilegal opcode (pic16F676)
и на 6te реда с тези инициализации


Сря Окт 25, 2006 12:57 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Hm
techboy написа:
ами май при BAsic Pro e нещо такова:
Код:
@DEVICE PIC16F676
@DEVICE PIC16F676, WDT_ON
@DEVICE PIC16F676, PWRT_ON
@DEVICE PIC16F676, PROTECT_OFF
@DEVICE PIC16F676, MCLR_ON
@DEVICE PIC16F676, INTRC_OSC_NOCLKOUT


Но ми вади грешки когато го пусна с тия редове

Ilegal opcode (pic16F676)
и на 6te реда с тези инициализации

Дава ти грешка защото най вероятно не е така начина да си заредиш конфугарацията на контролера.
Аз мога да ти дам съвет само ако го правиш на асемблер , който работи с BAsic Pro той да каже :oops:
Има си google за тази цел потърси например това pic16f676 pas и все някъде ще изскочи някой готов код и само си го преправи :)
Но ако сега започваш да се занимаваш с тия неща много по лесно ще ти е да си купиш книгата на младконструктор , микроконтролери 1 част, там има доста добри обяснения нищо че повечето са за 16F84 само си сменяш настройките в MPLAB за този процесор и готово.
Пропуснах да ти кажа че преди да правиш запис във флаша на този контролер , прочети последните 4 байта и си ги запиши на лист, преди всеки запис ги въвеждай най отдолу и тогава , иначе ще изтриеш това което е дал пройзводителя за честотата и ще трябва да го правиш с външен кварц :)


Сря Окт 25, 2006 2:10 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение 
Намерих Проблема!
При PicBasic Pro се дефинира така:
@ DEVICE PIC16F676, WDT_ON, PWRT_ON, PROTECT_OFF, MCLR_ON, INTRC_OSC_NOCLKOUT като за асемблер си използвам пак Pic basic Pro.
Половината ми светодиоди светнаха, но останалите които си споделят пиновете с A/D входовете ми светят слабо.

Това ли е инструкцията за спиране на А/Д входовете? ADCON1=7 при PicBasic Pro? :?


Сря Окт 25, 2006 4:14 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Hehe
techboy написа:
Намерих Проблема!
При PicBasic Pro се дефинира така:
@ DEVICE PIC16F676, WDT_ON, PWRT_ON, PROTECT_OFF, MCLR_ON, INTRC_OSC_NOCLKOUT като за асемблер си използвам пак Pic basic Pro.
Половината ми светодиоди светнаха, но останалите които си споделят пиновете с A/D входовете ми светят слабо.

Това ли е инструкцията за спиране на А/Д входовете? ADCON1=7 при PicBasic Pro? :?

Ми лека полека ще си изчистиш грешките , виж моя пример по нагоре , в него има една инструкция CLRF Ansel :)


Сря Окт 25, 2006 4:40 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение 
Яд ме е че няма литература като хората за PICBasic Pro и се мъча да издърпвам оттук оттам дефиници и команди, и писането им.


Сря Окт 25, 2006 5:12 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Mda
techboy написа:
Яд ме е че няма литература като хората за PICBasic Pro и се мъча да издърпвам оттук оттам дефиници и команди, и писането им.

Абе я мини на асемблер и всичко ще си дойде на място :D :lol:
Инсталираш си MPLAB и почваш в него да си бачкаш като хората има си всичко от А до Я за да си тестваш програмата трасираш за грешки и т.н. преди да флашнеш пикльото :D


Прикачени файлове:
test.JPG
test.JPG [ 127.52 KiB | Прегледано 1951 пъти ]
Сря Окт 25, 2006 6:45 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Пон Авг 14, 2006 1:53 am
Мнения: 19
Мнение 
:evil: Хареса ми да пиша на PBP

Това MPLAB ми е много необятно....

Ще се мъча така и накрая ако пак нестане.
Или ще изкормя всеки крак на 16F676 като се смея на глас :axe: и се наслаждавам или ще мина на MPLAB :toimonster: и ще гледам как ме погълва животното


Сря Окт 25, 2006 7:25 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 15 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни