АвторСообщение
постоянный участник


Пост N: 225
Зарегистрирован: 03.06.07
Откуда: РОССИЯ, Оренбург
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.06.09 16:46. Заголовок: Почему не работает ТАБЛИЧНЫЙ ВЫЧИСЛЯЕМЫЙ ПЕРЕХОД


Среда MPLAB IDE 5.70.40 процессор pic16f628
Ничего не могу понять после считывания некой константы CALL TABLE
 
TABLE
ADDWF PCL,F ;
RETLW B'00110000' ; 00H -> 30H -> "0"
RETLW B'00110001' ; 01H -> 31H -> "1"
RETLW B'00110010' ; 02H -> 32H -> "2"
RETLW B'00110011' ; 03H -> 33H -> "3"
RETLW B'00110100' ; 04H -> 34H -> "4"
RETLW B'00110101' ; 05H -> 35H -> "5"
RETLW B'00110110' ; 06H -> 36H -> "6"
RETLW B'00110111' ; 07H -> 37H -> "7"
RETLW B'00111000' ; 08H -> 38H -> "8"
RETLW B'00111001' ; 09H -> 39H -> "9"
RETLW B'01000001' ; 0AH -> 41H -> "A"
RETLW B'01000010' ; 0BH -> 42H -> "B"
RETLW B'01000011' ; 0CH -> 43H -> "C"
RETLW B'01000100' ; 0DH -> 44H -> "D"
RETLW B'01000101' ; 0EH -> 45H -> "E"
RETLW B'01000110' ; 0FH -> 46H -> "F"
RETLW B'00100000' ; 10H -> 20H -> "ПУСТО"
RETLW B'00111010' ; 11H -> 3AH -> :
RETLW B'00101010' ; 12H -> 2AH -> *
RETURN ;

После сложения W и PCL скачет хрен знает куда !!! Ничего не пойму !
То же самое ещё вчера работало .

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 8 [только новые]


постоянный участник




Пост N: 1397
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 4

Награды: Отлично!',
ссылка на сообщение  Отправлено: 21.06.09 17:09. Заголовок: егорка пишет: То же..


егорка пишет:

 цитата:
То же самое ещё вчера работало .


еще скажи что ничего не трогал , наверняка таблицу сместил (не забывай про "волшебные" 256 байт). И последний RETURN можно убрать, RETLW - это и есть return с сохранением в W заданной тобой константы.
Или перед обращением к таблице в W записываешь число больше допустимого, в данном случае 13h или, если уберешь ненужный RETURN, 12h.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 226
Зарегистрирован: 03.06.07
Откуда: РОССИЯ, Оренбург
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.06.09 17:56. Заголовок: таблица находится по..


таблица находится после ORG 0
GOTO START

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1125
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 4
ссылка на сообщение  Отправлено: 21.06.09 18:28. Заголовок: Вероятнее всего, В..


Вероятнее всего, Вы вызываете ПП TABLE из блока PC, номер которого отличен от номера того блока PC, в котором "дислоцируется" ПП TABLE.
В этом случае, нужно либо корректировать содержимое регистра PCLATH, либо переместить ту группу команд, из которой осуществляется вызов ПП TABLE, в тот блок PC, в котором "дислоцируется" ПП TABLE ("перекрой" текста программы).
Более подробно - "Практикум..." часть 2, подразделы 1/3 и 1/5.


Безумству храбрых поем мы песню (А.М.Горький) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 227
Зарегистрирован: 03.06.07
Откуда: РОССИЯ, Оренбург
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.06.09 19:34. Заголовок: Блин а ведь точно п..


Блин а ведь точно программа большая .
Я от таких багов избавлялся перемещением .

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1126
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 4
ссылка на сообщение  Отправлено: 21.06.09 19:47. Заголовок: Можно и так, но ..


Можно и так, но лучше работать с PCLATH, так как чем больше "масса" программы, тем больше проблем с перемещением.
А при работе с PCLATH, проблем гораздо меньше. Главная проблема - разобраться в "механизме" коррекции его содержимого.
После этого, "всё мягко и пушисто".

Безумству храбрых поем мы песню (А.М.Горький) Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 228
Зарегистрирован: 03.06.07
Откуда: РОССИЯ, Оренбург
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.06.09 08:30. Заголовок: Всё решено ! Огромно..


Всё решено ! Огромное спасибо .

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 2
Зарегистрирован: 12.01.11
Откуда: Новосибирск
Рейтинг: 0
ссылка на сообщение  Отправлено: 14.01.11 08:46. Заголовок: mdix


подскажите что делать, мой самоучитель в пути... Перенести TABLE в другую часть программы?

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 2984
Зарегистрирован: 03.01.07
Рейтинг: 5
ссылка на сообщение  Отправлено: 14.01.11 09:04. Заголовок: m..


      
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


будут вопросы, спрашивайте

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия