API

.
;********************************************************************************
.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