找回密码
 立即注册

QQ登录

只需一步,快速开始

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

16个LED的灭着移动(c语言定时器T0)

[复制链接]
ID:70976 发表于 2014-12-27 19:08 | 显示全部楼层 |阅读模式
  1. ;张培            QQ:
  2. ;本程序实现16个LED的灭着移动  */
  3. #include  <reg51.h>
  4. #define uchar  unsigned  char
  5. #define  unit   unsigned  int
  6. bit     BT0;//定义20MS时间标志位
  7. main()
  8. {
  9.   unit   a,b,timecount;  
  10.   TMOD=0X01;//T0工作方式1
  11.   TH0=0X0B1;
  12.   TL0=0X0E0;
  13.   TR0=1;//开启T0
  14.   EA=1;//开启总中断
  15.   ET0=1;//开启T0中断
  16.   timecount=25;
  17.   a=0xfe;  
  18.   while (1)
  19.    {      
  20.              P2=a;
  21.     if (BT0==1)      
  22.             {  BT0=0;
  23.             if (timecount==0)//如果时间到0.5S往下执行,否则timecount--  
  24.                  {      
  25.           timecount=25;
  26.           a=a<<1;
  27.                    a=a|0x01;
  28.                    P2=a;      
  29.         if (P2==0Xff)//如果P2=FF把A的高八位给B
  30.            { b=a;
  31.              b=b/256;
  32.           P3=b;
  33.          if (P3==0xff)//如果P3=FF,把A赋FE返回
  34.              {a=0xfe;}
  35.                        }
  36.     }              
  37.       else
  38.                {timecount--;}  
  39.                     }
  40.   }
  41.    
  42. }
  43. void T0SER(void) interrupt 1 using 1//T0重新赋初植
  44. {
  45.   TH0=0X0B1;
  46.   TL0=0X0E0;
  47.   BT0=1;
  48.    
  49. }
复制代码


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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