- Crossposted в OUT.LOG
Мир Вашему дому, All!
Требуется работать с таблицой в 256 байт, но адресация работает только в пределах 128. Разбил таблицу на две части. Hиже фрагмент обслуживающего кода. А теперь проблема: при обращении ко второй половине таблицы программа вылезает черт знает куда и зацикливается. Если половинки таблицы переименовать, сохранив их взаимное расположение, зацикливание происходит при обращении все равно к старшей (по адресу в STEPCOUNT) половине таблицы. Если в обоих случаях обращение идет к одной (любой) половине - проблем нет. Пробовал два варианта маскирования старшего бита (один закомментарен). Подскажите, кто виноват и что делать?
================================== movf STEPCOUNT,W ; Pass table offset via W
btfss STEPCOUNT,7 ; test half-table goto GetTable0 ; Get table 0 value ;else goto GetTable1 ; Get table 1 value
GetTable1 ; getting value from table 1 andlw b'01111111' ; bcf W,7 ; clear hi bit call Table1 ; call Table0 retfie ; return from interrupt
; GetTable0 ; getting value from table 0 call Table0 ; call Table1 retfie ; return from interrupt
Table0 addwf PCL,F retlw b'00010000' ;0 retlw b'00000110' ;1 retlw b'00100110' ;2
==================================
Удачи! Sergej Pipets
... Диоген зажигает свой красный фонарь