Está en la página 1de 9

/*

* GccApplication2.c
*
* Created: 10/04/2019 7:17:30 p. m.
* Author : Julian HDz
*/

#include <avr/io.h>
//#define F_CPU 1000000UL //Defino frecuencia CPU

int main(void)
{
//--------------------------LED ----------------------------//
DDRC = 0b00000001; //Pin PC0=1
PORTC = 0b00000000; //Iniciar led apagado

//--------------------------USART ----------------------------//
UCSR0A = 0b00000000; //RX 1 cuando se completa la recepcion de un dato, TX 1
cuando se completa la trasmicion de un dato,
//UDRE0 1 El registro UDR0 está vacío, FEO
1 error de recepcion, DORn 1 error de sobreescritura,
//UPEn 1 error de paridad, U2Xn 0
velocidad normal , MPCMn 0 se usa para modo sincrono
UCSR0B = 0b00000000; //RX 1 interrupcion por recepcion, TX 1 interrupcion por
trasmicion, UDRIEn 1 interrupcion por q UDRO esta vacio
//RXENn 1 habilita RXD, TXENn 1 habilita
TXD, UCSZn2 Numero de bits a trasmitir,
//RXB8n 1 comunicacion de 9 bits, TXB8n 1
comunicacion de 9 bits
UCSR0C = 0b00000110; //UMSELn1, UMSELn0 Escojo el modo de trasmicion 00
asincrono, UPMn1, UPMn0 Escojo si uso y como el bit de paridad
//USBSn 0 1 bits de parada 1 2 bits de
parada, UCSZn0, UCSZn1 Numero de bits a trasmitir 011 8 bits, UCPOLn 0 en el modo
sincrono
UBRR0 = 6; //BAUD=9600, UBRR0=6 Ecuación, 9600 por que se aproxima
a 10k.

//-----------------------Timer - Prescaler-------------------------//
TCCR0B = (1 << CS02)|(1 << CS00); // Prescalizador en 1024
TCCR2B = (1<<CS22)|(1<<CS21)|(1<<CS20); //Prescalizador en 1024
TCNT0 = 252; //cuenta a 3 ms PD0 A PB6

//-------------------- VARIBLES GLOBALES -------------------------//


int cont7SEG = 0;
int aux = 1;
int estado = 1;
int Enviar = 0;
int Recivir = 0;
int AuxLED = 0;
//int LED1 = 0;
char Recibido;
char Datos;
int aux2 = 0;
int u = 0;
int d = 0;
int c = 0;

//----------------------------------------------------------------//
while (1)
{
while (TCNT0 != 255);
cont7SEG++;
Enviar ++;
Recivir ++;
TCNT0 = 254; //Cada 2 milisegundos
switch(estado){

case 0:
//RECEPCION
////////////////////////////////////////////////////////////////////////////////////
/////
if (Recivir >= 10)
{
aux2++;
if (aux2 == 1)
{
UCSR0B=0b00010000;// Trans & Recep (8Bits)
while(!(UCSR0A & (1<<RXC0)));
Datos = UDR0;
Recibido = UDR0 & 011110000; // Saco
los 4 primeros digitos de codigo
if (Recibido == 10100000) //
Reviso mi codigo
{
u = Datos & 00001111;
//estado = 1;
// Si si es mi codigo paso a estado 1
//PORTC = 0b00000001;
}
//PORTC = 0b00000001;
Recivir = 0;
//aux2++;
}
if (aux2 == 2)
{
UCSR0B=0b00010000;// Trans & Recep (8Bits)
while(!(UCSR0A & (1<<RXC0)));
Datos = UDR0;
Recibido = UDR0 & 011110000; // Saco
los 4 primeros digitos de codigo
if (Recibido == 10100000) //
Reviso mi codigo
{
d = Datos & 00001111;
//estado = 1;
// Si si es mi codigo paso a estado 1
//PORTC = 0b00000001;
}
//PORTC = 0b00000001;
Recivir = 0;
//aux2++;
}
if (aux2 == 3)
{
UCSR0B=0b00010000;// Trans & Recep (8Bits)
while(!(UCSR0A & (1<<RXC0)));
Datos = UDR0;
Recibido = UDR0 & 011110000; // Saco
los 4 primeros digitos de codigo
if (Recibido == 10100000) //
Reviso mi codigo
{
u = Datos & 00001111;
//estado = 1;
// Si si es mi codigo paso a estado 1
//PORTC = 0b00000001;
}
//PORTC = 0b00000001;
Recivir = 0;
aux2 = 0;
}
}
UCSR0B = 0b00000000;
////////////////////////////////////////////////////////////////////////////////////
///////////////////////
estado = 1;
break; //1

case 1: //Manejo digito 1

if (cont7SEG == 2 && aux == 1) {//2 ms


//PORTC = 0b00000001;
PORTC = 0b00000000;
PORTD = 0b00000000;
//PORTB = 0b00000000;
if (u == 1)
{
//Convercion = 0b00010101;
PORTC = 0b00001000; //habilito
PORTD = 0b00010000; //NEW
PORTC = 0b00001001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//2 ya
if (u == 2)
{
//Convercion = 0b00100101;
PORTC = 0b00001000; //habilito
PORTD = 0b10101100; //NEW
PORTC = 0b00001001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//3 ya
if (u == 3)
{
//Convercion = 0b00110101;
PORTC = 0b00001000; //habilito
PORTD = 0b00111100; //NEW
PORTC = 0b00001001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//4 ya
if (u == 4)
{
//Convercion = 0b01000101;
PORTC = 0b00001000; //habilito
PORTD = 0b00011000; //NEW
PORTC = 0b00001101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//5 ya
if (u == 5)
{
//Convercion = 0b01010101;
PORTC = 0b00001000; //habilito
PORTD = 0b00111100; //NEW
PORTC = 0b00001100;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//6 ya
if (u == 6)
{
//Convercion = 0b01100101;
PORTC = 0b00001000; //habilito
PORTD = 0b10111110; //NEW
PORTC = 0b00001100;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//7 ya
if (u == 7)
{
//Convercion = 0b01110101;
PORTC = 0b00001000; //habilito
PORTD = 0b00010100; //NEW
PORTC = 0b00001001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//8 ya
if (u == 8)
{
//Convercion = 0b10000101;
PORTC = 0b00001000; //habilito
PORTD = 0b10111100; //NEW
PORTC = 0b00001101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//9 ya
if (u == 9)
{
//Convercion = 0b10010101;
PORTC = 0b00001000; //habilito
PORTD = 0b00011100; //NEW
PORTC = 0b00001101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//0 ya
if (u == 0)
{
//Convercion = 0b00000101;
PORTC = 0b00001000; //habilito
PORTD = 0b10110100; //NEW
PORTC = 0b00001101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
aux++;
cont7SEG = 0;
}
if (cont7SEG == 0)
{
estado = 2;
}
break;
//estado = 2;
//break;

case 2: //Manejo digito 2

if (cont7SEG == 2 && aux == 2) {//2 ms


PORTC = 0b00000000;
PORTD = 0b00000000;
//PORTB = 0b00000000;
if (d == 1)
{
//Convercion = 0b00010101;
PORTC = 0b00010000; //habilito
PORTD = 0b01010001; //NEW
PORTC = 0b00010001;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//2 ya
if (d == 2)
{
//Convercion = 0b00100101;
PORTC = 0b00010000; //habilito
PORTD = 0b11101100; //NEW
PORTC = 0b00010001;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//3 ya
if (d == 3)
{
//Convercion = 0b00110101;
PORTC = 0b00010000; //habilito
PORTD = 0b01111100; //NEW
PORTC = 0b00010001;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//4 ya
if (d == 4)
{
//Convercion = 0b01000101;
PORTC = 0b00010000; //habilito
PORTD = 0b01011000; //NEW
PORTC = 0b00010101;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//5 ya
if (d == 5)
{
//Convercion = 0b01010101;
PORTC = 0b00010000; //habilito
PORTD = 0b01111100; //NEW
PORTC = 0b00010100;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//6 ya
if (d == 6)
{
//Convercion = 0b01100101;
PORTC = 0b00010000; //habilito
PORTD = 0b11111100; //NEW
PORTC = 0b00010100;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//7 ya
if (d == 7)
{
//Convercion = 0b01110101;
PORTC = 0b00010000; //habilito
PORTD = 0b01010100; //NEW
PORTC = 0b00010001;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//8 ya
if (d == 8)
{
//Convercion = 0b10000101;
PORTC = 0b00010000; //habilito
PORTD = 0b11111100; //NEW
PORTC = 0b00010101;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//9 ya
if (d == 9)
{
//Convercion = 0b10010101;
PORTC = 0b00010000; //habilito
PORTD = 0b01011100; //NEW
PORTC = 0b00010101;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
//0 ya
if (d == 0)
{
//Convercion = 0b00000101;
PORTC = 0b00010000; //habilito
PORTD = 0b11110100; //NEW
PORTC = 0b00010101;
//PORTB = 0b01000000;
//PORTD = 0b00000000; //apago
//PORTC = 0b00000000; //desabilito
}
aux++;
cont7SEG = 0;
}
if (cont7SEG == 0)
{
estado = 3;
}
break;

case 3: //Manejo digito 3

if (cont7SEG == 2 && aux == 3) { //2 ms


PORTC = 0b00000000;
PORTD = 0b00000000;
//PORTB = 0b00000000;
if (c == 1)
{
//Convercion = 0b00010101;
PORTC = 0b00100000; //habilito
PORTD = 0b00010000; //NEW
PORTC = 0b00100001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//2 ya
if (c == 2)
{
//Convercion = 0b00100101;
PORTC = 0b00100000; //habilito
PORTD = 0b10101100; //NEW
PORTC = 0b00100001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//3 ya
if (c == 3)
{
//Convercion = 0b00110101;
PORTC = 0b00100000; //habilito
PORTD = 0b00111100; //NEW
PORTC = 0b00100001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//4 ya
if (c == 4)
{
//Convercion = 0b01000101;
PORTC = 0b00100000; //habilito
PORTD = 0b00011000; //NEW
PORTC = 0b00100101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//5 ya
if (c == 5)
{
//Convercion = 0b01010101;
PORTC = 0b00100000; //habilito
PORTD = 0b00111100; //NEW
PORTC = 0b00100100;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//6 ya
if (c == 6)
{
//Convercion = 0b01100101;
PORTC = 0b00100000; //habilito
PORTD = 0b10111100; //NEW
PORTC = 0b00100100;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//7 ya
if (c == 7)
{
//Convercion = 0b01110101;
PORTC = 0b00100000; //habilito
PORTD = 0b00010100; //NEW
PORTC = 0b00100001;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//8 ya
if (c == 8)
{
//Convercion = 0b10000101;
PORTC = 0b00100000; //habilito
PORTD = 0b10111100; //NEW
PORTC = 0b00100101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//9 ya
if (c == 9)
{
//Convercion = 0b10010101;
PORTC = 0b00100000; //habilito
PORTD = 0b00011100; //NEW
PORTC = 0b00100101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
//0 ya
if (c == 0)
{
//Convercion = 0b00000101;
PORTC = 0b00100000; //habilito
PORTD = 0b10110100; //NEW
PORTC = 0b00100101;
//PORTB = 0b01000000;
//PORTB = 0b00000000; //apago
//PORTD = 0b00000000; //desabilito
}
aux = 1;
cont7SEG = 0;
}
if (cont7SEG == 0)
{
estado = 0;
}
break;

default:
estado = 0;
break;
}
}
}

También podría gustarte