Documentos de Académico
Documentos de Profesional
Documentos de Cultura
t6 RPineda
t6 RPineda
CONTROL EMBEBIDO
Tarea Nro. 6
Periodo: 2021A
Diseño:
Directos al microcontrolador:
8 Bits de datos
8 Bits libres
1 Conversor AD
Asignación de recursos:
Puerto B:
8 bits de datos
Puerto D:
PD0 RXD
PD1 TXD
Puerto A:
PA0 Conversor AD
Puerto C:
int main(void)
{
DDRA=0b11111110;
DDRC=255;
DDRC=255;
//------------Comunicación------------------------
UBRR0=51;
UCSR0A=0;
UCSR0B=152;
UCSR0C=6;
//------------ADconver----------------------------
ADMUX=0b01100000;
DIDR0=0b00000001;
//--------------Variables-------------------------
int tempo=0;
int contra=0;
int Ntank=0;
int cero=0;
while (1)
{
Ntank=FAD();
leds(Ntank);
tempo=0b11111010;
PORTC=tempo;
entrada();
tempo=0b11110010;
PORTC=tempo;
contra=PINB;
tempo=0b11111011;
PORTC=tempo;
tempo=0b11111001;
PORTC=tempo;
salida ();
display(Ntank);
tempo=0b11111001;
PORTC=tempo;
//--------------Transmisión-------------------------
void envio_p(unsigned char dato)
{
while(!(UCSR0A&(1<<5)));
UDR0 = dato;
}
//--------------ConversorAD-------------------------
int FAD()
{
int tempo56;
ADCSRA=0b11000110;
_delay_ms(5);
tempo56=ADCH;
return tempo56;
}
//-----------Leds_del_tanque-------------------------
void leds(int Ntank)
{
int tempo=0;
int valh=0;
if (Ntank<=33)
{
tempo=1;
}
if (Ntank<=64)
{
if(Ntank>33)
{
tempo=2;
}
}
if (Ntank<=97)
{
if(Ntank>64)
{
tempo=3;
}
}
if (Ntank<=125)
{
if(Ntank>97)
{
tempo=4;
}
}
if (Ntank<=161)
{
if(Ntank>125)
{
tempo=5;
}
}
if (Ntank<=192)
{
if(Ntank>161)
{
tempo=6;
}
}
if (Ntank<=225)
{
if(Ntank>192)
{
tempo=7;
}
}
if (Ntank<=255)
{
if(Ntank>225)
{tempo=8;
}
}
switch (tempo){
case 1: valh=0B01111111;
break;
case 2: valh=0B00111111;
break;
case 3: valh= 0B00011111;
break;
case 4: valh=0B00001111;
break;
case 5: valh=0B00000111;
break;
case 6: valh=0B00000011;
break;
case 7: valh=0B00000001;
break;
case 8: valh=0B00000000;
break;
}
tempo=0b11111000;
PORTC=tempo;
salida();
PORTB=valh;
tempo=0b11110000;
PORTC=tempo;
tempo=0b11111000;
PORTC=tempo;
}