51单片机头文件reg51h详解NewWord文件下载.docx
- 文档编号:5342632
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:15
- 大小:121.09KB
51单片机头文件reg51h详解NewWord文件下载.docx
《51单片机头文件reg51h详解NewWord文件下载.docx》由会员分享,可在线阅读,更多相关《51单片机头文件reg51h详解NewWord文件下载.docx(15页珍藏版)》请在冰点文库上搜索。
第二种方法:
位变量名=SFR
名称^寄存器位值(0-7)
第三种方法:
地址值^寄存器位值
如:
sbitIT0=0x88
(1)说明:
0x88是IT0
的位地址值
deng=P1^2
(2)说明:
其中P1
必须先用sfr
定义好
sbitEA=0xA8^7
(3)说明:
0xA8
就是IE寄存器的地址值
以上三种定义方法需注意的是IT0dengEA可由用户随便定义,但必须满足C语言对变量名的定义规则。
除些外其它的则必须按照上面的格式写,如“名称^变量位地址值”中“^”,它是由keil软件的规定的
,不能写成其它的,只能这样能才编译通过。
以上是对寄存器地址和位地址的定义和声明作了解释,大家需要牢牢记住:
只有对寄存器及相关位进行声明地址后,我们才能对其进行赋相关的值,keil软件才能编译通过。
至于说为什么,这可能一句话两句话也说不清楚。
3)内存、SFR、位、地址等的通俗解释
前面讲到了寄存器地址和位地址(前提能位寻址)声明的目的是为告诉C编译器相应寄存器及其位在内存中的地址,这样我们对寄存器及一些位赋的变量和数值才能正确保存,然后才能供CPU正确的调用,完成相应的功能。
上段文字出现了寄存器(SFR)、位,地址、内存等,单片机学习过程中还会出现ROM、RAM等名词,可能大家觉得不是很好理解,这里可以通俗的解释一下,如下面三个图所示。
我们把内存比作宾馆,ROM、RAM、SFR相当于宾馆里具体的有三种不同功能楼层(具体这个宾馆多少层即多少ROM、RAM、SFR,视各个宾馆或者每种单片机而不同),每层8个房间相当于8位,每个房间要么住男人要么住女人相当于每位要么放入数字1要么放入数字0,keil编译器就相当于宾馆的工作人员,旅客去住旅馆相当写程序的过程,住宾馆的人必须事先要给工作人员说你是哪一层哪一个房间(即声明寄存器地址和位地址,)宾馆工作人员才能把你带到你的房间里去(这里假设这个宾馆可以由旅客自己决定住哪个房间)。
即:
4)REG51.H头文件原文及解释
打开reg51.h
可以看到这样的一些内容(此文件一般在C:
\KEIL\C51\INC下
INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。
如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。
下面附出头文件的原文,并把注释文件一并附后。
/*--------------------------------------------------------------------------
REG51.H
Headerfileforgeneric80C51and80C31microcontroller.
Copyright(c)1988-2002KeilElektronikGmbHandKeilSoftware,Inc.
Allrightsreserved.
--------------------------------------------------------------------------*/
#ifndef__REG51_H__
#define__REG51_H__
/*
BYTERegister
*/
sfrP0
=0x80;
//三态双向
IO口
P0口 此句话的意思是:
特殊功能寄存器 P0 地址为0x80,可位寻址,下同
//低8位地址总线/数据总线(一般不用而只作普通I/O口,注意作I/O口用时,硬件上需接上接电阻)
sfrP1
=0x90;
//准双向
P1口
sfrP2
=0xA0;
P2口
//高8位地址总线,一般也作普通I/O用
sfrP3
=0xB0;
//双功能
//1.准双向
P3口
//2.
P30
RXD串行数据接受
//
P31
TXD串行数据发送
//
P32
外部中断0
信号申请
P33
外部中断1
P34
定时/计数器T0
外部计数脉冲输入
P35
定时/计数器T1
P36
WR
片外RAM写脉冲信号输入
P37
RD
片外ram读脉冲信号输入
sfrPSW
=0xD0;
可以位寻址(C语言编程时可不考虑此寄存器)
//程序状态寄存器ProgramStatusWORD
(程序状态信息)
//psw.7(CY)
进位标志
//psw.6(AC)辅助进位标志位低四位向高四位进位或借位时
AC=1
//主要用于十进制调整
//psw.5(F0)用户可自定义的程序标志位
//psw.4(RS1)
//psw.3(RS0)
//工作寄存器选择位
//任一时刻只有一组寄存器在工作
//00
0区
00H~07H
//01
1区
08H~0fH
//10
2区
10H~17H
//11
3区
18H~1FH
//psw.2(OV)
溢出标志位
//psw.1(
)
保留为
,不可使用
//psw.0(P)
奇偶校验位
sfrACC
=0xE0;
//累加器A
特殊功能寄存器
可位寻址
sfrB
=0xF0;
//寄存器B
主要用于乘除运算
sfrSP
=0x81;
//堆栈指针寄存器SP
存放站定栈顶地址、
sfrDPL
=0x82;
//
sfrDPH
=0x83;
//数据指针寄存器DPTR、//对片外RAM及扩展IO进行存取用的地址指针
sfrPCON=0x87;
//电源控制寄存器
、不能位寻址
//管理单片机的电源部分包括上电复位、掉电模式、空闲模式等
//单片机复位时PCON被全部清0,编程时一般是用到SMOD位,其它的一般不用
//D7
SMOD该位与串口通信波特率有关
//SMOD=0
串口方式123
波特率正常
//SMOD=1
波特率加倍
sfrTCON=0x88;
//定时器/计数器
控制寄存器
可以位寻址
//D7
TF1
定时器1溢出标志位
//D6
TR1
定时器1运行控制位
//D5
TF0
定时器0溢出标志位
//D4
TR0
定时器0运行控制位
//D3
IE1
外部中断1请求标志
//D2
IT1
触发方式选择位
//D1
IE0
外部中断0请求标志
//D0
IT0
sfrTMOD=0x89;
工作方式寄存器
不能位寻址
//确定工作方式和功能
GATE
门控制位
//GATE=0;
定时器/计数器由TRX(x=0,1)来控制
//GATE=1;
定时器/计数器由TRX(x=0,1)
//和外部中断引脚(init0,1)来共同控制
C/T
定时器、计数器选择位
0
选择定时器模式
1
选择计数器模式
M1
M0
//M1
M0
工作方式
//0
方式0
13位定时器/计数器
方式1
16位定时器/计数器
//1
方式2
8位自动重装定时器/计数器
方式3
仅适用T0
分成两个8位计数器,T1停止计数
sfrTL0
=0x8A;
//定时器/计数器0高8位
容器
加1
计数器
sfrTL1
=0x8B;
//定时器/计数器1高8位
容器
sfrTH0
=0x8C;
//定时器/计数器0低8位
sfrTH1
=0x8D;
//定时器/计数器1低8位
sfrIE
=0xA8;
//中断允许寄存器
可以位寻址
EA
全局中断允许位
NULL
ET2
定时器/计数器2中断允许位
interrupt5
//D4
ES
串行口中断允许位
interrupt4
ET1
定时器/计数器1中断允许位
interrupt3
//D2
EX1
外部中断1中断允许位
interrupt2
ET0
定时器/计数器0中断允许位
interrupt1
//D0
EX0
外部中断0中断允许位
interrupt0
sfrIP
=0xB8;
//中断优先级寄存器
可进行位寻址
//D7
//D6
PS
串行口中断定义优先级控制位
串行口中断定义为高优先级中断
串行口中断定义为低优先级中断
PT1
定时器/计数器1中断定义为高优先级中断
定时器/计数器1中断定义为低优先级中断
PX1
外部中断1定义为高优先级中断
外部中断1定义为低优先级中断
PT0
定时器/计数器0中断定义为高优先级中断
定时器/计数器0中断定义为低优先级中断
PX0
外部中断0定义为高优先级中断
外部中断0定义为低优先级中断
sfrSCON=0x98;
//串行口控制寄存器
可以进行位寻址
SM0
SM1
SM0
SM1
串行口工作方式
同步移位寄存器方式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片 机头 文件 reg51h 详解 New