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;

}

}

}

si(núm!=0)

{

si(s2==0)

{

retraso(5);

if(s2==0)

{

if(num==1) p>

{

miao1;

if(miao1==60)

miao1=0;

}

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();

}

}

}

}

}

void setdisplay() //Configura la pantalla en modo

{

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;

}

}

}

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;

}

}