8051特殊功能寄存器
《单片机原理及应用》课后习题答案

答案:ALE是地址锁存使能信号,是机器周期的二倍。当不使用单字节双周期的指令,如MOVX类指令时,可以作为外部设备的定时信号。
2.13 有那几种方法能使单片机复位?复位后各寄存器的状态如何?复位对内部RAM有何影响?
2.6 8051如何确定和改变当前工作寄存器组?
2.7 MCS-51单片机的程序存储器中0000H、0003H、000BH、0013H、001BH和0023H这几个地址具有什么特殊的功能?
2.8 8051单片机有哪几个特殊功能寄存器?可位寻址的SFR有几个?
2.9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?
TH1、TL1、TH0、TL0的内容为00H,定时器/计数器的初值为0。
(TMOD)=00H,复位后定时器/计数器T0、T1为定时器方式0,非门控方式。
(TCON)=00H,复位后定时器/计数器T0、T1停止工作,外部中断0、1为电平触发方式。
(T2CON)=00H,复位后定时器/计数器T2停止工作。
可位寻址的SFR有11个。
2.9 程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么?
答案:PSW—程序状态字。主要起着标志寄存器的作用。常用标志位及其作用如下:
Cy——进(借)位标志,其主要作用是保存算术运算的进或借位并在进行位操作时做累加器。
在执行某些算术和逻辑指令时,可以被硬件或软件置位或清零。在算术运算中它可作为进位标志,在位运算中,它作累加器使用,在位传送、位与和位或等位操作中,都要使用进位标志位。
2.14 MCS-51的时钟振荡周期、机器周期和指令周期之间有何关系?
51单片机原理介绍

51单片机原理介绍单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统,以下是8051系列单片机原理和内部结构基础介绍外部引脚功能存储空间配置和功能片内RAM结构和功能特殊功能寄存器的用途和功能程序计数器PC的作用和基本工作方式I/O端口结构、工作原理及功能 时钟和时序 复位电路、复位条件和复位后状态 低功耗工作方式的作用和进入退出的方法§2-1 单片机原理简介和引脚功能一、内部结构二、引脚功能40个引脚大致可分为4类:电源、时钟、控制和I/O 引脚。
⒈ 电源: ⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD功能:在Vcc掉电情况下,接备用电源。
⑷ EA/Vpp:内外ROM选择/片内EPROM编程电源。
① EA功能:内外ROM选择端。
② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
⒋ I/O线80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
单片机复习题

《单片机》复习题一、填空题:8051单片机的存储器分为片内程序存储器、外部程序存储器、外部数据存储器、内部RAM和特殊功能寄存器。
单片机复位方式有电平复位、脉冲复位和自动复位。
8051单片机的并行I/O口共有4个,分别是p0口、p1口、p2口和p3口。
8051单片机指令系统按操作功能可分为数据传送指令、算术运算指令、逻辑运算指令、位操作指令、控制及转移指令五大类。
操作码助记符是由英文字母组成的字符串,它规定了指令的执行动作。
8051单片机堆栈中数据的压入和弹出是按先进后出的规律。
堆栈指令包括数据入栈指令和数据出栈指令两类。
二、判断题(正确的打√,错误的打×,)1、只读存储器ROM内部信息停电后会丢失。
(×)2、堆栈操作是按“后进先出”的原则存取数据。
(√)3、8051单片机访问存储器时,同一地址对应惟一的存储单元。
(×)4、数据寄存器指针DPTR由DPH和DPL组成。
(√)5、程序计数器PC总是指向正在执行的指令地址。
(√)6、汇编语言程序中的注释可以缺省。
(√)7、指令中操作码助记符项可有可无。
(×)8、计算机寻址方式越多,计算机的功能超强,灵活性亦越大。
(√)9、若累加器A中“1”的个数为偶数,则奇偶标志位P为1。
(×)10、作算术运算时,若有进位则一定有溢出。
(×)三、选择题1、单片机机器内的数是以(C)的形式表示的A、原码B、反码C、补码D、ASCII码2、8051单片机有()个特殊功能寄存器。
A、3B、10C、21D、1283、数据寄存器指针DPTR是一个()位的寄存器。
A、8B、16C、24D、324、8051单片机的工作寄存器分成(B)组,每组有(D)单元。
A、2个B、4个C、6个D、8个5、SJMP rel指令中rel的取值范围为()。
A、+127~-127B、0~+127C、0~-128D、+127~-1286、指令MOVX A,@DPTR中源操作数属于()方式。
单片机原理与应用习题

