mensagens

.
;*******************************************************************************
.MESSAGE "rotinas do re_mensageiro ativadas."
;*******************************************************************************
;uso: ...
; ldi r18,MSG_bemvindo ; id
; rcall re_mensageiro
; ...
; destroi: r30,r31,r16,r17
; entrada: r18 = id, r30,r31 = tabela
; saída: mensagem no LCD
;*******************************************************************************
re_mensageiro: push r16
push r17
push r18
;
mensag0: lpm r16,Z+ ; id atual
cpse r16,r18 ; id desejado
rjmp varre_cad ; próxima linha da cadeia
lpm r16,Z+ ; posição no lcd
rcall re_lcd_cmd
lpm r17,Z+ ; tam, contador
;
mnsg_laco: lpm r16,Z+ ; cadeia ou final
cpi r16,f_SOH
breq mnsg_fim
cpi r16,f_EOT
breq mnsg_fim
rcall re_lcd_dado ; exibe
dec r17 ; final do tam
breq mnsg_fim
rjmp mnsg_laco ; vai até o final da cadeia
;clc ; sem erro
;ret
mnsg_fim: ;sec ; com erro
pop r18
pop r17
pop r16
ret

; próxima cadeia dentro da tabela
varre_cad: lpm r16,Z+ ; perde pos
lpm r16,Z+ ; perde tam
varre_cad1: wdr
lpm r16,Z+ ; cad
cpi r16,f_SOH ; final da cadeia
brne varre_cad3
cpi r16,f_EOT ; final da tabela
breq varre_cad2 ; sai sem achar
;clc ; sem erro
rjmp mensag0 ; volta em cima do id
varre_cad3: cpi r16,f_EOT ; final da tabela
brne varre_cad1 ; laço
varre_cad2: ;sec ; com erro
rjmp mnsg_fim
;*******************************************************************************
;
;
;
;
;*******************************************************************************
.MESSAGE "Rotinas das mensagens ativadas."
;*******************************************************************************
re_msg_amb: ldi r18,MSG_ambie
rcall re_pre_ini
ret
;
re_msg_aut: ldi r18,MSG_autor
rcall re_pre_ini
ret
;
re_msg_cur: ldi r18,MSG_curso
rcall re_pre_ini
ret
;
re_msg_emp: ldi r18,MSG_empre
rcall re_pre_ini
ret
;*******************************************************************************
;
;
;
;*******************************************************************************
;* Pprepara o ponteiro indexador "Z" com a posição inícial da tableas que *
;* contém as cadeias de caracteres das mensagens *
;* uso: ... *
;* ldi r18,MSG_bemvindo ; id *
;* rcall re_pre_msg, rcall re_pre_nav, re_pre_tst, re_pre_sis *
;* ... *
;*******************************************************************************
re_pre_ini: ldi Zh,high(TAB_INI<<1) ; tabela
ldi Zl,low(TAB_INI<<1)
rcall re_mensageiro
ret
;*******************************************************************************
;
;
;
;*******************************************************************************
TAB_INI:.DB MSG_empre,f_L1C1,36,"'BEM VINDO' ao S.O. da TANtec corp. ",f_SOH
.DB MSG_autor,f_L2C1,38, "Desenvolvedor: UBIRATA UAATSIM ITZA I ",f_SOH
.DB MSG_ambie,f_L1C1,40,"AMBIENTE DE DESENVOLVIMENTO ATMEL/AVR 32",f_SOH
.DB MSG_curso,f_L1C1,40, "<< CIENCIA DA COMPUTACAO >> 7 SEMESTRE",f_SOH
.DB f_EOT,f_EOT
;*******************************************************************************
.

Nenhum comentário:

Postar um comentário