Professional Documents
Culture Documents
Departamento de Automatización y
Control Industrial - DACI
Ejercicio
Realizar un programa que genere 4 ondas cuadradas por los 4 bits menos
significativos del puerto A, donde la frecuencia en el PA.0 sea f=1Khz, en el PA.1
f=500Hz, en el PA.2 f=250Hz, en el PA.3 f=125Hz. Nota. La frecuencia puede ser
aproximada.
Ejercicio Prueba
.include "m164pdef.inc"
.def contador = R16 ; se define R16 como el contador
.def tempo = R17 ; este es un registro auxiliar
.def tempo1= R18
.org 0x0000
clr contador ; inicio la cuenta en cero
ldi tempo,0b11111111 ; para definir al Puerto A como salida se debe
out ddra,tempo ; poner 1L en cada uno de los bits del DDRA
lazo:
andi contador,0b0000_1111
out porta,contador ; envío del contenido de contador al Puerto A
ldi tempo1,2
ldi tempo,83 ; se inicia una rutina de retardo
salto:
dec tempo ; salto se repite 82 veces
brne salto ; hasta que la bandera Z=1
ldi tempo,83 ; se inicia una rutina de retardo
dec tempo1
brne salto
inc contador ; incremento del contador en una unidad
rjmp lazo ; repitir el proceso indefinidamente
TEMARIO
Calculo de tiempo
ldi tempo1,2
ldi tempo,83
salto:
dec tempo ; 1 CM
brne salto ; 2 CM si es verdadero/ 1 si es falso
ldi tempo,83 ; 1 CM
dec tempo1 ; 1 CM
brne salto ; 2 CM
#CM=(([(dec+brne)*83]-brne+ldi+dec+brne)*2)-brne
#CM=(([(1+2)*83]-1+1+1+2)*2)-1=503us
Temario
• DISPLAY
• CONEXION DISPLAY
• BARRIDO DE DISPLAY
Manejo de Display
Una matriz de 7 diodos LED dispuestos de forma que
encendiéndolos apropiadamente se pueden formar los
números del 0 al 9 y algunas letras del alfabeto.
Manejo de Display
• DISPLAY
• CONEXION DISPLAY
• BARRIDO DE DISPLAY
Conexión varios Display
Catodo Comun
Conexión varios Display
Catodo Comun
Conexión varios Display
Anodo Comun
Conexión varios Display
LATCH 74LS244
Conexión varios Display
MUX 74LS138
Temario
• DISPLAY
• CONEXION DISPLAY
• BARRIDO DE DISPLAY
Barrido de Display
Barrido Secuencial
• Se coloca todos los segmentos en paralelo, y una
resistencia en serie con cada segmento común.
• Se habilita un cátodo a la vez a una velocidad lo
suficientemente alta como para que el ojo humano no
distinga el barrido, pero no tan alta como para que el
display no responda. Normalmente se trabaja entre 300Hz
y 2KHz.
Barrido de Display
Ejercicio: Contador 00-99 2 display
Temario
• EJERCICIOS
Manejo de Display - Tablas
Ejercicio
Manejo de Display - Tablas
Solución:
.include "m164pdef.inc"
rjmp Inicio
Inicio:
ser R16
clr R17
out DDRB,R16 ; Puerto B como salida
out DDRD,R16 ; Puerto D como salida
out DDRC,R17 ; Puerto C como entrada
tabla:
.db $40, $79,$24,$30,$19,$12,$2,$78,$0,$18,$8,$3,$46,$21,$6,$0E
Manejo de Display - BinarioBCD
Manejo de Display - BinarioBCD
.include "m164pdef.inc"
.def aux=r16
.def dato=r17
.def unidades=r18
.def decenas = r19
.def centenas = r20
rjmp Inicio
Inicio:
;configuracion de puertos
ldi aux,0b0000_0000 ; configuro como entrada pull - up puerto B
out DDRB,aux
ldi aux,0b1111_1111
out PORTB,aux
; configuro como salida puerto A,C,D
ldi aux,0b0111_1111
out DDRA,aux
out DDRC,aux
out DDRD,aux
ldi aux,0b0000_0000
out PORTA,aux
out PORTC,aux
out PORTD,aux
Manejo de Display - BinarioBCD
lazo:
clr unidades ; encero registros
clr decenas
clr centenas
in dato,PINB ; leo el puerto
rcall BinBCD ; llamo conversion Binario BCD
mov aux,unidades
rcall Mostrar ; conversion a 7 segmentos
out PORTD,aux
mov aux,decenas
rcall Mostrar
out PORTC,aux
mov aux,centenas
rcall Mostrar
out PORTA,aux
rjmp lazo
Manejo de Display - BinarioBCD
mostrar:
ldi ZH,high(tabla<<1) ; Craga puntero Z direccion de tabla
ldi ZL,low(tabla<<1)
add ZL,aux
lpm aux,z
ret
Manejo de Display - BinarioBCD
BinBCD:
lazo1: ; resto 100 para centenas
ldi aux,100
sub dato,aux
brcs bin_bcd2 ; salta si hay carry
inc centenas
rjmp lazo1
bin_bcd2:
add dato, aux
lazo2: ; resto 10 para decenas
ldi aux,10
sub dato,aux
brcs bin_bcd3
inc decenas
rjmp lazo2
bin_bcd3:
add dato, aux
lazo3: ; lo que sobra son unidades
mov unidades,dato
Ret
tabla:
.db $40, $79,$24,$30,$19,$12,$2,$78,$0,$10
Barrido de Display
Ejercicio: Contador 00-99
Temario
• TECLADO MATRICIAL
• BARRIDO DEL TECLADO
Teclado Matricial
Existencia de rebotes
Teclado Matricial
Para contrarrestar los efectos indeseables de los rebotes
se tiene 2 técnicas, la eliminación por hardware y la
eliminación por software.
• TECLADO MATRICIAL
• BARRIDO DEL TECLADO
Barrido del Teclado
Barrido del Teclado
Por ejemplo. Para detectar la activación o pulsación de las teclas
1, 2, 3 y A, se aplica, desde un dispositivo externo, un nivel lógico
cero ("0") a la FILA 1.
BARRIDO DE
LAS FILAS:
Codificador del Teclado
Temario
EJERCICIO
Ejercicio
Ejercicio
Ejercicio
.include "m164pdef.inc"
.org 0x00
;************************************
;DEFINICION DE VARIABLES
.def aux=r16
.def aux1=r17
.def tempo=r18
.def tempo1=r19
;************************************
;CONFIGURACION DE PUERTOS
ldi aux,0b0000_1111 ;PIN 4-7(IN) 0-3(OUT)
out ddrb,aux ;Configuración del PortB
ldi aux,0b1111_0000 ;Pull-Up
ldi aux,0xff
out ddra,aux ;PortA como salidas
out porta,aux ;Pull-Up
ldi tempo,255
ldi tempo1,1
Ejercicio
;**********************
;*********************
;FILAS Y SUS TECLAS
;BARRIDO DE FILAS
Fila1:
sbis pinb,4
Inicio:
rcall Siete
ldi aux,0b1111_0111
sbis pinb,5
out portb,aux
rcall Ocho
rcall Fila1
sbis pinb,6
ldi aux,0b1111_1011
rcall Nueve
out portb,aux
sbis pinb,7
rcall Fila2
rcall A
ldi aux,0b1111_1101
ret
out portb,aux
Fila2:
rcall Fila3
sbis pinb,4
ldi aux,0b1111_1110
rcall Cuatro
out portb,aux
sbis pinb,5
rcall Fila4
rcall Cinco
rjmp inicio
sbis pinb,6
rcall Seis
sbis pinb,7
rcall B
ret
Ejercicio
;********************
Fila3: ;VALOR DE LAS TECLAS
sbis pinb,4 Cero:
rcall Uno ldi aux1,0
sbis pinb,5 rcall display
rcall Dos ret
sbis pinb,6 Uno:
rcall Tres ldi aux1,1
sbis pinb,7 rcall display
rcall C ret
ret Dos:
Fila4: ldi aux1,2
sbis pinb,4 rcall display
rcall E ret
sbis pinb,5 Tres:
rcall Cero ldi aux1,3
sbis pinb,6 rcall display
rcall F ret
sbis pinb,7 Cuatro:
rcall D ldi aux1,4
ret rcall display
ret
Ejercicio
Cinco:
ldi aux1,5 A: ldi aux1,10
rcall display
rcall display
ret
ret
B: ldi aux1,11
Seis:
rcall display
ldi aux1,6
rcall display ret
C: ldi aux1,12
ret
rcall display
Siete:
ret
ldi aux1,7
D: ldi aux1,13
rcall display
ret rcall display
ret
Ocho:
E: ldi aux1,14
ldi aux1,8
rcall display
rcall display
ret
Ret
Nueve: F: ldi aux1,15
rcall display
ldi aux1,9
ret
rcall display
ret
Ejercicio
;************************************
;SUBRUTINA HEXADECIMAL
Display:
rcall numero
out porta,aux1 ;Hex menos significativo
rcall retardo
rjmp Inicio
;************************************
;BUSCADOR DEL DATO, EN UNA TABLA
numero:
ldi zh,high(tabla<<1)
ldi zl,low(tabla<<1)
add zl,aux1
lpm aux1,z
ret
Ejercicio
;************************************
;RETARDO
retardo:
dec tempo
brne retardo
dec tempo1
brne retardo
ret
;************************************
;TABLA PARA DISPLAY 7SEG ANODO COMUN
tabla:
;gfedcba, gfedcba ;Salida 0L
.db 0b11000000,0b11111001 ;0 y 1
.db 0b10100100,0b10110000 ;2 y 3
.db 0b10011001,0b10010010 ;4 y 5
.db 0b10000010,0b11111000 ;6 y 7
.db 0b10000000,0b10010000 ;8 y 9
.db 0b10001000,0b10000011 ;A y b
.db 0b11000110,0b10100001 ;C y d
.db 0b10000110,0b10001110 ;E y F
SISTEMAS MICROPROCESADORES
Departamento de Automatización y
Control Industrial - DACI