第一个程序点亮一个LED灯

#include <reg52.h> // 引用52包文件 可以理解为命名空间

sbit P1_0 = P1^0;   // 定义P1管脚0

void main()             // 主程序 C语言所必需要有的
{
P1_0 = 0;              // 点亮P1第0管脚连接的LED
}

===============以下非程序代码===================

上面的程序,首先引用reg52.h,这里有对操作单片机相关数据的封装,方便用户使用

接着,用P1_0这个sbit类型的变量,引用P1口的第1个引脚(P1^0)

接着,主程序开始

将P1口的第1个引脚置为低电平(亮)

结束程序

在reg52.h上右键菜单(Keil中)open document<reg52.h>可以打开reg52单元,发现P1的定义:sfr P1 = 0x90;什么意思呢?

sfr 是用于定义特殊寄存器(Special Function Register)的关键字,是单片计算机中的一组特殊的临时存储区域,用于动态存放计算机运行过程的一些状态信息、并依此做相应的控制。51系列单片机中,通常每个寄存器也就一个字节,这个字节是P1(通用寄存器1)P1有8个位,但0x91~0x97与P1毫无关系,同理其他3个寄存器P0, P2, P3也是这个道理。MCS-51单片机就设有18个专用寄存器,P0-P3端口,定时/计数器T0、T1,TMOD、TCON、PCON、SCON 、PSW、IE、A、B、IP等等。SFR越多,编和控制功能越强、越灵活,但需要硬资源,所以系统设计时会根据需要来确定。

sbit(Set Bit)与sfr用法类似,只是sbit是位操作,用于将某个sfr中具体位赋值给一个变量,这样后面程序就可用通过该变量为该位清0或置1。

要点:

1.sfr和sbit的含意,特殊功能寄存器的含意

2.如何用位控制引脚

原文地址:https://www.cnblogs.com/coloregg/p/3554714.html