单片机原理与应用习题习题11.填空:⑴20D=10100B=14H;⑵1100101B=101D=65H;⑶1F8H=111111000B=504D;⑷1个字节由8个二进制位组成,每个二进制位只有2种状态,可表示为0或1;⑸1K字节就是2的10次方字节,即1024个字节;1M字节就是2的20次方字节,约为1048567个字节。
2.在8位二进制中,+26、-26、-127、-1的补码(用十六进制表示)是多少?解:正数的补码等于原码,负数的补码等于它的原码除符号位不变,其余的各位求反加1。
[+26]原=000110101B=1AH,[+26]补=1AH[-26]原=100110101B,[-26]补=11100101B+1=11100110B=0E6H[-127]原=11111111B,[-127]补=10000000B+1=10000001B=81H[-1]原=10000001B,[-1]补=11111110B+1=11111111B=0FFH3.用十进制写出下列补码表示的数的真值:FEH、FBH、80H、11H、70H、7FH。
解:真值是指日常用“+”或“-”号表示的数。
机器数是指计算机中用编码表示的数,正数的符号以最高位为0表示,负数的符号以最高位为1表示。
根据补码求真值的一个通俗口诀是“正码不变,负码求补,补后勿忘添负号”。
①FEH=11111110B,其符号位为“1”,属负数,故其原码为10000001B+1=10000010B,即FEH真值为-2;②同理FBH属负数,其真值为-5;③80H的真值为-128;④11H的真值为+17;⑤70H的真值为+112;⑥7FH的真值为+127。
4.微型计算机主要由哪几部分组成?各部分有何功能?答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bu):即地址总线AB、数据总线DB和控制总线CB来连接。
8051单片机特殊功能存储器SFR基础详解

8051 单片机特殊功能存储器SFR 基础详解
8051 单片机共有21 个专用寄存器,现把其中部分寄存器简单介绍如
下:
程序计数器(PCProgram Counter)。
在实训中,我们已经知道PC 是一个16 位的计数器,它的作用是控制程序的执行顺序。
其内容为将要执行指令的地址,寻址范围达64 KB。
PC 有自动加1 功能,从而实现程序的顺序执行。
PC 没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、
调用、返回等指令改变其内容,以实现程序的转移。
因地址不在SFR(专用寄
存器)之内,一般不计作专用寄存器。
累加器(ACCAccumulator)。
累加器为8 位寄存器,是最常用的专用寄存
器,功能较多,地位重要。
它既可用于存放操作数,也可用来存放运算的中
间结果。
MCS-51 单片机中大部分单操作数指令的操作数就取自累加器,许
多双操作数指令中的一个操作数也取自累加器。
B 寄存器。
B 寄存器是一个8 位寄存器,主要用于乘除运算。
乘法运算
时,B 存乘数。
乘法操作后,乘积的高8 位存于B 中,除法运算时,B 存除数。
除法操作后,余数存于B 中。
此外,B 寄存器也可作为一般数据寄存器
使用。
程序状态字(PSWProgram Status Word)。
程序状态字是一个8 位寄存器,用于存放程序运行中的各种状态信息。
其中有些位的状态是根据程序执行结。
80C51特殊功能寄存器地址表

