首页 reg51.h解释

reg51.h解释

举报
开通vip

reg51.h解释reg51.h解释 1)“文件包含”处理概念 所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。 2)寄存器地址及位地址声明的原因 reg51.h里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如s...

reg51.h解释
reg51.h解释 1)“文件包含”处理概念 所谓“文件包含”是指在一个文件内将另外一个文件的内容全部包含进来。因为被包含的文件中的一些定义和命令使用的频率很高,几乎每个程序中都可能要用到,为了提高编程效率,减少编程人员的重得劳动,将这些定义和命令单独组成一个文件,如reg51.h,然后用#include包含进来就可以了,这个就相当于工业上的标准零件,拿来直接用就可以了。 2)寄存器地址及位地址声明的原因 reg51.h里面主要是一些特殊功能寄存器的地址声明,对可以位寻址的,还包括一些位地址的声明,如果如sfr P1=0x80; sfr IE=0xA8;sbit EA=0xAF等。 sfr P1 = 0x90这句话 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示:P1口所对应的特殊功能寄存器P1在内存中的地址为0x80,sbit EA=0xAF这句话表示EA这一位的地址为0xAF。 注意这里出现了一个使用很频繁的sfr和sbit。 sfr 表示特殊功能寄存器的意思,它并非标准C 语言的关键字,而是Keil 为能直接访问80C51中的SFR 而提供了一个新的关键词,其用法是:sfr 特殊功能寄存器名=地址值(注意对于头文件里“特殊功能寄存器名”,用户实际上也可以修改的,如,,=,x80,也可改为,,=,x80,但sfr 和地址值则不能更改,否者会编译出错。) sbit 表示位的意思,它也是非标准C 语言的关键字,编写程序时如需操作寄存器的某一位(可位寻址的寄存器才能用)时,需定义一个位变量,此时就要要到sbit,如sbit deng=P1^0,sbit EA = 0xAF;需要注意的是,位定义时有些特殊, 用法有三种: 第一种方法:sbit 位变量名,寄存器位地址值 第二种方法:sbit 位变量名,SFR 名称^寄存器位值(,,,) 第三种方法:sbit 位变量名,SFR 地址值^寄存器位值 如: sbit IT0=0x88 (1)说明:0x88是IT0 的位地址值 sbit deng=P1^2 (2)说明:其中P1 必须先用sfr 定义好 sbit EA=0xA8^7 (3)说明:0xA8 就是IE寄存器的地址值 以上三种定义方法需注意的是 IT0 deng EA可由用户随便定义,但必须满足C语言对变量名的定义规则。除些外其它的则必须按照上面的格式写,如“名称^变量位地址值”中“^”,它是由keil软件的规定的 ,不能写成其它的,只能这样能才编译通过。 以上是对寄存器地址和位地址的定义和声明作了解释,大家需要牢牢记住:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。至于说为什么,这可能一句话两句话也说不清楚。 3)内存、SFR、位、地址等的通俗解释 前面讲到了寄存器地址和位地址(前提能位寻址)声明的目的是为告诉C编译器相应寄存器及其位在内存中的地址,这样我们对寄存器及一些位赋的变量和数值才能正确保存,然后才能供CPU正确的调用,完成相应的功能。 上段文字出现了寄存器(SFR)、位,地址、内存等,单片机学习过程中还会出现ROM、RAM等名词,可能大家觉得不是很好理解,这里可以通俗的解释一下,如下面三个图所示。 我们把内存比作宾馆,ROM、RAM、SFR相当于宾馆里具体的有三种不同功能楼层(具体这个宾馆多少层即多少ROM、RAM、SFR,视各个宾馆或者每种单片机而不同),每层8个房间相当于8位,每个房间要么住男人要么住女人相当于每位要么放入数字1要么放入数字0,keil编译器就相当于宾馆的工作人员,旅客去住旅馆相当写程序的过程,住宾馆的人必须事先要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才能把你带到你的房间里去(这里假设这个宾馆可以由旅客自己决定住哪个房间)。即:只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。 4)REG51.H头文件原文及解释 打开reg51.h 可以看到这样的一些内容(此文件一般在C:\KEIL\C51\INC下 ,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。) 下面附出头文件的原文,并把注释文件一并附后。 /*-------------------------------------------------------------------------- REG51.H Header file for generic 80C51 and 80C31 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. --------------------------------------------------------------------------*/ #ifndef __REG51_H__ #define __REG51_H__ /* BYTE Register */ sfr P0 = 0x80; //三态双向 IO口 P0口 此句话的意思是:特殊功能寄存器 ,, 地址为,x80 ,可位寻址,下同 //低8位地址总线/数据总线(一般不用而只作普通,/,口,注意作,/,口用时,硬件上需接上接电阻) sfr P1 = 0x90; //准双向 IO口 P1口 sfr P2 = 0xA0; //准双向 IO口 P2口 //高8位地址总线,一般也作普通,/,用 sfr P3 = 0xB0; //双功能 //1.准双向 IO口 P3口 //2. P30 RXD串行数据接受 // P31 TXD串行数据发送 // P32 外部中断0 信号申请 // P33 外部中断1 信号申请 // P34 定时/计数器T0 外部计数脉冲输入 // P35 定时/计数器T1 外部计数脉冲输入 // P36 WR 片外RAM写脉冲信号输入 // P37 RD 片外ram读脉冲信号输入 sfr PSW = 0xD0; // 可以位寻址(,语言编程时可不考虑此寄存器) //程序状态寄存器Program Status WORD (程序状态信息) //psw.7(CY) 进位 标志 禁止坐卧标志下载饮用水保护区标志下载桥隧标志图下载上坡路安全标志下载地理标志专用标志下载 //psw.6(AC)辅助进位标志位低四位向高四位进位或借位时 AC=1 //主要用于十进制调整 //psw.5(F0)用户可自定义的程序标志位 //psw.4(RS1) //psw.3(RS0) //工作寄存器选择位 //任一时刻只有一组寄存器在工作 //0 0 0区 00H~07H //0 1 1区 08H~0fH //1 0 2区 10H~17H //1 1 3区 18H~1FH //psw.2(OV) 溢出标志位 //psw.1( ) 保留为 ,不可使用 //psw.0(P) 奇偶校验位 sfr ACC = 0xE0; //累加器A 特殊功能寄存器 可位寻址 sfr B = 0xF0; //寄存器B 主要用于乘除运算 sfr SP = 0x81; //堆栈指针寄存器SP 存放站定栈顶地址、 sfr DPL = 0x82; // sfr DPH = 0x83; //数据指针寄存器DPTR、//对片外RAM及扩展IO进行存取用的地址指针 sfr PCON = 0x87; //电源控制寄存器 、不能位寻址 //管理单片机的电源部分包括上电复位、掉电模式、空闲模式等 //单片机复位时PCON被全部清0,编程时一般是用到,,,,位,其它的一般不用 //D7 SMOD该位与串口通信波特率有关 //SMOD=0 串口方式1 2 3 波特率正常 //SMOD=1 串口方式1 2 3 波特率加倍 sfr TCON = 0x88; //定时器/计数器 控制寄存器 可以位寻址 //D7 TF1 定时器1溢出标志位 //D6 TR1 定时器1运行控制位 //D5 TF0 定时器0溢出标志位 //D4 TR0 定时器0运行控制位 //D3 IE1 外部中断1请求标志 //D2 IT1 外部中断1 触发方式选择位 //D1 IE0 外部中断0请求标志 //D0 IT0 外部中断0 触发方式选择位 sfr TMOD = 0x89; //定时器/计数器 工作方式寄存器 不能位寻址 //确定工作方式和功能 //D7 GATE 门控制位 //GATE=0;定时器/计数器由TRX(x=0,1)来控制 //GATE=1;定时器/计数器由TRX(x=0,1) //和外部中断引脚(init0,1)来共同控制 //D6 C/T 定时器、计数器选择位 // 0 选择定时器模式 // 1 选择计数器模式 //D5 M1 //D4 M0 //M1 M0 工作方式 //0 0 方式0 13位定时器/计数器 //0 1 方式1 16位定时器/计数器 //1 0 方式2 8位自动重装定时器/计数器 //1 1 方式3 仅适用T0 分成两个8位计数器,T1停止计数 //D3 GATE 门控制位 //GATE=0;定时器/计数器由TRX(x=0,1)来控制 //GATE=1;定时器/计数器由TRX(x=0,1) //和外部中断引脚(init0,1)来共同控制 //D2 C/T 定时器、计数器选择位 //0 选择定时器模式 //1 选择计数器模式 //D1 M1 //D0 M0 // M1 M0 工作方式 // 0 0 方式0 13位定时器/计数器 // 0 1 方式1 16位定时器/计数器 // 1 0 方式2 8位自动重装定时器/计数器 // 1 1 方式3 仅适用T0 分成两个8位计数器,T1停止计数 sfr TL0 = 0x8A; //定时器/计数器0高8位 容器 加1 计数器 sfr TL1 = 0x8B; //定时器/计数器1高8位 容器 sfr TH0 = 0x8C; //定时器/计数器0低8位 容器 sfr TH1 = 0x8D; //定时器/计数器1低8位 容器 sfr IE = 0xA8; //中断允许寄存器 可以位寻址 //D7 EA 全局中断允许位 //D6 NULL //D5 ET2 定时器/计数器2中断允许位 interrupt 5 //D4 ES 串行口中断允许位 interrupt 4 //D3 ET1 定时器/计数器1中断允许位 interrupt 3 //D2 EX1 外部中断1中断允许位 interrupt 2 //D1 ET0 定时器/计数器0中断允许位 interrupt 1 //D0 EX0 外部中断0中断允许位 interrupt 0 sfr IP = 0xB8; //中断优先级寄存器 可进行位寻址 //D7 NULL //D6 NULL //D5 NULL //D4 PS 串行口中断定义优先级控制位 // 1 串行口中断定义为高优先级中断 // 0 串行口中断定义为低优先级中断 // //D3 PT1 // 1 定时器/计数器1中断定义为高优先级中断 // 0 定时器/计数器1中断定义为低优先级中断 //D2 PX1 // 1 外部中断1定义为高优先级中断 // 0 外部中断1定义为低优先级中断 //D1 PT0 // 1 定时器/计数器0中断定义为高优先级中断 // 0 定时器/计数器0中断定义为低优先级中断 //D0 PX0 // 1 外部中断0定义为高优先级中断 // 0 外部中断0定义为低优先级中断 sfr SCON = 0x98; //串行口控制寄存器 可以进行位寻址 //D7 SM0 //D6 SM1 // SM0 SM1 串行口工作方式 // 0 0 同步移位寄存器方式 // 0 1 10位异步收发(8位数据),波特率可变(定时器1溢出率控制) // 1 0 11位异步收发(9位数据),波特率固定 // 1 1 11异步收发(9位数据) ,波特率可变(定时器1溢出率控制) //D5 SM2 多机通信控制位 主要用于方式2和方式3 //D4 REN 允许串行接收位 //D3 TB8 方式2,3中发送数据的第9位 //D2 RB8 方式2,3中接受数据的第9位 //D1 TI 发送中断标志位 //D0 RI 接受中断标志位 sfr SBUF = 0x99; //串行数据缓冲区 /***************************************************************************** 下面是位寻址区 上面做过解释的就不在下面一一解释了 ******************************************************************************/ /* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0; /* TCON */ sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 = 0x88; /* IE */ sbit EA = 0xAF; sbit ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; /* IP */ sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6; sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; /* SCON */ sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif
本文档为【reg51.h解释】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_511210
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:11
分类:
上传时间:2017-10-07
浏览量:62