UNIVERSIDAD POLITECNICA SALESIANA INFORME 2 LABORATORIO DE SISTEMAS MICROPROCESADOS I EDISON RIOFRIO FRANCISCO REYES
CONTROL DE PUERTOS DEL ATMEGA 16 1. Escritura Escritura en un puerto puerto del del microcontro microcontrolado ladorr Atmel AVR AVR
a. Escribir Escribir el numero numero 55 hexadecim hexadecimal al en el puerto puerto D Entradas, Salidas, Procesos:
Entradas o
Salidas o
Dato que programaremos, 55 hexadecimal. Arreglo de bits en los pines del Atmega 16
Procesos o
Establecer los pines de salida
o
Escribir en ellos el dato a mostrar
Algoritmo.
INICIO
Especificar Puerto D como salida
Escribir Escribir dato 55h
Lenguaje de Programación. $regfile “m16def.dat” $crystal = 8000000 DdrD = 255 Config PortD = output Do PortD = &B1010_1010 Loop End Diseño en Proteus.
Gráficas:
Conclusiones: El puerto en el cual se vaya a escribir se lo activa mediante la sentencia: DDRX=255 y luego Config PortD = Output; a medida de que se desee una salida similar en otro puerto bastará con cambiar el nombre de puerto.
2. Lectura Lectura y escritur escritura a en en puert puertos os
b. Escribir Escribir un dato dato en el puerto puerto B y leerlo leerlo en el puerto puerto D Entradas, Salidas, Procesos:
Entradas: o
Salidas: o
Voltaje TTL en el puerto B Arreglo de bits en los pines del puerto D
Procesos: o
Configuración del puerto B como puerto de ingreso de datos
o
Configuración del puerto D como puerto de salida de datos
o
Escribir los datos que se reciben con el puerto B, en el puerto D
Algoritmo:
INICIO
Configuración del Puerto B como Puerto de entrada
Configuracion del Puerto D como Puerto de salida
Ingresar un dato al Puerto B mediante el dipswicth
Mostrar el dato del Puerto B en el Puerto D
FIN
Lenguaje de Programación: $regfile “m16def.dat” $crystal = 8000000 DdrB = o DdrD = 255 Config Config Portd = output output Config Portb = input Dim A as byte Do A = pinB PortD = A Loop End Diseño en Proteus:
Graficas:
Conclusiones: A diferencia de Microbasic en en donde basta con establecer si el puerto es de salida o de entrada, en programación con AVR’s tenemos que configurar el puerto e inicializar el puerto como entrada o salida.
3. Utilizando el esquema esquema anterior anterior comprobar comprobar el uso de las funciones, funciones, and, or, xor xor y not.
Entradas, Salidas, Procesos
Entradas o
Salidas o
Conjunto de bytes dados por el dipswicht hacia el puerto D. Arreglo de datos en los pines del atmega16 del puerto B.
Procesos o
Configurar el puerto B como salidas
o
Configurar el puerto D como entradas
o
Uso de lógica booleana mediante instrucciones como: and, or, xor, not.
o
Enciendo leds correspondientes al dato resultado de la operación booleana.
Algoritmo:
INICIO
Configuración del Puerto B como Puerto de entrada
Configuración del Puerto D como Puerto de salida
Ingresar un dato al Puerto B mediante el dipswicth
A = pinB.0 and pinB.1 B = pinB.2 or pinB.3 C = pinB.4 xor pinB.5 D = not not inB. inB.6 6
PortD.0 = A PortD.1 = B PortD.2 = C PortD.3 = D
Muestro el dato resultante de las operaciones en los pines del puerto D
Lenguaje de programación: $regfile “m16def.dat” $crystal = 8000000 DdrB = o DdrD = 255 Config Config Portd = output output Config Portb = input Dim A as bit, B as bit, C as bit, D as bit Do A = pinB.0 and pinB.1 PortD.0 = A B = pinB.2 or pinB.3 PortD.1 = B C = pinB.4 xor pinB.5 PortD.2 = C D = not pinB.6
PortD.3 = D Loop End Esquema en proteus:
Graficos:
Conclusiones: El uso de sentencias boolenas nos ha permitido además de escribir en un puerto realizar un proceso anterior y modificar los datos de la salida con respecto a los de entrada. Ejercicio Propuesto:
Crear la tabla de la siguiente función booleana: (A and B) or (not C) Entradas, Salidas, Procesos
Entradas o
Salidas o
Conjunto de bytes dados por el dipswicht hacia el puerto D. Arreglo de datos en los pines del atmega16 del puerto B.
Procesos o
Configurar el puerto B como salidas
o
Configurar el puerto D como entradas
o
Resolución de la función, mediante uso de lógica booleana.
o
Enciendo leds correspondientes al dato resultado de la operación booleana.
Algoritmo: INICIO
Configuración del Puerto B como Puerto de entrada
Configuración del Puerto D como Puerto de salida
Ingresar un dato al Puerto B mediante el dipswicth
A = pinB.0 B = pinB.2 C = A and B D = not pinB.6 E = A or D
Lenguaje de programación: $regfile “m16def.dat” $crystal = 8000000 DdrB = o DdrD = 255 Config Config Portd = output output Config Portb = input Dim A as bit, B as bit, C as bit, D as bit, E as bit Do A = pinB.0 PortD.1 =A B = pinB.1 PortD.1= B C = A and B D = not pinB.2 PortD.2 = D E = C or D PortD.3 = E Loop End Esquema en Proteus:
Graficas:
Conclusiones: El uso de variables asignadas a cierto Puerto ya sea de entrada o salida nos ayuda a manejar con mas soltura la lógica de Boole.