MCU: programa de despertador
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
sbit wela=P2^ 7;
sbit dula=P2^6;
sbit s1=P3^4; //Selección de modo
sbit s2=P3^5;/ / Subir
sbit s3=P3^6; //Bajar
sbit s4=P3^7 //Elegir si desea activar la alarma
sbit beep=P2^3;
uchar tt, num, t1, settime, bi
uchar flag; // a bit
int fen, miao , fen1=0, miao1=10;
tabla de códigos uchar[]={
0x3f, 0x06, 0x5b, 0x4f,
0x66, 0x6d, 0x7d , 0x07,
0x7f, 0x6f, 0x77, 0x7c,
0x39, 0x5e, 0x79, 0x71}
uchar dis[]={0x40, 0x40; , 0x40, 0x40, 0x40, 0x40};
visualización de tiempo nulo();
visualización de clave nula();
void setdisplay();
void display1();
void delay(uchar z)
{
uchar i , j;
for(i=125;igt;0;i--)
for(j=z;jgt;0;j--);
}
void warm()
{
if(bi==1)
{
bip=0;
TR1=1;
}
}
void init()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)6;
TH1=(65536-50000)/256;
TL1=(65536-50000)6;
EA=1;
ET0=1
ET1=1
TR0=1
}
anulación de teclas()
{
si(s4==0)
{
retraso(5);
{
si ( s4==0)
{
mientras(!s4);
bi;
if(bi==2)
{
bi=0;
}
}
}
}
if(s1==0)
{
retraso(5);
if(s1==0)
p>{
mientras(!s1);
núm;<
/p>
if(num==3)
{
num=0;
}
} p>
}
si(núm!=0)
{
si(s2==0)
{
retraso(5);
if(s2==0)
{
if(num==1) p> p>
{
miao1;
if(miao1==60)
miao1=0;
} p>
if(num==2)
{
fen1;
if(fen1==60)
fen1=0;
}
mientras(!s2)
{
keydisplay();
}
}
}
si(s3==0)
{
retraso( 5) ;
si(s3==0)
{
si(num==1)
{
miao1--;
if(miao1==-1)
miao1=59;
}
si (núm ==2)
{
fen1--;
if(fen1==-1)
fen1=59 ;
}
mientras(!s3)
{
keydisplay();
} p>
}
}
}
}
void setdisplay() //Configura la pantalla en modo p>
{
dis[0]=0x40;
dis[1]=0x40;
dis[2]=tabla[0] ;
dis[3]=tabla[núm];
dis[4]=0x40;
dis[5]=0x40;
display();
}
void keydisplay() //Visualización al sumar y restar presionando teclas
{
if( (flag==1)amp;amp;(num==2))
{
dis[0]=table[fen1/10]amp;0x00;
dis[1]=table[fen1]amp;0x00;
}
else
{
dis[ 0]=tabla[fen1/10];
dis[1]=tabla[fen1];
}
dis[2]= 0x40;
if((bandera==1)amp;amp;(num==1))
{
dis[3]=tabla[ miao1/10 ]amp;0x00;
dis[4]=table[miao1]amp;0x00;
}
else
{
dis[3]=tabla[miao1/10];
dis[4]=tabla[miao1];
}
dis[5]=0x40;
dis
play();
}
void display() //Visualización dinámica básica
{
dula=1; uno
P0=dis[0];
dula=0;
wela=1;
P0=0xfe;< / p>
wela=0;
delay(1);
dula=1; //los dos
P0=dis[1] ;
dula=0;
wela=1;
P0=0xfd;
wela=0;
retraso(1);
dula=1; //los tres
P0=dis[2];
dula=0;
wela=1;
P0=0xfb;
wela=0;
retraso(1);
dula = 1; //los cuatro
P0=dis[3];
dula=0;
wela=1;
P0 =0xf7;
wela=0;
retraso(1);
dula=1; dis[4];
dula=0;
wela=1;
P0=0xef;
wela=0; /p>
retraso(1);
dula=1; //los seis
P0=dis[5];
wela=1;
P0=0xdf
wela=0
retraso(1);
}
void timedisplay()
{
dis[0]=table[fen/10];
dis [1]=tabla[fen];
dis[2]=0x40;
dis[3]=tabla[miao/10];
dis [4]=table[miao];
dis[5]=0x40;
display();
}
vacío main()
{
init();
while(1)
{
escaneo de teclas ( );
if(num!=0)
{
keydisplay();
}
if(num==0)
{
timedisplay();
}
}
}
void timer0() interrupción 1
{
TH0=(65536-50000)/256;
TL0=(65536 - 50000)6;
tt;
if(tt==20)
{
tt=0;
miao;
if(miao==60)
{
miao=0;
fen;
p>
si(f
es==60)
{
fen=0;
}
}
} p>
if(!numamp;amp;fen1==fenamp;amp;miao1==miao)
{
caliente();
}
establecer hora;
if(establecer hora==10)
{
flag=1;
}
if(settime==20)
{
settime=0;
flag=0;
}
}
void timer1() interrupción 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)6;
t1;
if(t1==60)
{
t1=0;
bip=1;
}
}