Пост N: 1397
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг:
4
Награды:
Отправлено: 21.06.09 17:09. Заголовок: егорка пишет: То же..
егорка пишет:
цитата:
То же самое ещё вчера работало .
еще скажи что ничего не трогал , наверняка таблицу сместил (не забывай про "волшебные" 256 байт). И последний RETURN можно убрать, RETLW - это и есть return с сохранением в W заданной тобой константы. Или перед обращением к таблице в W записываешь число больше допустимого, в данном случае 13h или, если уберешь ненужный RETURN, 12h.
Пост N: 1125
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг:
4
Отправлено: 21.06.09 18:28. Заголовок: Вероятнее всего, В..
Вероятнее всего, Вы вызываете ПП TABLE из блока PC, номер которого отличен от номера того блока PC, в котором "дислоцируется" ПП TABLE. В этом случае, нужно либо корректировать содержимое регистра PCLATH, либо переместить ту группу команд, из которой осуществляется вызов ПП TABLE, в тот блок PC, в котором "дислоцируется" ПП TABLE ("перекрой" текста программы). Более подробно - "Практикум..." часть 2, подразделы 1/3 и 1/5.
Пост N: 1126
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг:
4
Отправлено: 21.06.09 19:47. Заголовок: Можно и так, но ..
Можно и так, но лучше работать с PCLATH, так как чем больше "масса" программы, тем больше проблем с перемещением. А при работе с PCLATH, проблем гораздо меньше. Главная проблема - разобраться в "механизме" коррекции его содержимого. После этого, "всё мягко и пушисто".
movlw high TEXT_1 ; записать старший байт счетчика команд метки TEXT_1 в w movwf PCLATH ; записать W в PCLATH (выбрали страницу памяти где наход. метка TEXT_1) call TEXT_1 ; Переход в ПП TEXT_1.выводим данные - - - TEXT_1 movlw high ctpa_1 ; записать старший байт счетчика команд метки ctpa_1 в w movwf PCLATH ; проверка на принадлежность смещения РС к текущей страницы памяти (кратно 256 ) movf reg,w ; переслать в w (насколько перейдем) addlw low ctpa_1 ; cложить w и младший байт PC метки ctpa_1 btfsc STATUS,C ; проверить бит С (переполнение) incf PCLATH,f ; было, +1 к PCLATH movf reg,w ; не было,просто выч. переход. addwf PCL,F ; Приращение PCL на величину содержимого W. ctpa_1 dt 0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 dt 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 dt 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01 dt 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
Все даты в формате GMT
3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет