.
;********************************************************************************
.MESSAGE "Rotinas das APIs ativadas."
;********************************************************************************
api_ucp_ini: rcall re_ucp_cnfg
rcall ri_portA_cnfg
rcall ri_portB_cnfg
rcall ri_portC_cnfg
rcall re_intext1_cnfg
rcall re_intext1_nvl
rcall re_cpu_lcdcnfg ; configura a porta
rcall re_lcd_cnfg ; configura o LCD
rcall re_caoguarda
rcall re_twi_cnfg
ret
;--------------------------------------------------------------------------------
api_msg_ini: ; rcall re_msg_emp
rcall re_msg_aut
; rcall re_esp_humana
; rcall re_msg_amb
; rcall re_esp_humana
rcall re_msg_cur
ret
;********************************************************************************
;
;
;
;******************************************************************************
.MESSAGE "Instalado os locais de chamadas de interrupções."
;******************************************************************************
.MESSAGE "Instalado o tratamento da interrupção EXTERNA 0."
int_ext0: ;
reti
;******************************************************************************
.MESSAGE "Instalado o tratamento da interrupção EXTERNA 1 - klavaro."
int_klavaro: cli ; não preemptivo
macro_push
rcall re_brrmt_klvr_L ; lê as teclas
lds r16,v_8574_cnt ; verifica se 2. tecla devido ao harware.
cpi r16,2
breq int_klvr_a
lds r16,v_8574_var
out portb,r16
cpi r16,0xFF
breq int_klvr_a
; lds r16,v_8574_var
cpi r16,0x00
breq int_klvr_a
sts v_klavaro,r16 ; salva tecla precionada.
rcall ri_processo
rjmp int_klvr_f ; única saída
;
int_klvr_a: ldi r16,0 ; nada
sts v_8574_cnt,r16
sts v_8574_var,r16
;
int_klvr_f: rcall re_twi_5ms ; único ponto de saída.
macro_pop
reti
;******************************************************************************
;
;
;
;******************************************************************************
.MESSAGE "Instalado o processamente."
ri_processo: ; lds r16, v_klavaro
; cpi r16,0
; breq ri_processsaida
; cpi r16,0xFF
; breq ri_processsaida
;
cpi r16,f_klvace_tst ; tecla fieto ?
breq riprocessace
cpi r16,f_klvcan_tst ; tecla cancelar ?
breq riprocesscan
cpi r16,f_klvmai_tst ; tecla mais ?
breq riprocessmai
cpi r16,f_klvmen_tst ; tecla menos ?
breq riprocessmen
cpi r16,f_klvava_tst ; tecla avançar ?
breq riprocessava
cpi r16,f_klvret_tst ; tecla retroceder ?
breq riprocessret
cpi r16,f_klvcim_tst ; tecla cima ?
breq riprocesscim
cpi r16,f_klvbai_tst ; tecla baixo ?
breq riprocsbai
ri_processsaida: ldi r16,'u'
rjmp riprocessx
riprocsbai: rjmp riprocessbai
;-------------------------------------------------------------------------------
riprocessace: ldi r16,'A'
rjmp riprocessx
;-------------------------------------------------------------------------------
riprocesscan: ldi r16,'C'
rjmp riprocessx
;-------------------------------------------------------------------------------
riprocessmen: ldi r16,'m'
rjmp riprocessx
;-------------------------------------------------------------------------------
riprocessava: ldi r16,'V'
rjmp riprocessx
;-------------------------------------------------------------------------------
riprocessret: ldi r16,'r'
rjmp riprocessx
;-------------------------------------------------------------------------------
riprocesscim: ldi r16,'I'
rjmp riprocessx
;-------------------------------------------------------------------------------
riprocessbai: ldi r16,'b'
;
riprocessx: push r16
ldi r16,f_L1C1 ; posiciona o cursor
rcall re_lcd_cmd
pop r16
rcall re_lcd_dado ; exibe o caractere
ldi r16,0xFF
sts v_klavaro, r16 ; limpa a tecla
ret
;-------------------------------------------------------------------------------
riprocessmai: lds r18,v_conta_msg
cpi r18, MSG_opcsair + 1 ; uma após a última mensagem.
breq riprocmaib ; se igual zera.
riprocmaia: rcall ri_pre_opc
rcall re_esp_humana ; espera um pouco.
lds r18,v_conta_msg
inc r18 ; próxima mensagem.
sts v_conta_msg,r18
clr r16
sts v_klavaro, r16 ; limpa a tecla
ret
;
riprocmaib: ldi r18,f_padrao ; primeira mensagem.
sts v_conta_msg,r18
rjmp riprocmaia
;******************************************************************************
;
;
;
;******************************************************************************
.MESSAGE "Instalado o tratamento da interrupção EXTERNA 2."
int_ext2: ;
reti
.MESSAGE "Instalado o tratamento da interrupção OC 2."
int_oc2: ;
reti
.MESSAGE "Instalado o tratamento da interrupção OVF 2."
int_ovf2: ;
reti
.MESSAGE "Instalado o tratamento da interrupção ICP 1."
int_icp1: ;
reti
.MESSAGE "Instalado o tratamento da interrupção OC 1A."
int_oc1a: ;
reti
.MESSAGE "Instalado o tratamento da interrupção OC 1."
int_oc1b: ;
reti
.MESSAGE "Instalado o tratamento da interrupção TIM 1 ESTOURO."
int_tim1_estouro: ;
reti
.MESSAGE "Instalado o tratamento da interrupção OC 0."
int_oc0: ;
reti
.MESSAGE "Instalado o tratamento da interrupção TIM 0 ESTOURO."
int_tim0_estouro: ;
reti
.MESSAGE "Instalado o tratamento da interrupção SPI."
int_spi: ;
reti
.MESSAGE "Instalado o tratamento da interrupção USART RX."
int_usartrx: ;
reti
.MESSAGE "Instalado o tratamento da interrupção USART DRE."
int_usartdre: ;
reti
.MESSAGE "Instalado o tratamento da interrupção USART TX."
int_usarttx: ;
reti
.MESSAGE "Instalado o tratamento da interrupção ADC."
int_adc: ;
reti
.MESSAGE "Instalado o tratamento da interrupção EEPROM."
int_eeprom: ;
reti
.MESSAGE "Instalado o tratamento da interrupção ANALÓGICO."
int_anal: ;
reti
.MESSAGE "Instalado o tratamento da interrupção TWI."
int_twi: ;
reti
.MESSAGE "Instalado o tratamento da interrupção SPMR."
int_spmr: ;
reti
;******************************************************************************
.
Nenhum comentário:
Postar um comentário