找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用定时器中断实现数码管0-99显示(C编写)

[复制链接]
ID:70976 发表于 2014-12-27 19:06 | 显示全部楼层 |阅读模式
  1. /*6月28日        星期一
  2. ;张培
  3. ;本程序用中断实现数码管0-99显示 */
  4. #include <reg51.h>
  5. #define  unit   unsigned  int
  6. #define  uchar  unsigned  char
  7. bit      BT0;
  8. void  delay(unit n);
  9. main()
  10. {
  11.   unit b[10]={0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0x0F8,0x80,0x90};
  12.   unit a,d,timecount;
  13.   uchar  x;
  14.   TMOD=0X01;//T0工作方式1
  15.   TH0=0X0B1;
  16.   TL0=0X0E0;
  17.   TR0=1;//开启T0
  18.   EA=1;//开启总中断
  19.   ET0=1;//开启T0中断
  20.   timecount=25;
  21.   
  22.   d=10;
  23.   a=0;
  24.   while (1)
  25.    {
  26.   
  27.    x=a/d;//把A的十位分离
  28.       P2=b[x];//查数组表
  29.    P3=0X01;//开十位片选
  30.       delay(1);//动态扫描
  31.    P3=0X00;//关十位片选
  32.    x=a%d;//把A的个位分离
  33.    P2=b[x];//查数组表
  34.    P3=0X02;//开个位片选
  35.    delay(1);//动态扫描
  36.    P3=0X00;//关十位片选
  37.    
  38.   if (BT0==1)//等待中断的到来
  39.         BT0=1;
  40.     if (timecount==0)//如果到了0.5S,A加1
  41.        {a=a+1;
  42.               timecount=25;
  43.     }
  44.     else
  45.     timecount--;
  46. }

  47. }
  48. void  delay(unit n)//延时程序
  49. { unit  y;
  50.    unit  j;
  51.    for (y=n;y>0;y--)
  52.       for(j=5000;j>0;j--)
  53.    {;}
  54.   }void T0SER (void) interrupt 1 using 1//T0重新赋初植
  55. {
  56.   TH0=0X0B1;
  57.   TL0=0X0E0;
  58.   BT0=1;
  59.    
  60. }
复制代码


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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