You are on page 1of 47

SISTEMAS MICROPROCESADORES

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

Para un display de Catodo


Temario

• 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

lazo: in R4,PINC ; Leo el puerto C


rcall Mostrar
rjmp lazo
Manejo de Display - Tablas
mostrar:
mov R18,R4
andi R18,$0F ; Extrae 4 bit
mov R6,R18 ; guardar en R6 4 bits bajos
mov R18,R4
swap R18
andi R18,$0F
mov R7,R18
ldi ZH,high(tabla<<1) ; Craga puntero Z direccion de tabla
ldi ZL,low(tabla<<1)
add ZL,R6
lpm R8,z
ldi ZH,high(tabla<<1) ; Craga puntero Z direccion de tabla
ldi ZL,low(tabla<<1)
add ZL,R7
lpm R9,z ; Lee de la Tabla
out PORTB,R8 ; escribe unidad
out PORTD,R9 ; escribe decenas
ret

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

El teclado más básico puede ser implementado usando


pulsadores, pero se necesita un pin del microcontrolador
por cada tecla, por lo que se lo debería usar únicamente en
sistemas microproceados que necesiten un número
reducido de teclas.

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.

Por software al detectar el primer flanco de bajada generar un


retardo
Teclado Matricial
Teclado Matricial

Es un arreglo o conjunto de interruptores conectados de


manera tal que la activación de cualquiera de ellos permita
la unión de puntos o terminales, es decir, un terminal de una
columna con un terminal de una fila.
Teclado Matricial

La cantidad de columnas y filas que conforman un teclado


matricial depende de la distribución física así como de la
cantidad de pulsadores en el teclado.

• Puedes observar y analizar el principio básico. Al presionar


el Pulsador "1" se comunica la COLUMNA 1 con la FILA 1
Teclado Matricial

Para un teclado conformado por una matriz de 4 columnas


por 4 filas, cada columna estará conformada 16 pulsadores.
Temario

• 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

You might also like