MANEJO DE PUERTOS MICROCONTROLADOR ATMEGA164PA CON CODEVISION Y PROTEUS PARTE 2
WE UNIT TALENT, THEY CREATE FUTURE |
Una vez entendido como configurar es necesario llevarlo al programa para poder observar su funcionamiento, usamos CODEVISION 2.5, en nuestro canal de Youtube encontrarás el archivo, como instalarlo y ciertas ayudas para un mejor manejo del mismo.
Les voy a dejar unos programas aquí para que uds lo puedan compilar y puedan observar en nuestro canal un pequeño video tutorial. Espero les guste no dejen de comentar y suscribirse.
/***********************************************************************************************************/
#include <mega164.h> // libreria del microcontrolador
#include <delay.h> // libreria de retardos o tiempos
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTA=0x00; // activar pull ups
DDRA=0xFF; // configurar puertos como entrada/salida
while (1) // repita indefinidamente
{
//utilizar todo el puerto
PORTA=0xF0; //enciende 4 bits más significativos
delay_ms(300); //retardo de encendido
PORTA=0X00; //apago todo el puerto
delay_ms(300); //retardo de apagado
PORTA=0x0F; //enciende 4 bits menos significativos
delay_ms(300); //retardo de encendido
PORTA=0X00; //apago todo el puerto
delay_ms(300); //retardo de apagado
PORTA=0xFF; //prendo todo el puerto
delay_ms(300); //retardo de encendido
PORTA=0X00; //apago todo el puerto
delay_ms(300); //retardo de apagado
}
}
/***********************************************************************************************************/
Lo que realiza este programa es un juego sencillo de luces, para entender como configurar todo el puerto como salida.
/***********************************************************************************************************/
#include <mega164.h> // libreria del microcontrolador
#include <delay.h> // libreria de retardos
// Declare your global variables here
int i; //variable global
void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
//puerto como salida
PORTA=0x00;// activar pull up
DDRA=0xFF; //configurar puerto entrada/salida
//puerto b como entrada
PORTB=0x00;
DDRB=0x00;
while (1)
{
switch (PINB) { //escaneo del puerto configurado como entrada
case 1:
PORTA=0B00000001; // enciende PIN PA0
break;
case 2:
PORTA=0B00000010; // enciende PIN PA1
break;
case 3:
PORTA=0B00000100; // enciende PIN PA2
break;
case 4:
PORTA=0B00001000; // enciende PIN PA3
break;
case 5:
PORTA=0B00010000; // enciende PIN PA4
break;
case 6:
PORTA=0B00100000; // enciende PIN PA5
break;
case 7:
PORTA=0B01000000; // enciende PIN PA6
break;
case 8:
PORTA=0B10000000; // enciende PIN PA7
break;
};
}
}
/***********************************************************************************************************/
Lo que hacemos en este programa es recibir datos desde el PORTB configurado como entrada, la palabra PINB nos determina que vamos a recibir datos de todo el puerto, posteriormente lo que realizamos es hacer un escaneo del puerto con el ciclo switch, lo que hacemos es recibir un dato en hexadecimal desde el puerto y en cada caso lo transformamos a decimal.
A continuación les comparto los enlaces para que revisen nuestros videos tutoriales:
CONFIGURACIÓN DE PUERTOS COMO SALIDA ATMEGA164PA
No lo olvides, APRENDE, PRACTICA, DESARROLLA!!!!!!!
A continuación les comparto los enlaces para que revisen nuestros videos tutoriales:
CONFIGURACIÓN DE PUERTOS COMO SALIDA ATMEGA164PA
No lo olvides, APRENDE, PRACTICA, DESARROLLA!!!!!!!
No hay comentarios:
Publicar un comentario