找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机定时器实现流水灯代码

[复制链接]
ID:561061 发表于 2019-6-14 16:23 | 显示全部楼层 |阅读模式
定时器实现流水灯

单片机源程序如下:
  1.    //*********************************************************************************
  2. //功能:查询方式实现间隔1s的流水灯程序。8个发光二极管依次顺序点亮,采用循环移位
  3. //函数_crol_(m,1)实现
  4. //实验箱上D1区J52接P1
  5. //*********************************************************************************
  6. #include<reg51.h>                                                /*包含头文件REG51.H*/
  7. #include <intrins.h>                                        /*包含函数_crol_(m,1)的头文件*/
  8. #define uchar unsigned char
  9. #define LED P1                                                /*定义8个LED接至P1口*/
  10. #define Count 50000                                        /* T1方式1定时50ms的计数值*/
  11. uchar Temp1, Temp2;
  12. void Delay1s();                                                //1s延时函数声明
  13. void main()                                                        //主程序
  14. {
  15.         TMOD=0x10;                                                //设置T1为定时器、方式1
  16.         LED=0xff;                                                //8个LED全部熄灭
  17.         Temp1=0xfe;                                                //点亮最上面的LED
  18.         LED=Temp1;
  19.         while(1)
  20.         {
  21.                 Delay1s();                                        //调用1s延时函数
  22.                 Temp2=_crol_(Temp1,1);                 //采用_crol_(m,1)实现单只LED从上到下依次点亮
  23.                 Temp1=Temp2;
  24.                 LED=Temp2;
  25.         }
  26. }
  27. //*********************************************************************************
  28. //函数名:Delay1s
  29. //函数功能:利用T1定时、方式1实现1s延时,采用查询方式实现
  30. //*********************************************************************************
  31. void Delay1s()
  32. {
  33.         uchar i;
  34.         for(i=0;i<0x14;i++)                                        //设置20次循环次数
  35.         {            
  36.                 TH1=(65536-Count)/256;                 //T1的高8位初值
  37.                 TL1=(65536-Count)%256;                //T1的低8位初值
  38.                 TR1=1;                                                //启动T1
  39.                 while(!TF1);                                         //查询计数是否溢出,即定时50ms时间到了吗?
  40.                 TF1=0;                                                //50ms定时时间到,将T1溢出标志位TF1清零
  41.         }
  42. }
复制代码

所有资料51hei提供下载:
定时器实现流水灯.zip (61.82 KB, 下载次数: 25)


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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