51单片机 芯片是89C52 实现秒表计时器!急急……26
发布网友
发布时间:2023-09-14 13:43
我来回答
共1个回答
热心网友
时间:2024-12-03 10:58
#include<reg52.h>
unsigned char x,y;
sbit H=P3^6;
unsigned char D[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //用于数字0~9的显示数据表
void delay(unsigned char a){ //延时程序
unsigned char i;
while(a--)
for(i=115;i>0;i--);
}
void display(unsigned char x) //显示2位数字
{
P2=0x7f; //使能低位数码管
P0=D[x%10]; //显示低位
delay(5); //延时
P2=0xbf; //使能高位数码管
P0=D[x/10]; //显示高位
delay(5); //延时
}
void main(){
x=y=0;
EA=1; //开总中断
EX0=1; //开外部中断0
IT0=1; //INT0为下降沿中断
ET0=1; //开定时器0中断
TMOD=0X01; //设定T0工作模式
TH0=(65536-50000)/256; //设定T0初值
TL0=(65536-50000)%256;
TR0=1; //启动T0
while(1) {
display(x); //刷新显示X
if(x==59) H=~H; //x=59时,将P3.6取反
}
}
void int0() interrupt 1
{
y++;
while(y==20) //Y记满20后x+1
{
y=0;
x++;
if(x==60)
x=0;
}
TH0=(65536-50000)/256; //T0重装装初值
TL0=(65536-50000)%256; }
void it0() interrupt 0 using 1
{ ET0=~ET0;} //关定时器中断