#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint i=0;
uchar ge, shi, bai;
uint count=777; //脉搏次数
uint t;
uchar code disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit PA=P0^0;
sbit PB=P0^1;
sbit PC=P0^2;
sbit wela=P3^6;
sbit BELL=P0^3;
sbit key=P2^4;
uchar LedOut[3];
sbit P3_2=P3^2;
//INT0中断函数
void INT_0() interrupt 0
{
count++;
}//延时函数
void Delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//显示函数
void display(uchar bai,uchar shi,uchar ge)
{
wela=1;
P1=disp[bai];
wela=0;
P2=0xfb;
Delayms(5);
wela=1;
P1=disp[shi];
wela=0;
P2=0xfd;
Delayms(5);
wela=1;
P1=disp[ge];
wela=0;
P2=0xfe;
Delayms(5);
}
//T0中断函数
void T0_timer() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
t++;
if(t==12000)
{ t=0;
EA=0;
if(count<60)
{
PA=0;
BELL=0;
}
else if(count>120)
{
PB=0;
BELL=0;
}
else
PC=0;
EA=1;
TR0=0;
ET0=0;
EX0=0;
}
}
//T1中断函数
void T1_timer() interrupt 3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
bai=count/100;
shi=(count%100)/10;
ge=(count%100)%10;
display(bai,shi,ge) ;
}
//初始化函数
void init()
{
t=0;
TMOD=0x11;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET1=1;
TR1=1;
ET0=1;
TR0=1;
IT0=1;
EX0=0;
}
//键盘处理函数
void keyscan()
{
if(key==0)
{
Delayms(10);
if(key==0)
{
init();
EX0=1;
count=0;
wela=0;
BELL=1;
P0=0xff;
}
while(!key);
}
}
//主程序
void main()
{
init();
TR0=0;
ET0=0;
EX0=0;
while(1)
{
keyscan();
}
}
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar i=0xfe; //显示位选初值
uchar ge, shi, bai;
uint count=0; //脉搏次数
uint t;
uchar disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
sbit PA=P0^0;
sbit PB=P0^1;
sbit PC=P0^2;
sbit key=P2^4;
sbit BELL=P0^3;
sbit P3_2=P3^2;
//延时函数
void Delayms(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//显示函数
void display(uchar i,uchar number)
{
P2=i;
P1=disp[number];
}
//INT0中断函数
void INT_0() interrupt 0
{
count++;
}
//T0中断函数
void T0_timer() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
t++;
if(t==12000)
{
EA=0;
t=0;
if(count<60)
{
PA=0;
BELL=0;
}
else if(count>120)
{
PB=0;
BELL=0;
}
else
PC=0;
EA=1;
TR0=0;
ET0=0;
EX0=0;
}
}
//T1中断函数
void T1_timer() interrupt 3
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
bai=count/100;
shi=(count%100)/10;
ge=(count%100)%10;
switch(i)
{
case 0xfe:display(i,ge);break;
case 0xfd:display(i,shi);break;
case 0xfb:display(i,bai);break;
}
i=_crol_(i,1);
if(i==0xf7)
i=0xfe;
}
//初始化函数
void init()
{
t=0;
TMOD=0x11;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET1=1;
TR1=1;
TR0=1;
ET0=1;
IT0=1;
EX0=0;
}
//键盘处理函数
void keyscan()
{
if(key==0)
{
Delayms(10);
if(key==0)
{
//TR0=1;
//ET0=1;
//EX0=1;
init();
EX0=1;
count=0;
BELL=1;
P0=0xff;
}
while(!key);
}
}
//主程序
void main()
{
//P3_2=0;
init();
TR0=0;
ET0=0;
EX0=0;
//P2_3=0;
while(1)
{
keyscan();
}
}
为什么第一个程序不可以实现要求 第二种可以
|