|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 10:09 pm
|
Страница 1 от 1
|
[ 15 мнения ] |
|
Грешки при компилиране на програмка за 16F676
| Автор |
Съобщение |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 14, 2006 1:53 am Мнения: 19
|
 Грешки при компилиране на програмка за 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 файл.
Дали съм пропуснал нещо да напиша?
|
| Вто Окт 24, 2006 11:37 pm |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
Не ползвам BASIC-о подобни езици за пик, но грешката е лесно преводима и като цяло честно срещана при бързо писане.
DEVICE като дума не може да е на второ място - грубо казано
Виж си синтаксиса в хелп-а на компилтора.
аааа
moment
DEVICE - той го мисли за label - явно ти липстава хедър или бъркаш ключовата дума
Казва "НЕ може label след 1-ва колона  " И е прав  не може label да е там
УСПЕХ!
|
| Сря Окт 25, 2006 12:20 am |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Found label after column 1 - нещо с DEVICE не си го направил както трябва.
А illegal character, най вероятно иска и 16F676.bas
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Окт 25, 2006 12:22 am |
|
 |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 14, 2006 1:53 am Мнения: 19
|
 решение!
Намерих решение на двата си проблема
"Found label after column..."
премахвам следните редове за регистриране на устройството
и вториият
Необходимо е било пътя до *.bas файла да е по къс от 62 символа. Просто преместих файла някъде по наблизко. например D:/PIC/xxx и стана.
Мерси все пак  Сега да се върна на качването на Кода на пика 
|
| Сря Окт 25, 2006 1:34 am |
|
 |
|
the_real_maniac
Ранг: Почетен член
Регистриран на: Пет Авг 19, 2005 11:38 am Мнения: 978 Местоположение: Europe -> BG
|
 Човече то винаги е лесено да изтриеш редовете с грешка, но това не означава , че си премахнал грешката - особено в случея. 
|
| Сря Окт 25, 2006 1:40 am |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Re: решение!
 |  |  |  | techboy написа: Намерих решение на двата си проблема "Found label after column..." премахвам следните редове за регистриране на устройството и вториият Необходимо е било пътя до *.bas файла да е по къс от 62 символа. Просто преместих файла някъде по наблизко. например D:/PIC/xxx и стана. Мерси все пак  Сега да се върна на качването на Кода на пика  |  |  |  |  |
Защо не работиш направо с 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 |
|
 |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 14, 2006 1:53 am Мнения: 19
|
plameniv да ама немога да резбера това MPLAB и тези адреси ли какво са DATA 0x00, много необятно ми изглежда. В университета сме писали на PASCAL и затуй се хванах с Microcode studio (Като програма на която пиша) и PIC BASIC PRO(на която компилирам) и асемблирането го прави MPLAB. Тя MicroCode STudio ги свързва тези програмки и ми вади .HEx файла като резултат.
Горната програмка не тръгна на пикчето, написах мн. по-лесна да видя какво ще стане.
Като резултат тя "почти" тръгна да кажем. Имаше за цел да подава 1 на изходите на които имам светодиоди. И през един 3 светодиода да светят. Като цяло светят но слабо и като докосна MCLR пина с пръст светят силно както им е реда.
Вероятно наистина зациклих с туй дефиниране на DEVICE.
Интересното е че на софтуера за програмиране на микроконтролера имам следните опции
и се чудих дали оттука не се определя дали да имам MCLR, FOSC и пр.
|
| Сря Окт 25, 2006 11:52 am |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Hm
 |  |  |  | techboy написа: plameniv да ама немога да резбера това MPLAB и тези адреси ли какво са DATA 0x00, много необятно ми изглежда. В университета сме писали на PASCAL и затуй се хванах с Microcode studio (Като програма на която пиша) и PIC BASIC PRO(на която компилирам) и асемблирането го прави MPLAB. Тя MicroCode STudio ги свързва тези програмки и ми вади .HEx файла като резултат. Горната програмка не тръгна на пикчето, написах мн. по-лесна да видя какво ще стане. Като резултат тя "почти" тръгна да кажем. Имаше за цел да подава 1 на изходите на които имам светодиоди. И през един 3 светодиода да светят. Като цяло светят но слабо и като докосна MCLR пина с пръст светят силно както им е реда. Вероятно наистина зациклих с туй дефиниране на DEVICE. Интересното е че на софтуера за програмиране на микроконтролера имам следните опции  и се чудих дали оттука не се определя дали да имам MCLR, FOSC и пр. |  |  |  |  |
Кое не можеш да разбереш, че то толкова лесно и удобно е направено че няма на къде , само малко от ASM трябва да отбираш
Няма да ти тръгне защото не си заложил това което ти казах , а това което аз ти пуснах се слага в началото на програмата за инициализация на регистри честота и чак след това си слагаш това което искаш да прави , и за да го прави циклично се прави един затворен цикъл
Нещо такова
;Начало
;.....
;.....
Loop
;.....
GOTO Loop
|
| Сря Окт 25, 2006 12:08 pm |
|
 |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 14, 2006 1:53 am Мнения: 19
|
ами май при BAsic Pro e нещо такова:
Но ми вади грешки когато го пусна с тия редове
Ilegal opcode (pic16F676) и на 6te реда с тези инициализации
|
| Сря Окт 25, 2006 12:57 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Hm
Дава ти грешка защото най вероятно не е така начина да си заредиш конфугарацията на контролера.
Аз мога да ти дам съвет само ако го правиш на асемблер , който работи с BAsic Pro той да каже
Има си google за тази цел потърси например това pic16f676 pas и все някъде ще изскочи някой готов код и само си го преправи
Но ако сега започваш да се занимаваш с тия неща много по лесно ще ти е да си купиш книгата на младконструктор , микроконтролери 1 част, там има доста добри обяснения нищо че повечето са за 16F84 само си сменяш настройките в MPLAB за този процесор и готово.
Пропуснах да ти кажа че преди да правиш запис във флаша на този контролер , прочети последните 4 байта и си ги запиши на лист, преди всеки запис ги въвеждай най отдолу и тогава , иначе ще изтриеш това което е дал пройзводителя за честотата и ще трябва да го правиш с външен кварц 
|
| Сря Окт 25, 2006 2:10 pm |
|
 |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 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 |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 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 |
|
 |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 14, 2006 1:53 am Мнения: 19
|
Яд ме е че няма литература като хората за PICBasic Pro и се мъча да издърпвам оттук оттам дефиници и команди, и писането им.
|
| Сря Окт 25, 2006 5:12 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Mda
Абе я мини на асемблер и всичко ще си дойде на място
Инсталираш си MPLAB и почваш в него да си бачкаш като хората има си всичко от А до Я за да си тестваш програмата трасираш за грешки и т.н. преди да флашнеш пикльото 
|
| Сря Окт 25, 2006 6:45 pm |
|
 |
|
techboy
Ранг: Минаващ
Регистриран на: Пон Авг 14, 2006 1:53 am Мнения: 19
|
 Хареса ми да пиша на PBP
Това MPLAB ми е много необятно....
Ще се мъча така и накрая ако пак нестане.
Или ще изкормя всеки крак на 16F676 като се смея на глас  и се наслаждавам или ще мина на MPLAB  и ще гледам как ме погълва животното
|
| Сря Окт 25, 2006 7:25 pm |
|
|
|
Страница 1 от 1
|
[ 15 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|