|
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#define uint unsigned int
#define uchar unsigned char
#define led P2
sbit buzz=P1^5;
sbit lsa=P2^2;
sbit lsb=P2^3;
sbit lsc=P2^4;
sbit key1=P3^2;
sbit key2=P3^3;
sbit led1=P2^1;
uchar code tab_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f/*,0x77,0x7c,0x39,0x5e,0x79,0x71*/};
uchar display[8];
uint i,t0,t1,t2;//time
int count1,count2,flag_led;//infrared
void display_();
void display_pros();
void infrared_control();
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer_init()
{
TMOD=0x11;
TH0=0x3c;//(65536-50000)/256;
TL0=0xb0;//(65536-50000)%256;
ET0=1;
TR0=1;
}
void ex_init()
{
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void init()
{
EA=1;
led=0xff;
}
void main()
{
timer_init();
ex_init();
init();
while(1)
{
infrared_control();
// display_pros();
// display_();
}
}
void infrared_control()
{
if(flag_led>0)
{
led=0x00;
}
if(flag_led<=0)
{
led=0xff;
}
}
void int0() interrupt 0
{
count1++;
flag_led++;
if(count1==60)
{
count1=0;
}
buzz=~buzz;
delay(1);
}
void int1() interrupt 2
{
count1--;
flag_led--;
buzz=~buzz;
delay(1);
}
void timer0() interrupt 1
{
TH0=0x3c;//(65536-50000)/256;
TL0=0xb0;//(65536-50000)%256;
i++;
if(i==20)
{
i=0;
t0++;
if(t0==60)
{
t0=0;
t1++;
if(t1==60)
{
t1=0;
t2++;
if(t2==24)
{
t2=0;
}
}
}
}
}
void display_()
{
uchar j;
for(j=0;j<8;j++)
{
switch(j)
{
case 0:
lsc=0;lsb=0;lsa=0;break;
// P0=tab_duan[count1%10];
case 1:
lsc=0;lsb=0;lsa=1;break;
// P0=tab_duan[count1/10];
case 2:
lsc=0;lsb=1;lsa=0; break;
// P0=tab_duan[t0%10];
case 3:
lsc=0;lsb=1;lsa=1;break;
// P0=tab_duan[t0/10];
case 4:
lsc=1;lsb=0;lsa=0;break;
// P0=tab_duan[t1%10];
case 5:
lsc=1;lsb=0;lsa=1;break;
// P0=tab_duan[t1/10];
case 6:
lsc=1;lsb=1;lsa=0;break;
// P0=tab_duan[t2%10];
case 7:
lsc=1;lsb=1;lsa=1;break;
/// P0=tab_duan[t2/10];
}
P0=display[j];
delay(1);
P0=0x00;
}
}
void display_pros()
{
display[0]=tab_duan[count1%10];
display[1]=tab_duan[count1/10];
display[2]=tab_duan[t0%10];
display[3]=tab_duan[t0/10];
display[4]=tab_duan[t1%10];
display[5]=tab_duan[t1/10];
display[6]=tab_duan[t2%10];
display[7]=tab_duan[t2%10];
}
|
|