80C51特殊功能寄存器地址表SFR MSB 位地址/位定义LSB 字节地址B F7 F6 F5 F4 F3 F2 F1 F0 F0HACC E7 E6 E5 E4 E3 E2 E1 E0 E0HPSW D7 D6 D5 D4 D3 D2 D1 D0 D0H CY AC F0 RS1 RS0 OV F1 PIP BF BE BD BC BB BA B9 B8 B8H ———PS PT1 PX1 PT0 PX0P3 B7 B6 B5 B4 B3 B2 B1 B0 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0IE AF AE AD AC AB AA A9 A8 A8H EA ——ES ET1 EX1 ET0 EX0P2A7 A6 A5 A4 A3 A2 A1 A0 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0SBUF (99H)SCON9F 9E 9D 9C 9B 9A 99 98 98H SM0 SM1 SM2 REN TB8 RB8 TI RIP197 96 95 94 93 92 91 90 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0TH1 (8DH) TH0 (8CH) TX1 (8BH) TX0 (8AH)TMOD GATE C/T M1 M0 GATEC/T M1 M0 (89H)TCON8F 8E 8D 8C 8B 8A 89 88 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0PCON SMOD ———GF1 GF0 PD IDL (87H)DPH (83H)DPL (82H)SP (81H)P0 87 86 85 84 83 82 81 80 80HP0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0/*--------- 8051内核特殊功能寄存器-------------*/sfr ACC = 0xE0; //累加器sfr B = 0xF0; //B 寄存器sfr PSW = 0xD0; //程序状态字寄存器sbit CY = PSW^7; //进位标志位sbit AC = PSW^6; //辅助进位标志位sbit F0 = PSW^5; //用户标志位0sbit RS1 = PSW^4; //工作寄存器组选择控制位sbit RS0 = PSW^3; //工作寄存器组选择控制位sbit OV = PSW^2; //溢出标志位sbit F1 = PSW^1; //用户标志位1sbit P = PSW^0; //奇偶标志位sfr SP = 0x81; //堆栈指针寄存器sfr DPL = 0x82; //数据指针0低字节sfr DPH = 0x83; //数据指针0高字节/*------------ 系统管理特殊功能寄存器-------------*/sfr PCON = 0x87; //电源控制寄存器sfr AUXR = 0x8E; //辅助寄存器sfr AUXR1 = 0xA2; //辅助寄存器1sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器sfr CLK_DIV = 0x97; //时钟分频控制寄存器sfr BUS_SPEED = 0xA1; //总线速度控制寄存器/*----------- 中断控制特殊功能寄存器--------------*/sfr IE = 0xA8; //中断允许寄存器sbit EA = IE^7; //总中断允许位sbit ELVD = IE^6; //低电压检测中断控制位sbit EADC = IE^5; //ADC中断允许控制位sbit ES = IE^4; //串口1中断允许位sbit ET1 = IE^3; //定时器1溢出中断允许位sbit EX1 = IE^2; //外部中断1允许位sbit ET0 = IE^1; //定时器0溢出中断允许位sbit EX0 = IE^0; //外部中断0允许位sfr IE2 = 0xAF; //中断允许寄存器2sfr IP = 0xB8; //中断优先级寄存器sbit PPCA = IP^7; // PCA中断优先级控制位sbit PLVD = IP^6; //低电压检测中断优先级控制位sbit PADC = IP^5; //ADC中断优先级控制位sbit PS = IP^4; //串口1中断优先级控制位sbit PT1 = IP^3; //定时器1中断优先级控制位sbit PX1 = IP^2; //外部中断1优先级控制位sbit PT0 = IP^1; //定时器0中断优先级控制位sbit PX0 = IP^0; //外部中断0优先级控制位sfr IPH = 0xB7; //中断优先级高位寄存器sfr IP2 = 0xB5; //第二中断优先级寄存器低字节sfr IPH2 = 0xB6; //第二中断优先级寄存器高字节/*--------------- I/O 口特殊功能寄存器-------------------*/sfr P0 = 0x80; //P0口寄存器sfr P0M1 = 0x93; //P0口工作模式寄存器1sfr P0M0 = 0x94; //P0口工作模式寄存器0sfr P1 = 0x90; //P1口寄存器sfr P1M1 = 0x91; //P1口工作模式寄存器1sfr P1M0 = 0x92; //P1口工作模式寄存器0sfr P1ASF = 0x9D; //P1口模拟量功能设置寄存器sfr P2 = 0xA0; //P2口寄存器sfr P2M1 = 0x95; //P2口工作模式寄存器1sfr P2M0 = 0x96; //P2口工作模式寄存器0sfr P3 = 0xB0; //P3口寄存器sbit T1 = P3^5; //定时器1外部输入sbit T0 = P3^4; //定时器0外部输入sbit INT1 = P3^3; //外部中断1sbit INT0 = P3^2; //外部中断0sbit TXD = P3^1; //串行输入通道sbit RXD = P3^0; //串行输出通道sfr P3M1 = 0xB1; //P3口工作模式寄存器1sfr P3M0 = 0xB2; //P3口工作模式寄存器0sfr P4 = 0xC0; //P4口寄存器sfr P4M1 = 0xB3; //P4口工作模式寄存器1sfr P4M0 = 0xB4; //P4口工作模式寄存器0sfr P4SW = 0xBB; //P4口功能切换寄存器sfr P5 = 0xC8; //P5口(只有P5.3 P5.2 P5.1 P5.0)sfr P5M1 = 0xC9; //P5口工作模式寄存器1sfr P5M0 = 0xCA; //P5口工作模式寄存器0./*----------------- 定时器特殊功能寄存器-----------------*/sfr TCON = 0x88; //定时/计数控制寄存器sbit TF1 = TCON^7; //定时器1溢出中断标志sbit TR1 = TCON^6; //定时器1运行控制位sbit TF0 = TCON^5; //定时器0溢出中断标志sbit TR0 = TCON^4; //定时器0运行控制位sbit IE1 = TCON^3; //外部中断1请求标志sbit IT1 = TCON^2; //选择外部中断请求1为边沿触发方式的控制位sbit IE0 = TCON^1; //外部中断0请求标志sbit IT0 = TCON^0; //选择外部中断请求0为边沿触发方式的控制位sfr TMOD = 0x89; //定时/计数模式控制寄存器sfr TL0 = 0x8A; //定时/计数器0低字节sfr TH0 = 0x8C; //定时/计数器0高字节sfr TL1 = 0x8B; //定时/计数器1低字节sfr TH1 = 0x8D; //定时/计数器1高字节/*-------------- 串行口特殊功能寄存器------------------*/sfr SCON = 0x98; //串行口控制寄存器sbit SM0 = SCON^7; //串行口工作方式设定控制位0(与FE功能复用)sbit FE = SCON^7;sbit SM1 = SCON^6; //串行口工作方式设定控制位1sbit SM2 = SCON^5; //UART的SM2设定sbit REN = SCON^4; //接收允许位sbit TB8 = SCON^3; //发送数据的第九位sbit RB8 = SCON^2; //接收数据的第九位sbit TI = SCON^1; //发送中断标志sbit RI = SCON^0; //接收中断标志sfr SBUF = 0x99; //串口数据缓冲器sfr SADEN = 0xB9; //从机地址掩码寄存器sfr SADDR = 0xA9; //从机地址寄存器sfr S2CON = 0x9A; //串行口2控制寄存器sfr S2BUF = 0x9B; //串行口2数据缓冲器sfr BRT = 0x9C; //独立波特率定时器/*---------------- 看门狗定时器寄存器------------------*/sfr WDT_CONTR = 0xC1; //看门狗定时器控制寄存器/*---------------- PCA 寄存器-----------------*/sfr CCON = 0xD8; //PCA控制寄存器sbit CF = CCON^7; //PCA计数器溢出(CH,CL由FFFFH变为0000H)标志sbit CR = CCON^6; //PCA计数器计数允许控制位sbit CCF1 = CCON^1; //PCA模块1中断标志sbit CCF0 = CCON^0; //PCA模块0中断标志sfr CMOD = 0xD9; //PCA工作模式寄存器sfr CL = 0xE9; //PCA计数器低8位sfr CH = 0xF9; //PCA计数器高8位sfr CCAPM0 = 0xDA; //PAC模块0的工作模式寄存器sfr CCAPM1 = 0xDB; //PAC模块1的工作模式寄存器sfr CCAP0L = 0xEA; //PAC模块0捕捉/比较寄存器低8位sfr CCAP0H = 0xFA; //PAC模块0捕捉/比较寄存器高8位sfr CCAP1L = 0xEB; //PAC模块1捕捉/比较寄存器低8位sfr CCAP1H = 0xFB; //PAC模块1捕捉/比较寄存器高8位sfr PCA_PWM0 = 0xF2; //PCA模块0 PWM寄存器sfr PCA_PWM1 = 0xF3; //PCA模块1 PWM寄存器/*----------------- ADC 寄存器-----------------*/sfr ADC_CONTR = 0xBC; //ADC控制寄存器, 本寄存器不支持位操作sfr ADC_RES = 0xBD; //ADC转换结果高8位寄存器sfr ADC_RESL = 0xBE; //ADC转换结果低2位寄存器/*---------------- SPI 寄存器--------------------*/sfr SPSTA T = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器------------------*/sfr IAP_DA TA = 0xC2; //ISP/IAP Flash数据寄存器sfr IAP_ADDRH = 0xC3; //ISP/IAP Flash地址高字节sfr IAP_ADDRL = 0xC4; //ISP/IAP Flash地址低字节sfr IAP_CMD = 0xC5; //ISP/IAP Flash命令寄存器sfr IAP_TRIG = 0xC6; //ISP/IAP Flash命令触发器sfr IAP_CONTR = 0xC7; //ISP/IAP控制寄存器Love is not a maybe thing. You know when you love someone.。
51单片机存储器结构介绍

