Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблем с PIC16F876A
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3265
Страница 1 от 1

Автор:  default_pz [ Сря Ное 15, 2006 9:08 pm ]
Заглавие:  Проблем с PIC16F876A

Здравейте,

хич не ми се ще да занимавам който и да било с проблемите си, но този път здраво я закъсах. Иде реч за следното: Имам си MPLAB и PIC16F876A. Ето с какво се сблъсках след много часове лутане - на променливата Hour предварително е присвоена стойността B'00001000', да кажем. След

movf Hour,w
andlw B'00001111'

стойността на работния регистър не е B'00001000', а някаква доста по-голяма (не си направих труда да разбера точно каква е, изкарах я направо на LCD, вижда се само, че е различен символ, след като забраня andlw) и като се вземе предвид, че следващата инструкция е за изпращане в таблица, сещате се каква каша става. А целта ми е просто да нулирам старшата тетрада. По-нататък в програмата използвам същия алгоритъм няколко пъти и няма проблем. Да не говорим, че като преместя подпрограмата някъде другаде, започва да работи, но след известно време допълване на кода на програмата пак нещо се чупи някъде. В момента точно това работи, но не мога да си подкарам пък I2C шината. Кой знае дали имам грешка, или това е поредният подобен номер... Проверих банките, проверих регистрите, сменях PIC-а, версията на MPLAB-а, компютъра (няколко пъти и с различни виновси) - нищо. Кво става, за кво иде реч, съсипах се... неам нерви вече. Идеи някакви?...

Автор:  plameniv [ Сря Ное 15, 2006 10:28 pm ]
Заглавие:  Re: Проблем с PIC16F876A

default_pz написа:
Здравейте,

хич не ми се ще да занимавам който и да било с проблемите си, но този път здраво я закъсах. Иде реч за следното: Имам си MPLAB и PIC16F876A. Ето с какво се сблъсках след много часове лутане - на променливата Hour предварително е присвоена стойността B'00001000', да кажем. След

movf Hour,w
andlw B'00001111'

стойността на работния регистър не е B'00001000', а някаква доста по-голяма (не си направих труда да разбера точно каква е, изкарах я направо на LCD, вижда се само, че е различен символ, след като забраня andlw) и като се вземе предвид, че следващата инструкция е за изпращане в таблица, сещате се каква каша става. А целта ми е просто да нулирам старшата тетрада. По-нататък в програмата използвам същия алгоритъм няколко пъти и няма проблем. Да не говорим, че като преместя подпрограмата някъде другаде, започва да работи, но след известно време допълване на кода на програмата пак нещо се чупи някъде. В момента точно това работи, но не мога да си подкарам пък I2C шината. Кой знае дали имам грешка, или това е поредният подобен номер... Проверих банките, проверих регистрите, сменях PIC-а, версията на MPLAB-а, компютъра (няколко пъти и с различни виновси) - нищо. Кво става, за кво иде реч, съсипах се... неам нерви вече. Идеи някакви?...

Дай малко повече инфо , нещо бъркаш но с 1 ред от програмата ти трудно ще се разбере къде !!!

Автор:  default_pz [ Чет Ное 16, 2006 1:41 am ]
Заглавие: 

Проблемът е отстранен. Реших че има нещо нередно в инициализацията на процесора. Копирах я в текстов файл, изтрих я от MPLAB-а и я преписах на ръка. Дословно. Но на ръка. Вече работи. Странно, няма грешка в старата инициализация, но не работи. И грешка не дава...

Автор:  Dimitar [ Чет Ное 16, 2006 2:43 am ]
Заглавие: 

Ъпдейтни си MPLAB-а. Понякога като правиш copy/paste на кода от другаде така става. Те хората що го отричат тоя метод на работа - щото е много спорно дали ще спестиш време с него 8) .

Автор:  default_pz [ Чет Ное 16, 2006 10:00 am ]
Заглавие: 

Мдам... доста време загубих. Определено, няма да правя повече така :oops: . Въпреки, че всяко copy/paste е на код, който сам съм го писал, на MPLAB. Благодаря за отговорите. Особено по това време на денонощието :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/