首页 > 代码库 > 51单片机特别功用存放器和位界说

51单片机特别功用存放器和位界说

接下来的几节,我们会带着人人编写第一个单片机程序。在此之前,我们先来理解一些 51 单片机特有的程序语法以及 Keil 软件的根本操作步调,请人人必定要有耐烦。
我们次要是用 C 言语来对单片机编程,而有的单片机有那么几条很特别的独有的编程语句,51 单片机就有,先引见 2 条。
第一条语句是:sfr  P0 = 0x80;
sfr 这个症结字,是 51 单片机特有的,他的感化是界说一个单片机特别功用存放器(special function register)。51 单片机外部有许多个小模块,每一个模块寓居在具有独一房间号的房间内,同时每一个模块都有 8 个掌握开关。P0 就是一个功用模块,就住在了 0x80 这个房间里,我们就是经过设置 P0 外部这个模块的 8 个开关,来让单片机的 P0 这 8 个 IO 口输入高电平或许低电平的。而 51 单片机外部有许多存放器,假如我们想运用的话必需提早停止 sfr 声明。不外 Keil 软件曾经把一切这些声明都事后写好并保管到一个专门的文件中去了,我们要用的话只需文件扫尾添加一行#include<reg52.h>即可,这个在后边有效法详解。
第二条语句是:sbit  LED = P0^0;
这个 sbit,就是对方才所说的 SFR 里边的 8 个开关个中的一个停止界说。经由上边第二条语句后,今后只需在程序里写 LED,就代表了 P0.0 口(“^”这个符号在数字键 6 上边),留意这个 P 必需大写,也就是说我们给 P0.0 又取了一个更抽象的名字叫做 LED。
理解了这两个语句后,我们来大约看一下单片机的特别功用存放器。请留意,每一个型号的单片机都邑配有消费厂商所编写的数据手册(Datasheet),所以我们来看一下 STC89C52 的数据手册,从 21 页到 24 页,全体是对特别功用存放器的引见以及地址映射列表。我们在运用这个存放器之前,必需对这个存放器的地址停止阐明。是不是花花绿绿的太多了,记不住啊,这个没紧要的,不需求你记住,理解一下,后边大局部我会渐渐给人人说明,少局部需求用到的时分,本人过去查手册就可以了,做技巧不是为了敷衍测验,你可以随时翻阅手册查找你需求的材料。
如图 2-7,是截取的手册中第 22 页最下边的一个表格。

技术分享
图 2-7  IO 口特别功用存放器


我们来看一下这个表,个中 P4 口 STC89C52 对规范 51 的扩大,我们先疏忽它,只看前边的 P0、P1、P2、P3 这 4 个,每一个 P 口自身又有 8 个掌握端口。人人可以联合我们的开辟板道理图或许图 2-1 来看,那么如许就肯定了我们的单片机一共有 32 个 IO 口(IO,Input 和 Output,辨别是输出和输入)。
个中 P0 口地点的地址是 0x80,一共有从 7 到 0 这 8 个 IO 口掌握位,后边有个 Reset Value(复位值),这个很主要,是我们看存放器必看的一个参数,8 个掌握位复位值全体多是 1。
这就是通知我们,每当单片机上电复位的时分,一切的引脚的值默许是多是 1,即高电平,我们在设计电路的时分也要充沛的思索这个成绩。
那么上边那 2 条语句,我们写 sfr 的时分,必需要依据手册里的这个地址(Add)去写,写sbit 的时分,就可以直接将一个字节个中某一位掏出来。我们编程的时分,也有现成的写好存放器地址的头文件,我们直接包括该头文件就可以了,不需求一一去写了。


本文出自 “11999752” 博客,请务必保留此出处http://12009752.blog.51cto.com/11999752/1843321

51单片机特别功用存放器和位界说