找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2408|回复: 0
收起左侧

八位数码管时钟 利用单片机INT0,INT1两个引脚的中断程序

[复制链接]
ID:277014 发表于 2018-1-17 20:33 | 显示全部楼层 |阅读模式
八位数码管时钟。利用 INT0,INT1两个引脚的中断程序
  1. #include<reg51.h>
  2. sbit led=P1^0;
  3. sbit led1=P1^1;
  4. sbit led2=P1^2;
  5. sbit led3=P1^3;
  6. sbit led4=P1^4;
  7. sbit led5=P1^5;
  8. sbit led6=P1^6;
  9. sbit led7=P1^7;
  10. unsigned char t[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  11. unsigned int h,m,s;
  12. void ys()
  13. {
  14.         int k;
  15.         for(k=125;k>0;k--);

  16. }
  17. void js()
  18. {
  19.         s++;
  20.         if(s==60)
  21.         {
  22.                 s=0;
  23.                 m++;
  24.                 if(m==60)
  25.                 {
  26.                         m=0;
  27.                         h++;
  28.                         if(h==24)
  29.                         {
  30.                                 h=0;
  31.                         }
  32.                 }
  33.         }
  34. }
  35. void xs()
  36. {
  37.         led=1;
  38.         P2=t[h/10];
  39.         ys();
  40.         led=0;
  41.       
  42.         led1=1;
  43.         P2=t[h%10];
  44.         ys();
  45.         led1=0;
  46.       
  47.         led2=1;
  48.         P2=0xbf;
  49.         ys();
  50.         led2=0;
  51.       
  52.         led3=1;
  53.         P2=t[m/10];
  54.         ys();
  55.         led3=0;
  56.       
  57.         led4=1;
  58.         P2=t[m%10];
  59.         ys();
  60.         led4=0;
  61.       
  62.         led5=1;
  63.         P2=0xbf;
  64.         ys();
  65.         led5=0;
  66.       
  67.         led6=1;
  68.         P2=t[s/10];
  69.         ys();
  70.         led6=0;
  71.       
  72.         led7=1;
  73.         P2=t[s%10];
  74.         ys();
  75.         led7=0;
  76.       
  77. }

  78. void main()
  79. {
  80.         EX0=1;
  81.         EX1=1;
  82.         EA=1;
  83.         while(1)
  84.         {
  85.                 xs();
  86.                 js();
  87.         }
  88. }

  89. void w() interrupt 0
  90. {
  91.         while(INT0==0);
  92.         h=0;m=0;s=0;

  93. }

  94. void w1() interrupt 2
  95. {
  96.         while(INT1==0);
  97.         h--;if(h==0) h=24;

  98. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表