<$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
;___________________________________________________

posted by grupo espirito  # 6:58 AM

Archives

04/01/2004 - 05/01/2004  

This page is powered by Blogger. Isn't yours?