Paso 5: Circuito de control
El escenario del código depende de:
1-habilitar el RX/TX del ATMEGA16 MCU.
2-enviar el código ASCII de la PC o Tablet.
3-traducir el código ASCII de la MCU para una salida específica en Puerto A y Puerto C.
El fusible bit para resonador de 16 Mhz frecuencia externa debe establecerse en: alta: 0xC9, bajo: 0xFF como se muestra en la imagen adjunta.
Código:
/*
Resonador de frecuencia externa de 16MHz ATmega16
Tasa de baudios 9600 No paridad, 1 Bit de parada, Control de flujo: ninguno
*/
#include < avr/io.h >
#include < inttypes.h >
#include < util/delay.h >
void USARTInit(uint16_t ubrr_value)
{
Establecer la velocidad en baudios
UBRRL = ubrr_value;
UBRRH = (ubrr_value >> 8);
UCSRC = (1 << URSEL) | (3 << UCSZ0); Configurar modo asincrónico, sin paridad, 1 StopBit
UCSRB = (1 << RXEN) | (1 << TXEN); Permitir que el receptor y el transmisor
}
char USARTReadChar()
{
mientras (! () UCSRA & (1 << RXC)))
{
no hacer nada
}
volver UDR;
}
void USARTWriteChar(char data)
{
mientras (! () UCSRA & (1 << UDRE)))
{
no hacer nada
}
UDR = datos;
}
void main()
{
DDR = 0XFF;
DDRA = 0XFF;
datos char;
USARTInit(103); de 16Mhz y velocidad en baudios 9600 UBRR = 103 y baudios 19200 UBRR = 51
while(1)
{
Data=USARTReadChar();
Si (datos == 0x71) {PORTC = 0b10000000; USARTWriteChar('Q');} q en ascii
Si (datos == 0x77) {PORTC = 0b00001001; USARTWriteChar('w');} w en ascii hacia adelante
Si (datos == 0x65) {PORTC = 0b01000000; USARTWriteChar('e');} e en ascii
Si (datos == 0x61) {PORTC = 0b00000011; USARTWriteChar('A');} un ascii en izquierda
Si (datos == 0x73) {PORTC = 0b00000000; USARTWriteChar('s');} Dejar de s en ascii
Si (datos == 0x64) {PORTC = 0b00001100; USARTWriteChar('d');} d en ascii derecha
Si (datos == 0x7A) {PORTC = 0b00100000; USARTWriteChar('z');} z en ascii
Si (datos == 0x78) {PORTC = 0b10000110; USARTWriteChar('x');} x en ascii al revés
Si (datos == 0x99) {PORTC = 0b11110000; USARTWriteChar('c');} c en ascii
Si (data==0x69){PORTC=0b00001001;_delay_ms(200); PORTC = 0b00000000;} en ascii hacia adelante
Si (data==0x6A){PORTC=0b00000011;_delay_ms(200); PORTC = 0b00000000;} j en ascii izquierda
Si (data==0x6C){PORTC=0b00001100;_delay_ms(200); PORTC = 0b00000000;} l derecho en ascii
Si (data==0x6B){PORTC=0b00000110;_delay_ms(200); PORTC = 0b00000000;} k en ascii nuevo
Si (datos == 0x31) {PORTA = 0b00000001; USARTWriteChar('1');} 1 en ascii //2 LED en
Si (datos == 0x32) {PORTA = 0b00000010; USARTWriteChar('2');} 2 en ascii //4 LED en
Si (datos == 0x33) {PORTA = 0b00000111; USARTWriteChar('3');} 3 en ascii //6 LED en
Si (datos == 0x34) {PORTA = 0b00001000; USARTWriteChar('4');} 4 en ascii //Red LED en
Si (datos == 0x35) {PORTA = 0b00010000; USARTWriteChar('5');} 5 en ascii
Si (datos == 0x36) {PORTA = 0b00100000; USARTWriteChar('6');} 6 en ascii
Si (datos == 0x37) {PORTA = 0b01000000; USARTWriteChar('7');} 7 en ascii
Si (datos == 0x38) {PORTA = 0b10000000; USARTWriteChar('8');} 8 en ascii
Si (datos == 0 x 39) {PORTA = 0b00000000; USARTWriteChar('9');} 9 en ascii //All Off
Else {}
}
}