C51单片机引脚功能与特殊功能寄存器详解.docx
- 文档编号:15128751
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:25
- 大小:380.89KB
C51单片机引脚功能与特殊功能寄存器详解.docx
《C51单片机引脚功能与特殊功能寄存器详解.docx》由会员分享,可在线阅读,更多相关《C51单片机引脚功能与特殊功能寄存器详解.docx(25页珍藏版)》请在冰点文库上搜索。
C51单片机引脚功能与特殊功能寄存器详解
80C51单片机引脚图及引脚功能介绍
首先我们来介绍一下单片机的引脚图及引脚功能
介绍
fl.0—Fl.1—P12—P1.3—FL4—FL5—FL6—FL7—
EST/Vm—RXD/F3.0—TXD/F3,1—IFT0/F3.2—IKTT/F3.3—
T0/F3.4—T1/F35—阀F3.S—而P3T—
XTAL1—JITALE—焰一
—Vm
—FO.O
—F01
一F07
—P0.3
—F0.4
—F。
S
—F06
—FOT
—EA/VfT
—AU/PBDG
—FSEN
—F2T
—F26
—F2S
一E24
—F2.3
—P22
—F21
—F20
Vce—
ViS
XTAM
XTAL2
EST/Vn^EA/Vif+*FSEM^—ALE/PROG+—
二二二二
ri—L
口
F
51
口口口扣P2F3地址数催总皴地址德鳗双噬口fTHTTH克习
单片机的40个引脚大致可分为4类:
电源、时钟、控制和I/O弓|脚。
1.电源:
⑴VCC-芯片电源,接+5V;
⑵VSS-接地端;
2.时钟:
XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。
3.控制线:
控制线共有4根,
⑴ALE/PROG地址锁存允许/片内EPRO陶程脉冲
1ALE功能:
用来锁存P0口送出的低8位地址
2PROG功能:
片内有EPROM勺芯片,在EPRO嘲程期间,此引脚输入编程脉冲。
⑵PSEN:
夕卜RO皿选通信号。
⑶RST/VPD:
复位/备用电源。
1RST(Reset)功能:
复位信号输入端。
2VPD功能:
在Vcc掉电情况下,接备用电源。
⑷EA/Vpp:
内外RO曜择/片内EPRO陶程电源。
1EA功能:
内外ROM先择端。
2Vpp功能:
片内有EPROM勺芯片,在EPRO惭程期间,施加编程电源Vpp。
4.I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
拿到一块单片机,想要使用它,首先必须要知道怎样去连线,我们用的一块89C51的芯片为例,
我们就看一下如何给它连线。
1、电源:
这当然是必不可少的了。
单片机使用的是5V电源,其中正极接40管脚,负极(地)接20管脚。
2、振菰电路:
单片机是一种时序电路,必须供给脉冲信号才能正常工作,在单片机内部已集成
了振荡器,使用晶体振荡器,接18、19脚。
只要买来晶体震荡器,电容,连上就能了,按图1
接上即可。
3、复位管脚:
按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。
4、EA管脚:
EA管脚接到正电源端。
至此,一个单片机就接好,通上电,单片机就开始工作了。
我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某
个管脚相连,不然单片机就没法控制它了,那么和哪个管脚相连呢?
单片机上除了刚才用掉的5
个管脚,还有35个,我们将这个LED和1脚相连。
(见图1,其中R1是限流电阻)
按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。
因此要
图1单片机简易应用电路图
单片机简易编程
名字有了,我们又怎样让它变'高'或变'低'呢?
叫人做事,说一声就能,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。
让一个管脚输出
高电平的指令是SETS让一个管脚输出低电平的指令是CLR。
因此,我们要P1.0输出高电平,
只要写SETBP1.0,要P1.0输出低电平,只要写CLRP1.0就能了。
现在我们已经有办法让单片机去将P10输出高或低电平了,但是我们怎样才能计算机执行这条指
令呢?
总不能也对计算机也说一声了事吧。
要解决这个问题,还得有几步要走。
第一,计算机看不懂SETBCLR之类的指令,我们得把指令翻译成计算机能懂的方式,再让计算
机去读。
计算机能懂什么呢?
它只懂一样东西一一数字。
因此我们得把SETBP1.0变为
(D2H,90H),把CLRP1.0变为(C2H,90H),至于为什么是这两个数字,这也是由51芯片
的设计者--INTEL规定的,我们不去研究。
第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?
这要借助于一个硬件工
具"编程器"。
如果你还不知道是什么是编程器,我来介绍一下,就是把你在电脑上写出来来的代
码用汇编器等编译器生成的一个目标烧写到单片机的eprom里面去的工具,80c51这种类型的单
片机编程是一件很麻烦的事情,必要要先装到编程器上编程后才能在设备上使用,而目前最新的
89S51单片机居然在线编程(isp)功能,不用拔出来利用简单的电路就可以实现把代码写入单片机内部.
我们将编程器与电脑连好,运行编程器的软件,然后在编缉区内写入(D2H,90H)见图2,写入
?
灯不亮?
这就对了,因为我们写
好,拿下片子,把片子插入做好的电路板,接通电源……什么
进去的指令就是让
P10输出高电平,灯当然不亮,要是亮就错了。
现在我们再拨下这块芯片,重新放回到编程器上,
将编缉区的内容改为(C2H,90H),也就是CLRP1.0,写片,拿下片子,把片子插进电路板,接电,好,灯亮了。
因为我们写入的()就是让P10输出低电平的指令。
这样我们看到,硬件电路
的连线没有做任何改变,只要改变写入单片机中的内容,就能改变电路的输出效果。
MCS-51单片机的特殊功能寄存器
时钟电路ROMRAM定时41■算器
Lftft
U
中皿卜理1-
器
C1BTI
UUU
ROM串行接口中断系统
JOOM?
POPlP2P3TxD哄INTOINTI
MCS-51单片机结构框图
从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在一个51单片机的内部包含了这么多的东西。
对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?
在单片机中有一些
独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
事实上,我们已接触过P1个个特殊功能寄存器了,还有哪些呢?
看下表
符号
地址
功能介绍
B
FOH
B寄存器
ACC
EOH
累加器
PSW
DOH
程序状态字
LPJ
B8H
中断优先级控制寄存器
P3
BOH
P3口锁存器
EE
A8H
中断允许控制寄存器
P2|
AOH
P2口锁存器
SBUF
99H
串行口锁存器
SCON
98H
串行口控制寄存器"I
Pl
90H
P1口锁存器
TH1|
SDH
定时器/计数器1〈高8位)
THO;
8CH
定时器/计数器1(低8位)|
TL1
8BH
定时器/计数器0〈高8位)
TLO
8AH
定时器/计数器0(低8位)
TMOD
89H
定时器/计数器方式控制寄存器
ICON
H
DPH
83H
数据地址指针(高8位)
DPL
82H
数据地址指针〈低8位)
SP
81H
堆栈指针
:
P0
80H
P0口锁存器
PCON
87H
电源控制寄存器
卜面,我们介绍一下几个常用的SFR。
1、ACC---是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,
为什么给它这么一个名字呢?
或许是因为在运算器做运算时其中一个数一定是在ACC中
的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A乒0则z=0。
该标
志常用作程序分枝转移的判断条件。
2、B--一个寄存器。
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3指针寄存器
(1)程序计数器PC
指明即将执行的下一条指令的地址,16位,寻址64KB范围,
复位时PC=0000H
(2)堆栈指针SP
指明栈顶元素的地址,8位,可软件设置初值,复位时SP=07H
(3)数据指针DPTR
@R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。
DPTR
=DPH+DPL。
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。
分成DPL(低8位)和DPH(高8位)两个寄存器。
用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器
作64K字节范围内的数据操作
4、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU
的当前状态,并作出相应的处理。
它的各位功能请看下表:
CY:
进位标志。
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到
0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错
误,怎么办?
最高位就进到这里来。
这样就没事了。
有进、借位,CY=1;无进、借位,
CY=0
例:
78H+97H(01111000+10010111)
AC:
辅助进、借位(高半字节与低半字节间的进、借位)。
例:
57H+3AH(01010111+00111010)
b?
D5
D3
D2
DI
|do
k
F0
RSI
RSO
下面我们逐一介绍各位的用途
F0:
用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。
RS1、RS0:
工作寄存器组选择位。
这个我们已知了。
0V:
溢出标志位。
运算结果按补码运算理解。
有溢出,OV=1;无溢出,OV=0。
什么是溢
出我们后面的章节会讲到。
P:
奇偶校验位:
它用来表示ALU运算结果中二进制数位“1的个数的奇偶性。
若为奇数,
则P=1,否则为0。
运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。
例:
某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。
5、P0、P1、P2、P3------这个我们已经知道,是四个并行输入/输出口的寄存器。
它里面的
内容对应着管脚的输出。
IE:
中断允许控制寄存器
寄存器地址A8H,位寻址AFH〜A8H
位地
址
AF
AE
AD
AC
AB
AA
A9
A8
位符
号
EA
/
ET2
ES
ET1
EX1
ET0
EX0
EA:
中断允许总控制位
当EA=0时,中断总禁止。
当EA=1时,中断总允许后中断的禁止与允许由各中断源的中断允许控制位进行设置。
EX0(EX1):
外部中断允许控制位
当EX0(EX1)=0禁止外中断
当EX0(EX1)=1允许外中断
ET0(EX1):
定时/计数中断允许控制位
当ET0(ET1)=0禁止定时(或计数)中断
当ET0(ET1)=1允许定时(或计数)中断
ET2:
定时器2中断允许控制位,在AT89S52、AT89C52中
ES:
申行中断允许控制位
当ES=0禁止申行中断
当ES=1允许申行中断
IP:
中断优先级控制寄存器寄存器地址B8H,位寻址BFH〜B8H
位地址
BF
BE
BD
BC
BB
BA
B9
B8
「位符号
/
/
PT2
PS
PT1
PX1
PT0
PX0
PX0-
-外部中断
0优先级设定位
PT0-
-一定时中断
0优先级设定位
PX1-
-外部中断
1优先级设定位
PT1-
-一定时中断
1优先级设定位
DQ
PS
中U-I十儿儿以以7£世
PT2—
正时命2优先级设7E位
定时/计数器
(1)定时器方式寄存器:
TMOD
(2)定时器控制寄存器:
TCON
(3)计数寄存器:
TH0、TL0;TH1、TL1。
可用于设定计数初值。
8052/8032增设专用寄存器
(1)定时器2控制寄存器T2CON;控制、设置工作方式。
(2)计数寄存器:
TH2、TL2
(3)定时器2捕获/重装载寄存器:
RCAP2H、RCAP2L
存放自动重装载到TH2、TL2的数据
TCON:
定时器控制寄存器寄存器地址88H,位寻址8FH〜88H
位地
址
8F
8E
8D
8C
8B
8A
89
88
位符
号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF0(TF1)——计数溢出标志位,当计数器计数溢出时,该位置1。
TR0(TR1)——定时器运行控制位
当TR0(TR1)=0停止定时器/计数器工作
当TR0(TR1)=1启动定时器/计数器工作
IE0(IE1)——外中断请求标志位
当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。
在中断响应完成后转向中断服务时,再由硬件自动活0。
IT0(IT1)——外中断请求信号方式控制位
当IT0(IT1)=1脉冲方式(后沿负跳有效)
当IT0(IT1)=0电平方式(低电平有效)此位由软件置1或活0。
TF0(TF1)——计数溢出标志位
当计数器产生计数溢出时,此位由硬件置1。
当转向中断服务时,再有硬件自动活0。
计数溢出的标志位的使用有两种情况:
采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。
衰62富用波特率及其春敷选择美系
波特亭
SMOD
定时STI
c/T
模式
初值
方式O:
lMHz
FUMHz
X
X
X
rx
方式2:
375K
12MHe
1
X
X
x
方式L3.62.5K
12MH1
1
0
2
FFH
19.2K
lLO59MHt
]
0
*
FDH
9*6K
】】.Q59MHz
0
0
i
FDH
L8K
0
0
i
FAH
4K
11,059MHz
D
0
¥
F4H
L2K
IL05»MHi
0i
0
E8H
137-5K
1L059MHz
Q
IDH
DOH;
6MH1
0
0
2
72H
QH
6MFh
0
0
i
FEEBH
TMOD:
工作方式控制寄存器
寄存器地址89H,不可位寻址。
位序
B7
B6
B5
B4
B3
B2
B1
B0
位符号
GATE
C/T
M1
M0
GATE
C/T
M1
M0
GATE——门控位
当=0时,以运行TR0(或TR1)启动或禁止定时器、计数器
当=1时,以TR07INT0(或TR1*/INT1)启动或禁止定时器、计数器
GATE=0以TR0(TR1)启动定时器
GATE=1以INT0(INT1)启动定时器
C/T=0定时/计数工作方式选择位
M1M0——工作方式选择位
T2CON:
定时器控制寄存器
寄存器地址0C8H,位寻址0C8H〜0CFH
位地
址
CF
CE
CD
CC
CB
CA
C9
C8
位符
号
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/T2
CP/RL2
TF2:
T2溢出标记
当T2溢出时TF2=1,TD2只能用软件活除
当RCLK=1或TCLK=1时,TF2将不置位
EXF2:
T2外部标记
当EXEN2=1时,T2EX/P1.1引脚上的负跳变引起T2的捕捉/重装操作,此时EXF2=1。
在T2中断允许时,EXF2=1将引起中断,EXF2只能用软件活除。
在T2的向上、向下计数模式下(DCEN=1)EXF2的置位将不引起中断。
RCLK:
接收时钟允许
当RCLK=1时,T2的溢出脉冲可用作申行口的接收时钟信号,适丁申行口模式1、3当RCLK=0时,T1的溢出脉冲用作申行口接收时钟信号
TCLK:
发送时钟允许
EXEN2:
T2外部事件(引起捕捉/重装的外部信号)允许
当EXEN2=1时,如果T2没有作申行时钟输出(即RCLK+TCLK=0),则在T2EX/P1.1弓I脚跳变将引起T2的捕捉/重装操作;
当EXEN2=0时,在T2EX引脚的负跳变将不起作用
TR2:
T2的启动/停止控制
C/T2:
计数定时
CP/RL2:
捕捉/重装选择
当CP/RL2=1且EXEN2=1时,T2EX/P1.1引脚的负跳变将引起捕捉操作当CP/RL2=0且EXEN2=1时,T2EX/P1.1引脚的负跳变将引起重装操作当CP/RL2=0且EXEN2=0时,T2的溢出将引起T2的自动重装操作
当RCLK+TCLK=1时,CP/RL2控制位不起作用,T2被强制工作丁重装方式。
重装方式发生丁T2溢出时,常用来作波特率发生器。
T2MOD:
工作方式控制寄存器
寄存器地址0C9H,不可位寻址
-
-
一
一
一
一
T2OE
DCEN
T2OE:
定时器2输出允许位,当=1时,P1.0/T2引脚输出连续脉冲信号
DCEN:
当=1时,T2配置成向上向下计数器
SCON:
串行口控制寄存器
寄存器地址98H,位寻址9FH〜98H
位地址
9F
9E
9D
9C
9B
9A
99
98
位符号
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0、SM1:
申行口工作方式选择位
两个选择位对应于四种状态,所以串行口能以四种方式工作,(UART---异步通讯口)见表2-9。
表2-9串行口操作方式选择
SM0
SM1
方式
功能
波特率
0
0
0
移位寄存器方式
fosc/12
0
1
1
8位UART
□J发
1
0
2
9位UART
fosc/64或fosc/32
1
1
3
?
位UART
口J受
SM2:
多机通信控制位
Mode0时,SM2=0
Mode1时,若SM2=1且收到有效的停止位,WJRI=1(产生RI中断),否则RI=0;
Mode2或Mode3时,若SM2=1且收到第九位为1,则RI=1(产生RI中断),若第九位为0,则RI=0;
REN:
允许/禁止申行口接收的控制位
REN=1时,允许接收,REN=0时,禁止接收
TB8:
在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或活零,也可以作为奇偶校验位,在方式1中是停止位。
RB8:
在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式1中,RB8收到的是停止位,在方式0中不用。
TI——申行口发送中断请求标志位
当发送完一帧申行数据后,由硬件置1;在转向中断服务程序后,用软件活0。
RI申行口接收中断请求标志位
当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。
PCON:
电源控制器及波特率选择寄存器
字节地址=87H,不可位寻址
SMOD
-
-
POF
GF1
GF0
PD
IDL
SMOD——波特率倍增位
GF1、GF0——用户通用标记
PD——掉电方式控制位,PD=1时进入掉电模式
IDL——空闲方式控制位,IDL=1时进入空闲方式
在AT89S51中PCON.4是电源断电标记位POF,上电是为1
中断编号
中断源
中断向量
--
上电复位
0000H
0
「外部中断INT0
0003H
1
定时器0溢出
000BH
2
「外部中断INT1
0013H
3
定时器1溢出
001BH
4
「申行口中断
0023H
5
定时器2溢出
002BH
在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用编时一样简便.
内部函数描述
_crol_字符循环左移
_cror_字符循环右移
_irol_整数循环左移
_iror_整数循环右移
_lrol_长整数循环左移
_lror_长整数循环右移
_nop_空操作8051NOP指令
_testbit_测试并活零位8051JBC指令
函数名:
_crol_,_irol_,_lrol_
原型:
unsignedchar_crol_(unsignedcharval,unsignedcharn);
unsignedint_irol_(unsignedintval,unsignedcharn);
unsignedint_lrol_(unsignedintval,unsignedcharn);
举例:
_crol_,_cror_:
将char型变量循环向左(右)移动指定位数后返回
_testbit_:
相当丁JBCbitvar测试该位变量并跳转同时活除。
_chkfloat_:
测试并返回源点数状态。
就是汇编中的子函数。
_crol_,_cror_:
如国二进制数为01010101那么_crol_
(1)左移1位后将高位补低位。
结果10101010。
功能:
_crol_,_irol_,_lrol_以位形式将val左移n位,该函数与8051“RLA指令相关,上浦几个函数不同亍参数类型。
例:
#include
main()
{
unsignedinty;
C-51程序设计37
y=0x00ff;
y=_irol_(y,4);
}
函数名:
_cror_,_iror_,_lror_
原型:
unsignedchar_cror_(unsignedcharval,unsignedcharn);
unsignedint_iror
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51 单片机 引脚 功能 特殊 寄存器 详解