[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Програмный счетчик состоит из двух частей: PCH и PCL
PCL - 8-и разрядный. При конструкции:
movfw Pointer
call TablRead
;
;
;
TablRead
addwf PC,f
retlw aa
retlw bb
и т.д.
если Pointer + текущийPCL влазит в h'ff', то всё ОК. Иначе, при переполнении PCL, PCH не изменится, и адрес будет неверным.
Пользуйтесь, при формировании таблиц, такой конструкцией:
ORG h'100' ; или h'200', или ...., где h'n00' начальный адрес таблицы
TablRead
addwf PC,f
retlw aa
и некоторые вопросы снимутся сами собой. (или извращайтесь с проверкой PCL + W)
P.S. подробности в доке на PIC п.п.4.3.1 СOMPUTED GOTO или в AN556
С уважением, Илья.
E-mail: info@telesys.ru