EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机的特殊功能寄存器(SFR)
D) b5 y9 y" g: g1 Z1 N
8 d) U% ?' j# }+ R' f5 p& T1 f
/ d) I. P) D8 r9 j) o! U, m在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下:
, K& T! N& t' Y" M! _% V- p符号 | 地址 | 功能介绍 | B | F0H | B寄存器 | ACC | E0H | 累加器 | PSW | D0H | 程序状态字 | IP | B8H | 中断优先级控制寄存器 | P3 | B0H | P3口锁存器 | IE | A8H | 中断允许控制寄存器 | P2 | A0H | P2口锁存器 | SBUF | 99H | 串行口锁存器 | SCON | 98H | 串行口控制寄存器 | P1 | 90H | P1口锁存器 | TH1 | 8DH | 定时器/计数器1(高8位) | TH0 | 8CH | 定时器/计数器1(低8位) | TL1 | 8BH | 定时器/计数器0(高8位) | TL0 | 8AH | 定时器/计数器0(低8位) | TMOD | 89H | 定时器/计数器方式控制寄存器 | TCON | 88H | 定时器/计数器控制寄存器 | DPH | 83H | 数据地址指针(高8位) | DPL | 82H | 数据地址指针(低8位) | SP | 81H | 堆栈指针 | P0 | 80H | P0口锁存器 | PCON | 87H | 电源控制寄存器 | 5 S0 D8 ~' W: V4 A4 v# t
分别说明如下: 1、ACC---是累加器,通常用A表示。 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器。 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 5 W4 w# m8 U) d$ }# p3 }
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | CY | AC | F0 | RS1 | RS0 | OV | | P |
, T% @! B9 |8 z. o( `下面我们逐一介绍各位的用途 CY:进位标志。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 例:78H+97H(01111000+10010111) AC:辅助进、借位(高半字节与低半字节间的进、借位)。 例:57H+3AH(01010111+00111010) 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。 4、DPTR(DPH、DPL)--------数据指针,可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。 5、P0、P1、P2、P3------这个我们已经知道,是四个并行输入/输出口的寄存器。它里面的内容对应着管脚的输出。 6、IE-----中断充许寄存器 按位寻址,地址:A8H
& _0 n5 G7 @) T! L ^% ?B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | EA | - | ET2 | ES | ET1 | EX1 | ET0 | EX0 | 6 ~8 @5 @' {. s8 t4 m$ W* d
EA (IE.7):EA=0时,所有中断禁止(即不产生中断) EA=1时,各中断的产生由个别的允许位决定 - (IE.6):保留 ET2(IE.5):定时2溢出中断充许(8052用) ES (IE.4):串行口中断充许(ES=1充许,ES=0禁止) ET1(IE.3):定时1中断充许 EX1(IE.2):外中断INT1中断充许 ET0(IE.1):定时器0中断充许 EX0(IE.0):外部中断INT0的中断允许 7、IP-----中断优先级控制寄存器 按位寻址,地址位B8H ( C+ ?9 S) f( W+ I. Z1 Y) b
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | - | - | PT2 | PS | PT1 | PX1 | PT0 | PX0 |
" G: @7 f( R0 o7 E$ f; @- (IP.7):保留 - (IP.6):保留 PT2(IP.5):定时2中断优先(8052用) PS (IP.4):串行口中断优先 PT1(IP.3):定时1中断优先 PX1(IP.2):外中断INT1中断优先 PT0(IP.1):定时器0中断优先 PX0(IP.0):外部中断INT0的中断优先 8、TMOD-----定时器控制寄存器 不按位寻址,地址89H ( Z6 G4 [+ a8 B8 c: k9 y- i
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M |
* \" a$ Q; G0 Q# ~- yGATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。 C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。 M1 :模式选择位高位 M0 :模式选择位低位
# j* ^6 P" Q( v* Q3 f3 eM1 | M0 | 工作模式 | 0 | 0 | 13位计数/计时器 | 0 | 1 | 16位计数/计时器 | 1 | 0 | 8位自动加载计数/计时器 | 1 | 1 | 定时器1停止工作,定时器0分为两个独立的8位定时器TH0及TL0 | ! X) {1 {1 I5 z6 V# ^( I
9、TCON-----定时器控制寄存器
O2 E. H. Y( b, k6 w) M按位寻址,地址7 C0 m& ?; g% [; h4 Y6 p6 m! W
位88H B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
0 S2 n" {$ A" S/ M$ g& |803l单片机共有21个字节的特殊功能寄存器(SFR),起着专用寄存器的作用,用来设置片内电路的运行方式,记录电路的运行状态,并表明有关标志等。此外,特殊功能寄存器中,还有把并行和串行I/O端口映射过来的寄存器,对这些寄存器的读写,可实现从相应I/O端口的输入、输出操作。 21个特殊功能寄存器不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作。 可位寻址的SFR的分布: % f7 C9 R L J. q' K
符号 | 地址 | 功能介绍 | B | F0H | B寄存器 | ACC | E0H | 累加器 | PSW | D0H | 程序状态字 | IP | B8H | 中断优先级控制寄存器 | P3 | B0H | P3口锁存器 | IE | A8H | 中断允许控制寄存器 | P2 | A0H | P2口锁存器 | SBUF | 99H | 串行口锁存器 | SCON | 98H | 串行口控制寄存器 | P1 | 90H | P1口锁存器 | TH1 | 8DH | 定时器/计数器1(高8位) | TH0 | 8CH | 定时器/计数器1(低8位) | TL1 | 8BH | 定时器/计数器0(高8位) | TL0 | 8AH | 定时器/计数器0(低8位) | TMOD | 89H | 定时器/计数器方式控制寄存器 | TCON | 88H | 定时器/计数器控制寄存器 | DPH | 83H | 数据地址指针(高8位) | DPL | 82H | 数据地址指针(低8位) | SP | 81H | 堆栈指针 | P0 | 80H | P0口锁存器 | PCON | 87H | 电源控制寄存器 | 1 Y3 R) |& |* i: D% |/ N
4 Z! o" h' l/ N1 { |