学习STC51单片机10(芯片为STC89C52RC)

我们来做做案例将定时器的作用放到实际单片机上面看看

/*通过定时器0,控制LED亮一秒,灭一秒,晶振11059200Hz*/

大家有没有想过为什么会认识TF0等等呢

TF0 是定时器 0 的溢出标志位

TR0定时器 0 的运行控制位

定时器 0 是一个 16 位计数器,由 TH0(高 8 位)和 TL0(低 8 位)组成

TL0(Timer 0 Low Byte)是定时器 0 的低 8 位寄存器,用于存储定时器 0 的计数值的低 8 位。它与TH0(定时器 0 的高 8 位寄存器)共同组成一个 16 位的计数器。

在回顾一下reg52.h文件的作用

reg52.h 是用于 51 单片机(特别是 80C52 等型号 )开发的 C 语言头文件,主要作用如下:

1. 寄存器定义

51 单片机内部有许多特殊功能寄存器(SFR),用于控制单片机的各种功能,像定时器、串口、中断系统等。reg52.h 中用 sfr 关键字对这些特殊功能寄存器进行了定义,确定了它们在单片机内存中的地址,比如:

sfr P0 = 0x80;  // 定义P0口寄存器,地址为0x80

sfr TMOD = 0x89;  // 定义定时器模式控制寄存器,地址为0x89

这样在程序里就能直接通过名字(如 P0TMOD )来操作这些寄存器,方便对单片机硬件进行控制 。

2. 位定义

单片机中很多寄存器的位具有特定功能,reg52.h 利用 sbit 关键字把寄存器中的某些位定义成独立变量,便于单独操作。例如:

sbit TF0 = TCON^5;  // 定义定时器0溢出标志位,是TCON寄存器的第5位

sbit TR0 = TCON^4;  // 定义定时器0运行控制位,是TCON寄存器的第4位

通过这种定义,在程序中可以直接对 TF0TR0 等位进行读写操作,像检测定时器是否溢出(查看 TF0 状态 )、启动或停止定时器(设置 TR0 ) 。

3. 简化编程

有了 reg52.h 头文件,不用去记忆每个寄存器及其位的具体地址,直接使用定义好的名称编写代码,提高了编程效率,也增强了代码的可读性和可维护性 。比如要设置定时器 0 工作模式,直接写 TMOD = 0x01; ,而不用关心 TMOD 寄存器在内存中的具体地址是多少 。

4. 支持扩展功能

相较于 reg51.h (用于标准 8051 单片机 ),reg52.h 针对 8052 等扩展型单片机,额外定义了一些扩展功能相关的寄存器和位。比如 8052 单片机比 8051 多了定时器 T2,reg52.h 中就有对定时器 T2 相关寄存器(如 TH2TL2 等 )的定义,使程序能对这些扩展功能进行控制 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱嵌入式的涛涛同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值