仪器社区

51单片机 芯片是89C52 实现秒表计时器!急急……

qwertlrh 2017-11-26
51单片机 芯片是89C52 实现秒表计时器 一到59秒循环 到59秒可实现风铃器发声 可实现中断 按一下可暂停 再按一下 可继续 以下是程序 求每一项的解释注明 因为我看不懂什么意思 很急 #includeunsigned char x,y;sbit H=P3^6;unsigned char D[10]={0xc...
评论
全部评论
豆豆酱999959
#include
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;} //关定时器中断
8 0 2017-11-26 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论