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

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

Автор:  nikiforiv [ Нед Фев 14, 2010 9:56 pm ]
Заглавие:  Проблем с PIC18F452

Микроконтролера е PIC18F452
Някой знае ли защо това нещо работи само в 0вата страница на програмната памет?
При симулация чрез MPLAB SIM няма проблеми, но в действителност контролера увисва ако дадения код не е в 0вата страница.
movf PCL, W
movf Temp, W
rlncf WREG
rlncf WREG
addwf PCL, f
goto Razklonenie_0 ;0
goto Razklonenie_1 ;1
.
.
.
goto Razklonenie_X ;X
Започвам да мисля че самия чип е нещо бъгав

Автор:  optron [ Пон Мар 22, 2010 2:46 pm ]
Заглавие: 

Ако правилно разчитам кода ти, ти искаш да умножиш променливата ТЕМП по 4, след което я изпозвваш за изчислено ГОТО. Виждам следните недостатъци:
Първата инструкция ми се вижда безсмислена, защото стойността от Темп ще ти измести стойността от програмния брояч и на практика ти не работиш с него. Допускам, че имаш печатна грешка там, погледни си.
Щом умножиш променливата по 4 и я прибавиш към програмния брояч, това означава, че ще се избира всяко четвърто разклонение от таблицата ти. Това донякъде ми изглежда нелогично, тъй като останалите три позиции се прескачат и са неизползваеми, което от своя страна е прахосничество на програмна памет. Конкретно за таблиците има отделна статия в сайта на Микрочип.
Не знам дали може да се прави рлнсф върху работния регистър. Пльосни стойността му в някой регистър, завърти я и я зареди обратно.
А по въпроса ти:
Първо трябва да настроиш правилно старшия байт на програмния брояч и тогава можеш да правиш изчислени ГОТО-та. Прочети за директивите pagesel и pageselw.

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