51单片机存储器结构介绍MCS-51单片机在物理结构上有四个存储空间:1、片内程序存储器2、片外程序存储器3、片内数据存储器4、片外数据存储器但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:1、片内外统一编址的64K的程序存储器地址空间(MOVC)2、256B的片内数据存储器的地址空间(MOV)3、以及64K片外数据存储器的地址空间(MOVX)在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。
程序内存ROM寻址范围:0000H ~ FFFFH容量64KBEA = 1,寻址内部ROM;EA = 0,寻址外部ROM地址长度:16位作用:存放程序及程序运行时所需的常数。
七个具有特殊含义的单元是:0000H ——系统复位,PC指向此处;0003H ——外部中断0入口000BH —— T0溢出中断入口0013H ——外中断1入口001BH —— T1溢出中断入口0023H ——串口中断入口002BH —— T2溢出中断入口内部数据存储器RAM物理上分为两大区:00H ~ 7FH即128B内RAM和SFR区。
作用:作数据缓冲器用。
下图是8051单片机存储器的空间结构图程序存储器一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。
那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。
程序相当于给微处理器处理问题的一系列命令。
其实程序和数据一样,都是由机器码组成的代码串。
只是程序代码则存放于程序存储器中。
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的端必须接地。
强制CPU从外部程序存储器读取程序。
MCS-51单片机的(SFR)特殊功能寄存器

