Subrutina de Barrido de Teclado 4x3 Interrupciones
August 8, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Subrutina de Barrido de Teclado 4x3 Interrupciones...
Description
SUBRUTINA DE BARRIDO DE TECLADO 4x3 INTERRUPCIONES Circuito
-
Inicializar el pórtico de la siguiente manera ldi r16,0b00000111 00111 ldi r16,0b000 out ddra,r16 ;I/O keypad out ddra,r16
-
Crear espacios de memoria con los siguientes nombres dig1:.byte dig1: .byte 1 1 dig2:.byte dig2: .byte 1 1 .byte 1 1 dig3:.byte dig3: .byte 1 1 dig4:.byte dig4: contador:.byte contador: .byte 1 1 .byte 1 1 digito:.byte digito:
-
Configuro interrupciones interrupciones ;;;;;;;;;;;;;;;,configuro interrupciones interrupciones ldi tempo,0b00000001 00001 ldi tempo,0b000 sts sts pcicr,tempo pcicr,tempo ldi tempo,0b111 tempo,0b11111000 11000 ldi sts sts pcmsk0,temp pcmsk0,tempo o sei
-
Se debe utilizar interrupciones para llamar a
TESTEAR
;=====================================SUBRUTINA BARRIDO DE TECLADO, con interrupciones ; Tener en cuenta que se debe creear en la sram los siguientes espacios dig1, dig2, dig3, dig4, contador, digito digito
barrido_teclado: push r22 push r22 push r18 r18 push push push r16 r16 push r17 r17 push push push r21 r21 push push r23 r23 push r19 r19 push lds lds r22,contado r22,contador r cpi cpi r22,1 r22,1 ;R22=contador; me indica cuantas teclas e ingresado breq barrido1 barrido1 breq cpi r22,2 r22,2 ;;R22=contador; me indica cuantas teclas e ingresado cpi breq breq barrido2 barrido2 cpi r22,3 r22,3 cpi
;R22=contador; me indica cuantas teclas e ingresado
breq barrido3 barrido3 breq cpi cpi r22,4 r22,4 ;R22=contador; me indica cuantas teclas e ingresado breq barrido4 barrido4 breq ldi ldi r18,0b10000 r18,0b10000000 000 out porta,r18 porta,r18 out
;R18=valida una tecla tecla
mantener: ;subrutina que espera que deje de aplastar una tecla in r18,pina r18,pina in andi andi r18,0b111110 r18,0b11111000 00 cpi r18,0b11111000 cpi brne mantener mantener brne rcall rcall retardo retardo rjmp restauro restauro rjmp
barrido1: lds lds r16,digito r16,digito sts dig1,r16 dig1,r16 sts dig1 dig1 lds lds r17,dig1 r17,dig1 carga de dig1 dig1 ldi r21,0b00000 r21,0b00000001 001 ldi rcall barrido rcall barrido rcall retardo retardo rcall rjmp restauro restauro rjmp barrido2: lds lds r16,digito r16,digito sts dig2,r16 dig2,r16 sts lds r17,dig1 r17,dig1 lds ldi ldi r21,0b00000 r21,0b00000010 010
;R16=registro que me indica que tecla presione; Almaceno en ;R17=regi ;R17=registro stro que almacena el numero a mostrar en el display; ;R21=registro que controla, que display se debe encender
rcall barrido barrido rcall lds lds r17,dig2 r17,dig2 ldi r21,0b00000 r21,0b00000001 001 ldi rcall rcall barrido barrido rjmp restauro restauro rjmp
barrido3: lds lds r16,digito r16,digito sts dig3,r16 dig3,r16 sts lds lds r17,dig1 r17,dig1 ldi r21,0b00000 r21,0b00000100 100 ldi rcall barrido barrido rcall rcall rcall retardo retardo lds r17,dig2 r17,dig2 lds ldi ldi r21,0b00000 r21,0b00000010 010 rcall rcall barrido barrido rcall retardo retardo rcall lds lds r17,dig3 r17,dig3 ldi r21,0b00000 r21,0b00000001 001 ldi rcall barrido barrido rcall rcall rcall retardo retardo rjmp restauro restauro rjmp barrido4: lds lds r16,digito r16,digito sts dig4,r16 dig4,r16 sts lds lds r17,dig1 r17,dig1 ldi r21,0b00001 r21,0b00001000 000 ldi rcall rcall barrido barrido lds lds r17,dig2 r17,dig2 ldi r21,0b00000 r21,0b00000100 100 ldi rcall rcall barrido barrido lds r17,dig3 r17,dig3 lds ldi r21,0b00000 r21,0b00000010 010 ldi rcall rcall barrido barrido lds r17,dig4 r17,dig4 lds ldi r21,0b00000 r21,0b00000001 001 ldi rcall rcall barrido barrido rjmp rjmp restauro restauro
restauro: pop pop r19 r19 pop r23 r23 pop pop pop r21 r21 pop r17 r17 pop pop pop r16 r16 pop pop r18 r18 pop r22 r22 pop ret ret
barrido: ldi ldi zl,low(tabl zl,low(tabla
View more...
Comments