单片机C扩展

在用C语言进行单片机代码编写的时候我们需要引入一些单片机专用的头文件如:#include <reg52.h> ,#include <intrins.h>等。

在#include <reg52.h>头文件中,扩展了几个类型专门用于单片机的操作,这里说下sfr和sbit:

sfr就是特殊功能寄存器,他是单片机内存中的一段特殊的区域,这片内存区域中存储的值用于配置单片机,比如单片机的输入输出。

在89c51rc系列中,这片区域的地址是80H~FFH总共128B。

我们可以通过改变这片地址中存储的值(如由0变为1),而改变单片机的某些功能,如进行输出或者读取输入等。

用简单的例子理解,比如我们点亮一个led灯,首先这个led灯元件是接在单片机的P0段端口的第一个端口上。

实际上P0段端口就是特俗功能寄存器的80H地址的字节控制,80H字节有8个bit,对应着P0段的8个端口。

所以我们在代码中只要给80H的第一个bit赋值为0,则该端口就会输出一个低电平,从而点亮led灯。

而扩展的sfr类型,就是用于定义一个特殊功能寄存器的某一字节。sbit就是用于定义某一字节的第几个bit。

如在reg52.h头文件中实际就有这样一句代码:sfr P0 = 0x80;(当然还定义了其他很多可供操作的地址)

所以我们引入这个头文件中可以直接使用定义好的P0给它的某一个bit赋值:sbit LED0 = P0^1;LED0=0;

原文地址:https://www.cnblogs.com/maycpou/p/13548996.html