10秒的秒表程序,带暂停

#include <reg51.h>
unsigned char code seg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //数码管码表
unsigned char code tab[]={0xfe,0xfd};                                                                     //数码管位选
unsigned char cnt=0;                                                                                               //位选变量
unsigned char deta=0,sec=0;                                                                                  //0.01秒变量,和秒变量
sbit stop=P3^3;                                                                                                        //暂停键
void init()                                                                                                                 //定时初始化
{
TMOD=0x11;
TH1=0xd8;
TL1=0xf0;
TR1=1;
TH0=0xfc;
TL0=0x18;
TR0=1;
ET1=1;
ET0=1;
EA=1;
}
void time10ms()interrupt 3
{
TH1=0xd8;
TL1=0xf0;
deta++;
}

void show()interrupt 1  //扫描显示2位数码管
{
 TH0=0xfc;
 TL0=0x18;
 ++cnt;
 if(cnt>1)cnt=0;
 switch (cnt)
 {
 case 0:  P0=seg7[sec%10];P2=tab[0];break;
 case 1:  P0=seg7[sec/10];P2=tab[1];break;
 default:break;
 }
 }
 void showtime()     //时间显示
 {
  if((deta>10)&&stop){sec++;deta=0;}    //如果P3^3 不按下,则为高电平,不暂停时间。
  if(sec==99)sec=0;
  }
  void main()
  {
  init();
  while(1)
  {
  showtime();
  }
  }

永不止步步 发表于12-16 11:04 浏览65224次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:302267个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号