前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C51 单片机开发 LED 灯 1 秒切换一次状态

C51 单片机开发 LED 灯 1 秒切换一次状态

作者头像
码农UP2U
发布2024-05-29 18:32:48
610
发布2024-05-29 18:32:48
举报
文章被收录于专栏:码农UP2U码农UP2U

公众号文章同步阅读网址:www.netor0x86.com

闲话:达梦作为一款国产数据库要上市了…!据说大部分国产数据库都很难盈利,或者在盈利与亏损的边缘挣扎。达梦之所以盈利,据说是0几年在达梦最难的情况下,冯老板不采用开源技术,而是坚持技术原创!不知道是不是真的。

关于定时器/计数器的很多概念都都介绍完了,今天来写一段简单的代码吧!

0x01:1 秒钟切换一次的 LED 的状态

1 秒切换一次 LED 灯的状态,意思就是 1 秒钟让 LED 灯亮一次,一次就让它亮 1 秒。我们就完成这样一个功能吧。

完成这样的功能在之前的代码中好像搞过,用 STC-ISP 生成一段延时的代码,让 CPU 进行空转。

而这次,我们使用借助定时器/计数器来完成。

0x02:实现思路

要实现上面的功能,主要的工作就是配置定时器/计时器的寄存器,其实前面梳理了那么多关于定时器/计时器的寄存器的内容,不就是要用它么!因为我们要 1 秒改变一次 LED 的状态,那么我们的 TL0 和 TH0 都无法直接满足,但是配合溢出的次数其实就可以实现了,溢出标志位是 TF0,记录它置为 1 的次数就行了。

在前面的内容中,我们知道了让 TL0 和 TH0 计数 10 毫秒需要初始化为 TL0 = 0x00 TH0 = 0xDC,那么 1 秒就是 100 个 10 毫秒,那我们就知道 TF0 溢出 100 次就经过了 1 秒了。(该不会忘记了吧?)

0x03:代码实现

有了上面的思路,那么代码就比较简单了,代码如下:

代码语言:javascript
复制
#include <intrins.h>
#include "reg52.h"

sbit LED2 = P3 ^ 6;

void main()
{   
    int cnt = 0;
    LED2 = 0;
    
    TMOD = 0x1;
    
    TL0 = 0;
    TH0 = 0xDC;
    
    TR0 = 1;
    
    while (1)
    {
        if (TF0 == 1)
        {
            TF0 = 0;

            cnt ++;
            
            TL0 = 0;
            TH0 = 0xDC;
            
            if (cnt == 100)
            {
                cnt = 0;
                LED2 = !LED2;
            }
        }
    }
}

好了,整个代码也不复杂,在循环外初始化了定时器/计数器的相关寄存器,然后在 while 内不断地查询 TF0 是否溢出,溢出了就统计它溢出了多少次,然后再次重新初始化定时器/计数器相关的寄存器,当溢出到达 100 次,那么就让 LED 的状态取反即可。

最后看下演示效果!!

我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!

我的网站:https://www.netor0x86.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农UP2U 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01:1 秒钟切换一次的 LED 的状态
  • 0x02:实现思路
  • 0x03:代码实现
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档