<$BlogRSDURL$>
instruction LPM
instrução LPM
Monday, April 19, 2004
==================
A INSTRUÇÃO LPM DO AVR
==================
Álvaro Luiz Stendardi Fontes
.def a=r16
.def b=r17
.equ sram =$60
;_______________________________________________
; REGISTROS OPERACIONAIS
.equ digito =0x04 ;7 0x64..0x6a
;_______________________________________________
;pegar um byte na flash
; no exemplo tem-se a TABELA de LED 7 segmentos
; posição requerida em a, retorna com o valor em a
;_________________________________________________
get_flash:
push c
andi a,$0f ; so' 16 posicoes
ldi zh,high(tab7*2) ;localizar tabela de 7 segmentos
ldi zl,low(tab7*2) ;tanto parte alta como baixa
;z esta agora apontando p/ pos 1 da tabela
get_f1:
test a ;está na posicao solicitada?
breq get_f2 ;sim
ld c,z+ ;nao, faca z++, para a proxima
rjmp get_f1 ;repita
get_f2:
lpm ;pegue o byte na flash posicao indicada em z
mov a,r0 ;o dado está em ro, por isto é sempre bom nos
;programas deixar R0 livre.
pop c ;repondo o reg c
ret ;em a tem o valor da posicao solicitada
;___________________________________________________
; TABELA PARA DISPLAY 7 SEGMENTOS
; 0,1....E,F
tab7: .db $3f,$06,$5b,$4f,$66,$6d,$7d,$07 ;numeros 0....7
.db $7f,$6f,$77,$7c,$39,$5e,$79,$71 ;numeros 8,9,A,B,C,D,e,F
;___________________________________________________
Archives
04/01/2004 - 05/01/2004
