C51 单片机开发寄存器

2024-05-20 16:32:15 浏览数 (2)

上篇文章中整理了晶振频率、时钟周期、机器周期的关系,以及得出了一个机器周期是 1.085 微秒。那么,当我们让单片机数数时,它会在哪里进行累加呢?就是寄存器!

0x01:寄存器

寄存器这个概念应该时每个程序员都听说过的概念,尤其是了解计算机底层的程序员。

计算机的存储分为多级存储,由快到慢(有贵到贱)的顺序是,寄存器、多级缓存、内部存储器(内存)和外部存储器(硬盘)。寄存器的速度是最快的,也是加个最贵的。

对于汇编程序员来说,寄存器可能是每行代码都离不了的吧,比如 x64 架构的通用寄存器有 RAX、RBX、RCX 等,x86 架构的通用寄存器有 EAX、EBX、ECX 等之类的吧。

当然了,对于芯片中的寄存器有多种,比如通用寄存器、基址寄存器、状态寄存器、浮点寄存器、调试寄存器等。

0x02:C51 单片机

对于 C51 单片机也不例外,有很多的寄存器。在之前我们也操作过寄存器。

比如,我们定义的如下代码:

代码语言:javascript复制
sbit led = P3 ^ 7;

P3.7 是 P3 口的第 7 个引脚,P3 就是寄存器,P3 的地址是 0xB0,定义如下:

代码语言:javascript复制
sfr P3 = 0xB0;

还记得 sfr 是什么吗?sfr 是特殊功能寄存器!不记得可以回看前面的文章(C51 单片机开发 SFR 及 SBIT 的作用)。

把那篇文章的截图贴过来,如下图:

图中的 TCON、TMOD、TL0、TL1、TH0 和 TH1 都是定时器相关的寄存器,对应的在寄存器的头文件中也有相应的定义。

代码语言:javascript复制
sfr TCON  = 0x88;
sfr TMOD  = 0x89;
sfr TL0   = 0x8A;
sfr TL1   = 0x8B;
sfr TH0   = 0x8C;
sfr TH1   = 0x8D;

单片机要处理各种操作控制,都是离不开寄存器的。

0x03:定时器/计数器控制寄存器 TCON

前几篇文章一直在说定时器/计数器,本篇就一定要介绍关于它们的寄存器。这里介绍以下 TCON 这个寄存器。

为了省事,直接把手册截图,如下图所示(该图在手册的 P186)。

在手册中给出了 TCON 的地址,可以看出该寄存器是单字节的,每个位都有其具体的名称和功能。在使用时,每一位的具体功能可以查阅手册。

本篇内容还是很枯燥,当然了,喜欢就不会觉得枯燥,面对枯燥的又想学习的知识,只有一个字,熬!希望各位,学习是为了喜欢和追求,而不是煎熬!

0 人点赞