Gudd-Head писал(а):LMP? Может, LPM?
о....., да сори

......, подумаешь ..., мальца ошибся

в данной статье
http://radiokot.ru/start/mcu_fpga/avr/12/Код: Выделить всё
;****************************************************
; ОБРАБОТЧИК ПРЕРЫВАНИЯ КОМПАРАТОРА
;****************************************************
Timer1_comp1:
ldi Temp,0 ;обнуление таймера
out TCNT1H,Temp
out TCNT1L,Temp
cpi Temp1,30 ;сравнить с крайним знач.
breq Init ;если равно - загрузка нач. знач.
ReadArray:
ldi ZH,High(Array*2) ;загрузка начального адреса массива
ldi ZL,Low(Array*2)
ldi Temp,0 ;прибавление внутр. адреса
add ZL,Temp1
adc ZH,Temp
lpm ;загрузка из ПЗУ
mov Temp,R0 ;копирование в РОН
inc Temp1 ;увеличение внутр. адреса
rjmp Output ;перейти на вывод в порт
Init: ldi Temp1,0 ;загрузить нач. значение
rjmp ReadArray
Output: out PortB,Temp ;вывод в порт
reti ;выход из обработчика
Array:
.db 0b10000001,0b01000010
.db 0b00100100,0b00011000
.db 0b00011000,0b00111100
.db 0b01111110,0b11111111
.db 0b11100111,0b11000011
.db 0b10000001,0b11000001
.db 0b11100001,0b11110001
.db 0b11111001,0b11111101
.db 0b11111111,0b01111111
.db 0b00111111,0b00011111
.db 0b00001111,0b00000111
.db 0b00000011,0b00000001
.db 0b00000011,0b00000101
.db 0b00001001,0b00010001
.db 0b00100001,0b01000001
для меня непонятны следующие строки
Код: Выделить всё
ldi Temp,0 ;прибавление внутр. адреса
add ZL,Temp1
adc ZH,Temp
почему делается именно так , а не скажем вот так ?
Код: Выделить всё
ldi Temp,0 ;прибавление внутр. адреса
adс ZL,Temp1
add ZH,Temp