我要发布
仪器网/ 仪器社区/ 计时器/ 51单片机 芯片是89C52 实现秒表计时器!急急……

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

qwertlrh    2017-11-26    计时器    浏览 581 次

51单片机 芯片是89C52 实现秒表计时器 一到59秒循环 到59秒可实现风铃器发声 可实现中断 按一下可暂停 再按一下 可继续 以下是程序 求每一项的解释注明 因为我看不懂什么意思 很急 #includeunsigned char x,y;sbit H=P3^6;unsigned char D[10]={0xc...

精彩问答
豆豆酱999959 发布日期:2017-11-26
#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;} //关定时器中断
最新主题
相关版块
我要评论
X您尚未登录
账号登录
X您尚未登录
手机动态密码登录
X您尚未登录
扫码登录
官方微信

仪器网微信服务号

扫码获取最新信息


仪器网官方订阅号

扫码获取最新信息

在线客服

咨询客服

在线客服
工作日:  9:00-18:00
联系客服 企业专属客服
电话客服:  400-822-6768
工作日:  9:00-18:00
订阅商机

仪采招微信公众号

采购信息一键获取海量商机轻松掌控