外部中断定时器0,数码管显示0~60正计时循环

#include
#define uchar unsigned char
//#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39 ,0x5e,0x79,0x71};
uchar shu,count1,flag;
void init()
{
flag=1;
wela=0;
P0=0xff;
dula=0;
P0=0x00;// 初始化关显示
shu=0;
count1=0;
TMOD=0x01;
TH0=(65536-36080)/256;
TL0=(65536-36080)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1; //定时器0开始计数
}
void delay(uchar xms)
{
char x,y;
for(x=xms;x>0;x–)
for(y=110;y>0;y–);
}
void display(uchar temp)
{
uchar shi,ge;
temp=shu;
shi=temp/10;
ge=temp%10;
if(flag==1)
{
P0=0xff; //消隐
wela=1;
P0=0x3e;//第一个数码管选中
wela=0;
dula=1;
P0=table[shi];
dula=0;
delay(1);

	P0=0xff;//消隐
	wela=1;
	P0=0x3d;//第二个数码管选中
	wela=0;
	dula=1;
	P0=table[ge];
	dula=0;
	delay(1);
}

}
void time0() interrupt 1
{
TH0=(65536-36080)/256;//数据重载
TL0=(65536-36080)%256;
count1++;
if(count1==20)
{
count1=0;
shu++;
flag=1;
if(shu>59)
{
shu=0;
flag=1;
flag=0;
}
}
}
void main()
{
init();
while(flag)
{
display(shu);
}
}
外部中断定时器0,数码管显示0~60正计时循环_第1张图片

你可能感兴趣的:(51单片机)