| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Грешки при компилиране на програмка за 16F676 http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3136 |
Страница 1 от 1 |
| Автор: | techboy [ Вто Окт 24, 2006 11:37 pm ] | |||||||||
| Заглавие: | Грешки при компилиране на програмка за 16F676 | |||||||||
Здравейте, първата ми програмка за микроконтролери се овенча с неуспех. Взех си pic 16F676 да се пробвам с него и написах една лесничка програмка с няколкото инструкции които намерих оттук оттам. Целта е да натисна 2 бутона на входовете PORTA.0 и PORTA.1 като при единият да се промени състоянието на светодиода, а при другият да се реверсира пак светодиода, но при продължително натискане да светва и изгасва светодиода. Изходите ми съответно са: PORTC0 и PORTC1 Ето го и сорса
Написах програмката на MicroCode Studio и я компилирам на PicBasicPro и асемблер на MPLAB, но ми излизат следните грешки...
Моля хвърлете един поглед и си кажете мнението. Дали проблема ми е регистрирането на 16F676 при C компилатори мернах че има "include xxFxxx.bas" където се задава номера на чипа. А тука само пускам командата DEVICE и толкоз.? Погледнах в PBP папката и имам 16F676.inc и 16F676.bas файл. Дали съм пропуснал нещо да напиша? |
||||||||||
| Автор: | the_real_maniac [ Сря Окт 25, 2006 12:20 am ] |
| Заглавие: | |
Не ползвам BASIC-о подобни езици за пик, но грешката е лесно преводима и като цяло честно срещана при бързо писане. DEVICE като дума не може да е на второ място - грубо казано Виж си синтаксиса в хелп-а на компилтора. аааа moment DEVICE - той го мисли за label - явно ти липстава хедър или бъркаш ключовата дума Казва "НЕ може label след 1-ва колона УСПЕХ! |
|
| Автор: | ¶ [ Сря Окт 25, 2006 12:22 am ] |
| Заглавие: | |
Found label after column 1 - нещо с DEVICE не си го направил както трябва. А illegal character, най вероятно иска и 16F676.bas |
|
| Автор: | techboy [ Сря Окт 25, 2006 1:34 am ] | ||||||||||||||||||
| Заглавие: | решение! | ||||||||||||||||||
Намерих решение на двата си проблема "Found label after column..." премахвам следните редове за регистриране на устройството
и вториият
Необходимо е било пътя до *.bas файла да е по къс от 62 символа. Просто преместих файла някъде по наблизко. например D:/PIC/xxx и стана. Мерси все пак |
|||||||||||||||||||
| Автор: | the_real_maniac [ Сря Окт 25, 2006 1:40 am ] |
| Заглавие: | |
| Автор: | plameniv [ Сря Окт 25, 2006 9:22 am ] | |||||||||||||||||||||||||||
| Заглавие: | Re: решение! | |||||||||||||||||||||||||||
Защо не работиш направо с 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 .............................. .............................. |
||||||||||||||||||||||||||||
| Автор: | techboy [ Сря Окт 25, 2006 11:52 am ] | |||||||||
| Заглавие: | ||||||||||
plameniv да ама немога да резбера това MPLAB и тези адреси ли какво са DATA 0x00, много необятно ми изглежда. В университета сме писали на PASCAL и затуй се хванах с Microcode studio (Като програма на която пиша) и PIC BASIC PRO(на която компилирам) и асемблирането го прави MPLAB. Тя MicroCode STudio ги свързва тези програмки и ми вади .HEx файла като резултат. Горната програмка не тръгна на пикчето, написах мн. по-лесна да видя какво ще стане.
Като резултат тя "почти" тръгна да кажем. Имаше за цел да подава 1 на изходите на които имам светодиоди. И през един 3 светодиода да светят. Като цяло светят но слабо и като докосна MCLR пина с пръст светят силно както им е реда. Вероятно наистина зациклих с туй дефиниране на DEVICE. Интересното е че на софтуера за програмиране на микроконтролера имам следните опции
и се чудих дали оттука не се определя дали да имам MCLR, FOSC и пр. |
||||||||||
| Автор: | plameniv [ Сря Окт 25, 2006 12:08 pm ] | ||||||||||||||||||
| Заглавие: | Hm | ||||||||||||||||||
Кое не можеш да разбереш, че то толкова лесно и удобно е направено че няма на къде , само малко от ASM трябва да отбираш Няма да ти тръгне защото не си заложил това което ти казах , а това което аз ти пуснах се слага в началото на програмата за инициализация на регистри честота и чак след това си слагаш това което искаш да прави , и за да го прави циклично се прави един затворен цикъл Нещо такова ;Начало ;..... ;..... Loop ;..... GOTO Loop |
|||||||||||||||||||
| Автор: | techboy [ Сря Окт 25, 2006 12:57 pm ] | |||||||||
| Заглавие: | ||||||||||
ами май при BAsic Pro e нещо такова:
Но ми вади грешки когато го пусна с тия редове Ilegal opcode (pic16F676) и на 6te реда с тези инициализации |
||||||||||
| Автор: | plameniv [ Сря Окт 25, 2006 2:10 pm ] | ||||||||||||||||||
| Заглавие: | Hm | ||||||||||||||||||
Дава ти грешка защото най вероятно не е така начина да си заредиш конфугарацията на контролера. Аз мога да ти дам съвет само ако го правиш на асемблер , който работи с BAsic Pro той да каже Има си google за тази цел потърси например това pic16f676 pas и все някъде ще изскочи някой готов код и само си го преправи Но ако сега започваш да се занимаваш с тия неща много по лесно ще ти е да си купиш книгата на младконструктор , микроконтролери 1 част, там има доста добри обяснения нищо че повечето са за 16F84 само си сменяш настройките в MPLAB за този процесор и готово. Пропуснах да ти кажа че преди да правиш запис във флаша на този контролер , прочети последните 4 байта и си ги запиши на лист, преди всеки запис ги въвеждай най отдолу и тогава , иначе ще изтриеш това което е дал пройзводителя за честотата и ще трябва да го правиш с външен кварц |
|||||||||||||||||||
| Автор: | techboy [ Сря Окт 25, 2006 4:14 pm ] |
| Заглавие: | |
Намерих Проблема! При PicBasic Pro се дефинира така: @ DEVICE PIC16F676, WDT_ON, PWRT_ON, PROTECT_OFF, MCLR_ON, INTRC_OSC_NOCLKOUT като за асемблер си използвам пак Pic basic Pro. Половината ми светодиоди светнаха, но останалите които си споделят пиновете с A/D входовете ми светят слабо. Това ли е инструкцията за спиране на А/Д входовете? ADCON1=7 при PicBasic Pro? |
|
| Автор: | plameniv [ Сря Окт 25, 2006 4:40 pm ] | |||||||||
| Заглавие: | Hehe | |||||||||
Ми лека полека ще си изчистиш грешките , виж моя пример по нагоре , в него има една инструкция CLRF Ansel |
||||||||||
| Автор: | techboy [ Сря Окт 25, 2006 5:12 pm ] |
| Заглавие: | |
Яд ме е че няма литература като хората за PICBasic Pro и се мъча да издърпвам оттук оттам дефиници и команди, и писането им. |
|
| Автор: | techboy [ Сря Окт 25, 2006 7:25 pm ] |
| Заглавие: | |
Това MPLAB ми е много необятно.... Ще се мъча така и накрая ако пак нестане. Или ще изкормя всеки крак на 16F676 като се смея на глас |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|