MCS-51单片机的特殊功能寄存器从图中我们可以看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在一个51单片机的内部包含了这么多的东西。
对图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到相应I/O 口的锁存器就可以了,那么对于定时/计数器,串行I/O口等怎么用呢?在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。
事实上,我们已接触过P1这个特殊功能寄存器了,还有哪些呢?看下表下面,我们介绍一下几个常用的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-----程序状态字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
特殊功能寄 存器
地址
特殊功能寄 存器
地址
特殊功能寄 存器
地址
PO
80H
TH0
8CH
TL2*
CCH
SP
81H
TH1
8DH
TH2*
CDH
DPL
82H
P1
90H
IE
A8H
DPH
83H
SCON
98H
P3
BOH
PCON
87H
SBUF
99H
IP
B8H
TCON
88H
P2
AOH
PSW
DOHBiblioteka TMOD89HT2CON*
特殊功能寄存器
8051 的特殊功能寄存器区(SFR)又称为专用寄存器区,是用来对片内的定时
控制、中断控制、串行接口等内部功能单元进行管理、控制、监控的一组特殊功
能的 RAM 区。805l 单片机中共有 26 个特殊功能寄存器,离散地分布在 80H~FFH
的地址空间范围内。其中 12 个寄存器可以使用位寻址。映射 80H~FFH 的位地址
B FOH FOH-F7H --- --- --- --- --- --- --- ---
下面依次介绍 8051 特殊寄存器的各项功能。
(1)程序与数据指针控制
·PC:程序计数器(PC)用于保存下一条要执行的指令的地址,每取一条专旨今,
PC 中的地址就自动增加 1。PC 的位长为 16 位,因此最大寻址空间为 64kB。在硬 件结构上,PC 独立于 SFR 之外。 ·SP:栈指针(SP)是 8 位的特殊功能寄存器,用于指示 805 1 堆栈栈顶的位置, 系统复位后,SP 初始化为 07H. ·DPTR:数据指针(DPTR)是一个 16 位的特殊功能寄存器,其高位字芾用 DPH 表 示,低位字节用 DPL 表示。DPTR 在程序中既可以作为一个 16 位的寄存器 DPTR 来使用,也可以作为两个 8 位寄存器 DPH.DPL 来访问. (2)累加器与寄存器 ·ACC:累加器(ACC)是最为常用的特殊功能寄存器,大部分单操作数指令均以 ACC 作为其操作敷,多数双操作数指令的第一个操作数也取自 ACC.此外,各种 运算的结果一般也保存在 ACC 中. ·B:寄存器 B 主要用于乘、除等操作,作为运算的第二个操作数,也用于保存 运算的结果。 (3) I/0 口锁存器 ·PO:PO 口锁存器,允许进行位寻址操作. ·P1:Pl 口锁存器,允许进行位寻址操作. ·P2:P2 口锁存器,允许进行位寻址操作. ·P3:P3 口锁存器,允许进行位寻址操作. (4)定时控制 ·TO、T1:8051 单片机内含有两个 16 位定时/计数嚣,它们各自由两个独立的 8 位寄存器组成,分别为 THO.TLO.TH1 和 TL1。程序可以对这 4 个 8 位寄存器寻址, 但不能将 TO.Tl 作为独立的 16 位寄存器来访问. ·TMOD: TMOD 用于控制定时/计数器的工作方式及 4 种工作模式,其中低 4 位 为定时器 TO 的方式控制字,高 4 位为定时器 Tl 的方式控制字. (5)中断控制 ·TCON:TCON 寄存嚣的高 4 位为定时/计数器 TO.TI 的控制寄存器和定时/计数 溢出中断标志.低 4 位为控制外部中断 l 和外部中断 O 的中断触发方式选择和中 断产生标志. ·IE:IE 寄存器用于开放或屏蔽单片机的各个中断源。 ·IP:8051 提供两级中断优先级,可以通过设置 IP 寄存器的相应位对各个中断 源的中断优先级进行独立拉制. (6)串行控制 ·SCON:寄存器用于设置串行口的工作方式和查询接收、发送中断产生标志. ·SBUF:串行数据缓冲嚣 SBUF 用于存放串口中欲发送或已接收的数据,它由两 个独立的寄存器构成,一个是发送缓冲器,一个是接收缓冲器,它们共用一个地 址.当从 SBUF 取数据时,访问接收缓冲器,当向 SBUF 写数据时,访问发送缓 冲器. (7)程序状态寄存器
空间。此外,还有 5 个寄存器 TL2、TH2、T2CON、RCAP2L 和 RCAP2H 是 52 子系列
所特有的,这些寄存器所在的地址在 5l 系列单片机中无定义。8051 特殊功能寄
存器的名称及地址映射如表 1-5 所示。对 52 子系列特有的寄存器表中*标出。
表 1-5 8051 特殊功能寄存器地址映射表
D7
D6
D5
位功能标记 D4 D3 D2
D1
D0
P0 80H 80H-87H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
TCON 88H 88H-8FH TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
P1 90H 90H-97H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
SCON 98H 98H-9FH SM0 SM1 SM2 REN TB8 RB8 T1 R1
P2 A0H A0H-A7H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
1E A8H A8H-AFH EA --- --- ES ET1 EX1 ET0 EX0
P3 B0H B0H-B7H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
IP B8H B8H-BFH --- --- --- PS PT1 PX1 PT0 PX0
T2CON* C8H C8H-CFH TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T CP/RL2
PSW D0H D0H-D7H CY AC F0 RS1 RS0 OV --- P
ACC E0H E0H-E7H --- --- --- --- --- --- --- ---
C8H
ACC
EOH
TL0
8AH
RCAP2L*
CAH
B
FOH
TL1
8BH
RCAP2H*
CBH
可以位寻址的特殊寄存器,其地址均为 8 的整数倍,这些寄存器的各位对应
位地址空间的 80H~FFH,其位地址及位功能标记如表 1-6 所示。
表 1-6 特殊功能寄存器各位位地址及位功能
特殊功 能寄存
器
地 址
映射位 地址
D7
D6
D5
D4
D3
D2
D1
D0
CY
AC
F0
RS1
RS0
0V
---
P
PSW 寄存器各位功能如下: CY 进位标志位,表示在字节运算时发生进位或借位。
AC 辅助进位标志位,当 ACC 低 4 位发生进位时置位该标志位。 FO 通用标志位,由用户定义。 RSI.RSO 工作寄存器组选择位。 OV 溢出标志位,表示运算时发生溢出。 P 奇偶校验标志位。 通过 PSW 的各状态位,可以实现程序跳转、多字节运算等功能。