标题: 单片机10秒的秒表程序 [打印本页]

作者: dongyuxp    时间: 2016-5-16 19:21
标题: 单片机10秒的秒表程序
10秒的秒表 源程序,分析、学习使用
转自:http://www.51hei.com/mcu/2184.html


  1. #include <reg51.h>
  2. unsigned char code seg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} //数码管码表
  3. unsigned char code tab[]={0xfe,0xfd};                                                                     //数码管位选
  4. unsigned char cnt=0;                                                                                               //位选变量
  5. unsigned char deta=0,sec=0;                                                                                  //0.01秒变量,和秒变量
  6. sbit stop=P3^3;                                                                                                        //暂停键
  7. void init()                                                                                                                 //定时初始化
  8. {
  9. TMOD=0x11;
  10. TH1=0xd8;
  11. TL1=0xf0;
  12. TR1=1;
  13. TH0=0xfc;
  14. TL0=0x18;
  15. TR0=1;
  16. ET1=1;
  17. ET0=1;
  18. EA=1;
  19. }
  20. void time10ms()interrupt 3
  21. {
  22. TH1=0xd8;
  23. TL1=0xf0;
  24. deta++;
  25. }

  26. void show()interrupt 1  //扫描显示2位数码管
  27. {
  28. TH0=0xfc;
  29. TL0=0x18;
  30. ++cnt;
  31. if(cnt>1)cnt=0;
  32. switch (cnt)
  33. {
  34. case 0:  P0=seg7[sec%10];P2=tab[0];break;
  35. case 1:  P0=seg7[sec/10];P2=tab[1];break;
  36. default:break;
  37. }
  38. }
  39. void showtime()     //时间显示
  40. {
  41.   if((deta>10)&&stop){sec++;deta=0;}    //如果P3^3 不按下,则为高电平,不暂停时间。
  42.   if(sec==99)sec=0;
  43.   }
  44.   void main()
  45.   {
  46.   init();
  47.   while(1)
  48.   {
  49.   showtime();
  50.   }
  51.   }
复制代码







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1