Documentos de Académico
Documentos de Profesional
Documentos de Cultura
* GccApplication2.c
*
* Created: 20/03/2019 11:07:21 a. m.
* Author : Julian Guerrero y Alejandro Ramirez
*/
//----------------Defino librerias y frecuencia------------------------
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 1000000UL //Defino frecuencia CPU
int seg = 0;
int tx = 0;
int adc = 0;
int est = 0;
int main(void)
{
// Declaro puertos de entrada o salida, son 8 bits, los 0 son entradas los 1 son
salida
DDRC = 0b01111101; //Com digitos 1, 2, 3 y ADC read
DDRD = 0b11111111; //7 segmentos
DDRB = 0b01111101; //Led
PORTC = 0b00000000;
PORTD = 0b00000000;
PORTB = 0b00000000;
//-----------------------USART - DEFINICION-------------------------//
//-----------------------Timer - Prescaler-------------------------//
TCCR0A = 0b01000010;
TCCR0A = 0b01000010;
TCCR0B = (1 << CS02)|(1 << CS00); // Prescalizador en 1024
TIMSK0 = 0b00000010;
TCCR2B = (1<<CS22)|(1<<CS21)|(1<<CS20); //Prescalizador en 1024
TCNT2 = 252; //cuenta a 3 ms PD0 A PB6
OCR0A = 3;
sei();
//-----------------------ADC - DEFINICION-------------------------//
int estado = 0;
unsigned int temp = 0;
uint16_t cont = 0;
int u = 0;
int d = 0;
int c = 0;
int aux = 1; //Auxiliar para elegir cual de los 3 digitos se prende
int aux2 = 0; //Auxilar para contar 1 seg
int aux3 = 0; //Auxiliar para encender y apagar led
int bandera = 0;
int bandera2 = 0;
int contADC = 0;
int cont7SEG = 0;
int contled = 0;
//int aux2 = 0;
int Enviar = 0;
int Recivir = 0;
//int ReinicioTimer = 254;
//int LED = 0;
//int LED1 = 0;
char Convercion = 0;
//UDR0 = 0b01000101;
while (1)
{
/*while(TCNT0 != 255); //5ms
contADC++;
cont7SEG++;
contled++;
Enviar ++;
Recivir ++;
TCNT0 = 252;*/
switch (est)
{
case 0:
////////////////////////////////////////////////////////////////////////////////////
///////////////////////7
//if (Enviar >= 10)
//{
aux2++;
if (aux2 == 1)
{
if (u == 1)
{
Convercion = 0b11100001;
}
if (u == 2)
{
Convercion = 0b11100010;
}
if (u == 3)
{
Convercion = 0b11100011;
}
if (u == 4)
{
Convercion = 0b11100100;
}
if (u == 5)
{
Convercion = 0b11100101;
}
if (u == 6)
{
Convercion = 0b11100110;
}
if (u == 7)
{
Convercion = 0b11100111;
}
if (u == 8)
{
Convercion = 0b11101000;
}
if (u == 9)
{
Convercion = 0b11101001;
}
if (u == 0)
{
Convercion = 0b11100000;
}
UDR0 = Convercion;// 0b11100000;// //Envia
el codigo UDR0
UCSR0B = 0b00001000;// Activo trans
while(!(UCSR0A&(1<<5))); //Mientras el registro
esta lleno, espera
//UCSR0B = 0b00001000;
//while(!(UCSR0A&(1<<5))); //Mientras el
registro esta lleno, espera
//UDR0 = 0b11110000;
//UDR0 = 0b11110000;
//UCSR0A = 0b00000000;// Apago trans
//UCSR0B = 0b00000000;
Enviar = 0;
aux2++;
}
if (aux2 == 2)
{
if (d == 1)
{
Convercion = 0b10100001;
}
if (d == 2)
{
Convercion = 0b10100010;
}
if (d == 3)
{
Convercion = 0b10100011;
}
if (d == 4)
{
Convercion = 0b10100100;
}
if (d == 5)
{
Convercion = 0b10100101;
}
if (d == 6)
{
Convercion = 0b10100110;
}
if (d == 7)
{
Convercion = 0b10100111;
}
if (d == 8)
{
Convercion = 0b10101000;
}
if (d == 9)
{
Convercion = 0b10101001;
}
if (d == 0)
{
Convercion = 0b10100000;
}
UDR0 = Convercion; //0b10100000; //Envia el
codigo UDR0
//UCSR0B = 0b00001000;// Activo trans
//PORTB = 0b00000100;
//while(!(UCSR0A&(1<<5))); //Mientras el
registro esta lleno, espera
//UCSR0B = 0b00001000;
while(!(UCSR0A&(1<<5))); //Mientras el registro
esta lleno, espera
//UDR0 = 0b11110000;
//UCSR0A = 0b00000000;// Apago trans
//UCSR0B = 0b00000000;
Enviar = 0;
aux2++;
}
if (aux2 == 3)
{
if (c == 1)
{
Convercion = 0b10100001;
}
if (c == 2)
{
Convercion = 0b10100010;
}
if (c == 3)
{
Convercion = 0b10100011;
}
if (c == 4)
{
Convercion = 0b10100100;
}
if (c == 5)
{
Convercion = 0b10100101;
}
if (c == 6)
{
Convercion = 0b10100110;
}
if (c == 7)
{
Convercion = 0b10100111;
}
if (c == 8)
{
Convercion = 0b10101000;
}
if (c == 9)
{
Convercion = 0b10101001;
}
if (c == 0)
{
Convercion = 0b10100000;
}
//UDR0 = 0b10010000;//Convercion;
//Envia el codigo UDR0
//UCSR0B = 0b00001000;// Activo trans
//PORTB = 0b00000100;
//while(!(UCSR0A&(1<<5))); //Mientras el
registro esta lleno, espera
//UCSR0B = 0b00001000;
//while(!(UCSR0A&(1<<5))); //Mientras el registro
esta lleno, espera
UDR0 = Convercion;//0b10100000;
Enviar = 0;
aux2 = 0;
//UCSR0A = 0b00000000;// Apago trans
UCSR0B = 0b00000000;
//UCSR0B = 0b00000000;
}
//}
//UCSR0B = 0b00000000;
////////////////////////////////////////////////////////////////////////////////////
///////////////////////
//estado = 1;
//cont7SEG = 0;
break;
/*}
if (cont7SEG == 0)
{
estado = 4;
}*/
break;
//estado = 0;
//break;
case 4:
default:
break;
}
}
}
ISR(TIMER0_COMPA_vect){
seg++;
tx++;
adc++;
if (seg == 2)
{
est = 1;
}
if (seg == 3)
{
est = 2;
}
if (seg == 4)
{
est = 3;
seg=0;
}
if (tx == 10)
{
est = 0;
tx = 0;
}
if (adc == 80)
{
est = 4;
adc = 0;
seg--;
}
}