Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Обясните пожалуста почему не получается прога
Отправлено
Frensis 24 сентября 2008 г. 19:22
почему вот с такой прогой не получается вывести нормальную последовательность abcdefghijlmnop на lcd
tuda:
ldi r25,0b10000000 ;после этой команды данные записываются в DDRAM
add r25,r22
rcall icom_2313 ;начиная с адреса 0
rcall del
ldi r24,16
ldi r30,low(text0*2)
ldi r31,high(text0*2)
ldi r22,0
ldi r23,0
;установить счетчик программируемых ячеек DDRAM
ddram:
lpm ;извлечь из flash-памяти байт данных
mov r25,r0
rcall idat_2313 ;записать его в DDRAM
rcall del
add r30,r22
adc r31,r23
;ld r1,z+ ;С этой сточкой все выводится
inc r22 ;увеличить на 1 указатель Z адреса flash-памяти
dec r24
;если еще не все ячейки запрограммированы
brne ddram
ldi r24,0 ;вернуться назад
rjmp tuda
ret
;
;Задержка вывода для удобства восприятия человеком
ddelay:
ldi r19,100 ;
dd: rcall delay
dec r19
brne dd
ret
;
;Во flash - памяти после программы размещаем постоянные данные
rus_buf: .DB $0e,$11,$01,$0f,$01,$11,$0e,$00 ;Начертание для буквы Э (код-0)
.DB $04,$0e,$15,$15,$0e,$04,$04,$00 ;Начертание для буквы Ф (код-1)
text0: .DB "a","b","c","d","e","f","g","h","j","i","k","l","m","n","o","p" ;Пустая строка
.DB "q","r","s","t","u","v","w","x","y","z","k","l","m","n","o","p"
text1: .DB "v","d",48,49,67,47,47,47,47,47,47,47,57,58,61,62 ;I love my AVR
.DB "v","d",48,49,47,47,47,47,47,47,47,47,57,58,71,72
text2: .DB "v","d",48,49,77,47,47,47,47,47,47,47,57,58,81,82 ;I love my LCD
.DB "v","d",48,49,97,47,47,47,47,47,47,47,57,58,91,92
почему со строчкой ld r1,z+ все работает, а когда я хочу сам прибавлять к адресу ZL выводитья abdgkpvmC:/0Q/ga, я же увеличиваю каждый раз на 1 , подскажите в чем проблема.
Составить ответ | Вернуться на конференцию
Ответы
- Патамушта по z+ корректно инкрементируется весь 16-битный Z (zh:zl), а по inc zl - только zl, и когда от переходит из FF в 00, то zh остается неизменным, из-за чего указатель попадает в пургу, которую ты и видишь - надо использовать adiw zl,1. И строки, между прочим пишут не так по-дурацки, как у тебя, а так - text3: .db "My fucking text" - MBedder (24.09.2008 20:42:25 80.92.96.19, пустое)
- Гы :-) Команда add r30,r22 при каждом новом проходе прибавляет r30. Когда т...{+}(+) - VasilyS (24.09.2008 20:37:41 80.92.96.25, 396 байт)