8051特殊功能寄存器SFR图表
80C51特殊功能寄存器地址表
80C51特殊功能寄存器地址表/*--------- 8051内核特殊功能寄存器-------------*/sfr ACC = 0xE0; 8F0M0M1M1M2M2M3M3M4M4M5M5M/*----------------- 定时器特殊功能寄存器-----------------*/ 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 SPSTAT = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器------------------*/sfr IAP_DATA = 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控制寄存器。
80C51的结构和原理
1第二章80C51的结构和原理2学习目标熟悉80C51单片机的结构和应用模式掌握80C51的内部资源,特别是存储器配置 理解单片机的工作原理和基本时序重点内容80C51单片机的应用模式80C51单片机存储器及SFR 配置 80C51单片机I/O 口特点32.6 80C51的并行口结构与操作2.1 80C51系列概述2.2 80C51的基本结构与应用模式2.3 80C51典型产品资源配置与引脚封装2.4 80C51的内部结构2.5 80C51的存储器组织第二章80C51的结构和原理42.1 80C51系列概述2.1.1 MCS-51系列(1)MCS-51是Intel公司生产的一个单片机系列名称。
属于这一系列的单片机有多种,如:﹡8051/8751/8031;﹡8052/8752/8032;﹡80C51/87C51/80C31﹡80C52/87C52/80C32等。
5(2)该系列生产工艺有两种:CHMOS 是CMOS 和HMOS 的结合,既保持了HMOS 高速度和高密度的特点,还具有CMOS 的低功耗的特点。
在产品型号中凡带有字母“C”的即为CHMOS 芯片,CHMOS 芯片的电平既与TTL 电平兼容,又与CMOS 电平兼容。
一是HMOS 工艺(高密度短沟道MOS 工艺)。
二是CHMOS 工艺(互补金属氧化物的HMOS 工艺)。
2.1 80C51系列概述6(3)在功能上,该系列单片机有基本型和增强型两大类:增强型:8052/8752/803280C52/87C52/80C32基本型:8051/8751/803180C51/87C51/80C312.1 80C51系列概述7(4)在片内程序存储器的配置上,该系列单片机有三种形式,即掩膜ROM 、EPROM 和ROMLess(无片内程序存储器)。
如:﹡80C51有4K 字节的掩膜ROM ;﹡87C51有4K 字节的EPROM ;﹡80C 31在芯片内无程序存储器。
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.。
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 单片机内部主要部件单片机内部电路比较复杂,MCS-51系列的8051型号单片机的内部电路根据功能可以分为CPU、RAM、ROM/EPROM、并行口、串行口、定时/计数器、中断系统及特殊功能寄存器(SFR)等8个主要部件,如图1-2-1所示。
这些部件通过片内的单一总线相连,采用CPU加外围芯片的结构模式,各个功能单元都采用特殊功能寄存器集中控制的方式。
其他公司的51系列单片机与8051结构类似,只是根据用户需要增加了特殊的部件,如A/D转换器等。
在设计程序过程中,寄存器的使用非常频繁。
本节内容在了解单片机内部的组成机构基础上,重点介绍单片机内部常用的寄存器的作用。
图1-2-1 MCS-51架构1.2.1中央处理器(CPU)中央处理器是单片机的核心,主要功能是产生各种控制信号,根据程序中每一条指令的具体功能,控制寄存器和输入/输出端口的数据传送,进行数据的算术运算、逻辑运算以及位操作等处理。
MCS-51系列单片机的CPU字长是8位,能处理8位二进制数或代码,也可处理一位二进制数据。
单片机的CPU从功能上一般可以分为运算器和控制器两部分。
一、控制器控制器由程序计数器PC、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。
其功能是对来自存储器中的指令进行译码,通过定时电路,在规定的时刻发出各种操作所需的全部内部和外部的控制信号,使各部分协调工作,完成指令所规定的功能。
各部分功能部件简述如下。
1.程序计数器PC(Program Counter)程序计数器是一个16位的专用寄存器,用来存放下一条指令的地址,具有自动加1的功能。
当CPU要取指令时,PC的内容送地址总线上,从存储器中去取出一个指令码后,PC 内容自动加1,指向下一个指令码,以保证程序按顺序执行。
PC是用来指示程序的执行位置,在顺序执行程序时,单片机每执行一条指令,PC就自动加1,以指示出下一条要取的指令的存储单元的16位地址。
也就是说,CPU总是把PC 的内容作为地址,根据该地址从存储器中取出指令码或包含在指令中的操作数。
C51特殊功能寄存器地址表
80C51特殊功能寄存器地址表/*--------- 8051内核特殊功能寄存器 -------------*/sfr ACC = 0xE0; 8F0M0M1M1M2M2M3M3M4M4M5M5M/*----------------- 定时器特殊功能寄存器-----------------*/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 SPSTAT = 0xCD; //SPI状态寄存器,本寄存器不支持位操作sfr SPCTL = 0xCE; //SPI控制寄存器sfr SPDAT = 0xCF; //SPI数据寄存器/*----------------- ISP_IAP_EEPROM 寄存器 ------------------*/sfr IAP_DATA = 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控制寄存器。
8051特殊功能寄存器
地址
特殊功能寄 存器
地址
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
DOH
TMOD
89H
T2CON*
8051 的特殊功能寄存器区(SFR)又称为专用寄存器区,是用来对片内的定时
控制、中断控制、串行接口等内部功能单元进行管理、控制、监控的一组特殊功
能的 RAM 区。805l 单片机中共有 26 个特殊功能寄存器,离散地分布在 80H~FFH
的地址空间范围内。其中 12 个寄存器可以使用位寻址。映射 80H~FFH 的位地址
串行数据缓冲嚣sbuf用于存放串口中欲发送或已接收的数据它由两个独立的寄存器构成一个是发送缓冲器一个是接收缓冲器它们共用一个地sbuf取数据时访问接收缓冲器当向sbuf写数据时访问发送缓7程序状态寄存器d7d6d5d4d3d2d1d0cyacf0rs1rs00vpsw寄存器各位功能如下
特殊功能寄存器
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
51单片机存储器结构介绍
MCS-51单片机存储器结构从用户的角度上,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(低128单元用户RAM 和高128单元SFR区)作用:作数据缓冲器用。
一个微处理器能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件,其实微处理器并不聪明,它们只是完全按照人们预先编写的程序而执行之。
那么设计人员编写的程序就存放在微处理器的程序存储器中,俗称只读程序存储器(ROM)。
程序相当于给微处理器处理问题的一系列命令。
其实程序和数据一样,都是由机器码组成的代码串。
只是程序代码则存放于程序存储器中。
MCS-51具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。
(对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的EA端必须接地。
强制CPU从外部程序存储器读取程序。
)对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC 值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。
8051单片机21个特殊功能寄存器和指令汇总
MCS-51单片机21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SF R存储空间中,地址空间为80H-FFH,在这片SF R空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。
在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有R OM,用来存放程序,有R AM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。
在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SF R)。
这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):分别说明如下:1、ACC---是累加器,通常用A表示这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。
它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。
自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。
该标志常用作程序分枝转移的判断条件。
2、B--一个寄存器在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。
3、PSW-----程序状态字。
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。
它的各位功能请看下表:下面我们逐一介绍各位的用途CY:进位标志。
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。
这样就没事了。
51—52系列单片机特殊功能寄存器一览表
51—52系列单片机特殊功能寄存器总结P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/V PD P3.0/RXD P3.1/TXD P3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR P3.7/RD XTAL2XTAL1V SSV CC P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/V PP ALE/PROG PSEN P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0RST P3.0/RXD P3.1/TXDXTAL2XTAL1P3.2/INT0P3.3/INT1P3.4/T0P3.5/T1GNDV CC P1.7P1.6P1.5P1.4P1.3P1.2P1.1/AIN1P1.0/AIN0P3.7注:类似的还有Philips公司的 87LPC64,20引脚8XC748/750/(751),24引脚 8X749(752),28引脚 8XC754,28引脚 等等P3第二功能各引脚功能定义: P3.0:RXD 串行口输入 P3.1:TXD 串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR 外部写控制 P3.7:RD 外部读控制C -51的数据类型扩充定义 sfr:特殊功能寄存器声明 sfr16:sfr 的16位数据声明 sbit:特殊功能位声明 bit:位变量声明例:sfr SCON = 0X98; sfr16 T2 = 0xCC;sbit OV = PSW^2;第一节:片内RAM 映射:51:00H —7FH 128B 片内(DA TA ),其中00H —07H : bank0。
08H —0FH::bank1。
10H —17H :bank2。
18H —1FH :bank3。
20H —2FH::位寻址区(bdata )。
第2章 MCS-51系列单片机的结构及原理
2.3 引脚功能——封装形式
40P6-PDIP
单 片 机 技 术
2.3 引脚功能——引脚含义
P1. 0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST RXD/ P3. 0 TXD/ P3.1 INT0/ P3.2 INT1/ P3.3 T0/ P3.4 T1/ P3.5 WR/ P3.6 RD/ P3.7 XTAL2 XTAL1 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 24 22 21 VCC P0. 0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0
2mcs51系列单片机的内部总体结构88微处理器运算部件b数据存储器ramp0口p2口程序存储器特殊功特殊功能寄存器sfrromepromvccvss图21mcs51单片机的基本结构控制部件p1口p3口串行口定时计数器中断系统88xtal1xtal2psenaleeareset端口0驱动器端口2驱动器ram地址锁存器ram1288端口0锁存器端口2锁存器rom4k8b寄存器程序地址寄存器缓冲器寄存器vcc5vvss堆栈指针spacctmp2tmp1p00p07p20p27图22mcs51片内总体结构框图rstpc1寄存器pcdptr指针p10p17psw端口3锁存器端口1锁存器端口1驱动器端口3驱动器scontl0tmodth1iepconth0sbuftxrx中断串行口和定时器逻辑tcontl1iposcp30p37alepsenxtal2xtal1alu指令寄存器定时与控制指令译码器返回本节2
80C51特殊功能寄存器地址表
SFR B ACC PSW IP P3 IE P2SBUF SCON P1TH1 TH0 TX1 TX0 TMODTCONPCON DPH DPL SPP080C51 特别功能存放器地点表MSB位地点 /位定义LSBF7F6F5F4F3F2F1F0E7E6E5E4E3E2E1E0D7D6D5D4D3D2D1D0CY AC F0RS1RS0OV F1PBF BE BD BC BB BA B9B8———PS PT1PX1PT0PX0B7B6B5B4B3B2B1B0P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0AF AE AD AC AB AA A9A8EA——ES ET1EX1ET0EX0A7A6A5A4A3A2A1A0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.09F9E9D9C9B9A9998SM0SM1SM2REN TB8RB8TI RI9796959493929190P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0GAT C/T M1M0GAT C/T M1M0E8E8D8CE8A8988 8F8BTF1TR1TF0TR0IE1IT1IE0IT0 SMOD———GF1GF0PD IDL8786858483828180P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0字节地点F0HE0HD0HB8HB0HA8HA0H(99H)98H90H(8DH)(8CH)(8BH)(8AH)(89H)88H(87H)(83H)(82H)(81H)80H/*--------- 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.2P5.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 SPSTAT= 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控制存放器。
mcs-51系列单片机基本结构与工作原理
寄存器间接寻址
直接寻址 直接寻址
直接寻址
寄存器寻址 寄存器间接寻址
(4)MOV 60H,@R1
表2-2 特殊功能寄存器SFR的名称及地址(一)
§ MCS-51的扩展应用
一、单片机扩展的基本概念 1、单片机最小系统:使单片机运行的最少器件构成的 系统,就是最小系统。 无ROM芯片:8031 必须扩展ROM,复位、晶振电路 有ROM芯片:89C51等,不必扩展ROM,只要有复位、 晶振电路 2、扩展使用的三总线: 地址总线:由外部程序存储器取指,P0-低8位; P2-高8位 数据总线:指令输入,P0 控制总线:RD、WR、 ALE、 PSEN
立即数寻址
变址间接寻址 相对寻址 位寻址
程序存储器(操作常数)
程序存储器(@A+DPTR、@A+PC) 程序存储器(修改了PC值) 内部数据存储器及特殊功能寄存器中 某些单元位
Example 判断下列指令各操作数的寻址方式
(1)MOV A , #65H
(2)MOV @R1,65H (3)MOV 30H,R2 寄存器寻址 立即数寻址
(读、 写、地址锁存允许、 外程序存储器读选通)
图2-5 8051特殊功能寄存器地址分布图
二、存储器的扩展
1、随机读写存储器RAM的扩展 :数据存储器一般采用RAM芯片, 这种存储器在电源关断后,存储的数据将全部丢失。有两大类: 动态RAM(DRAM),一般容量较大,易受干扰,使用略复杂。例 2116、2186 静态RAM(SRAM),在工业现场常使用SRAM,例:6264、6116
二、专用寄存器组
1、程序计数器 PC 16位计数器,指向程序存储器中被执行的指令所在的地址。本身没 有地址,在物理上独立。 寻址范围0000~FFFFH的64KB空间。 2、数据指针DPTR 16位地址指针,可寻址范围0000~FFFFH 的64KB空间,可指向程 序、数据存储器。 3、堆栈指针SP 8位地址寄存器,SP用来管理堆栈。它指向内部RAM的一个存储单 元,且总是指向栈顶单元。 MCS-51的堆栈是内部RAM中的一个部分,符合“先进后出、后进 先出”原则。 4、累加器ACC ACC是一个具有特殊用途的8位寄存器,主要用于存放操作数或运算 结果。8051指令系统中多数指令的执行都要通过累加器ACC进行。因此, 在CPU中,累加器的使用频率是很高的。也可简写累加器A。
51单片机特殊功能寄存器SFR介绍
51单片机特殊功能寄存器(SFR)介绍 1、21个寄存器介绍51系列单片机内部主要有四大功能模块,分别是I/O口模块、中断模块、定时器模块和串口通信模块(串行I/O口),如其结构和功能如下图:图1 51单片机结构和功能图51单片机掌握的好坏,其实就是能否正确操作这四个功能模块,而其操作的实质则又是能否对每个模块所对应寄存器的正确操纵。
所以下面重点介绍一下51系列单片机内部的特殊功能寄存器(简称SFR,以下说明以此代替)。
(关于什么叫特殊功能寄存器,这里先不作介绍,不懂的请查阅51单片机相关资料。
)51单片机内部共有21个SFR,其布局如图2,从图中可以看出,每个SFR占1个字节,多数字节单元中的每一位又有专用的“位名称”。
这21个SFR又按是否可以位寻址分为两大部分,ACC、IE、P1等11个可以位寻址,SP、TMOD等不可以位寻址。
图2 51单片机SFR布局图2、位寻址解释下面以P1、IE寄存器(可位寻)和TMOD(不可位发)为例解释一下位寻址。
能位寻址是指能够对它的每一位都可以进行位操作,如图3,如P1口接8个灯,灯阳极接正极,阴极接单片机的P1口的8个脚。
现在要让接P1口第1个引脚的灯亮,程序中可以写P1=0xfe,也可以先定义deng1=P1^0,即P1口的第1位,至于为什么写P1^0,是因为KEIL软件规定的,然后deng1=0。
也就是P1=0xfe和deng1=0都是可以点亮第一个灯,后者deng1=0属于位操作,前者P1=0xfe 属于总线操作,也就是8个引脚一起操作。
图3 8位灯接线图下面再以IE寄存器为例进行位操作的解释。
IE寄存器为中断允许寄存器,如各位的作用如图4.其中第7位EA是51单片机5个中断的总开关,如要进入任何一个中断时,需先把EA打开,因为可以进行位操作,此时程序有两种写法:1)IE=0x80(假如其它位为0,即1000 0000),也可以直接写EA=1,后者EA=1即属于位操作。
新一代 1T 8051系列 单片机内核特殊功能寄存器 C51 Core SFRs
//--------------------------------------------------------------------------------//新一代1T 8051系列单片机内核特殊功能寄存器C51 Core SFRs// 7 6 5 4 3 2 1 0 Reset Valuesfr ACC = 0xE0; //Accumulator 0000,0000sfr B = 0xF0; //B Register 0000,0000sfr PSW = 0xD0; //Program Status Word CY AC F0 RS1 RS0 OV F1 P 0000,0000//-----------------------------------sbit CY = PSW^7;sbit AC = PSW^6;sbit F0 = PSW^5;sbit RS1 = PSW^4;sbit RS0 = PSW^3;sbit OV = PSW^2;sbit P = PSW^0;//-----------------------------------sfr SP = 0x81; //Stack Pointer 0000,0111sfr DPL = 0x82; //Data Pointer Low Byte 0000,0000sfr DPH = 0x83; //Data Pointer High Byte 0000,0000//--------------------------------------------------------------------------------//新一代1T 8051系列单片机系统管理特殊功能寄存器// 7 6 5 4 3 2 1 0 Reset Valuesfr PCON = 0x87; //Power Control SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0001,0000// 7 6 5 4 3 2 1 0 Reset Valuesfr AUXR = 0x8E; //Auxiliary Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000//-----------------------------------sfr AUXR1 = 0xA2; //Auxiliary Register 1 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS 0000,0000/*PCA_P4:0, 缺省PCA 在P1 口1,PCA/PWM 从P1 口切换到P4 口: ECI 从P1.2 切换到P4.1 口,PCA0/PWM0 从P1.3 切换到P4.2 口PCA1/PWM1 从P1.4 切换到P4.3 口SPI_P4:0, 缺省SPI 在P1 口1,SPI 从P1 口切换到P4 口: SPICLK 从P1.7 切换到P4.3 口MISO 从P1.6 切换到P4.2 口MOSI 从P1.5 切换到P4.1 口SS 从P1.4 切换到P4.0 口S2_P4:0, 缺省UART2 在P1 口1,UART2 从P1 口切换到P4 口: TxD2 从P1.3 切换到P4.3 口RxD2 从P1.2 切换到P4.2 口GF2: 通用标志位ADRJ:0, 10 位A/D 转换结果的高8 位放在ADC_RES 寄存器, 低2 位放在ADC_RESL 寄存器1,10 位A/D 转换结果的最高2 位放在ADC_RES 寄存器的低2 位, 低8 位放在ADC_RESL 寄存器DPS: 0, 使用缺省数据指针DPTR01,使用另一个数据指针DPTR1*///-----------------------------------sfr WAKE_CLKO = 0x8F; //附加的SFR WAK1_CLKO/*7 6 5 4 3 2 1 0 Reset ValuePCAWAKEUP RXD_PIN_IE T1_PIN_IE T0_PIN_IE LVD_WAKE _ T1CLKO T0CLKO 0000,0000Bb7 - PCAWAKEUP : PCA 中断可唤醒powerdown。
51单片机特殊功能寄存器详细说明
/* ------------------------------------------------------------------------REG51.HHeader file for generic 80C51 and 80C31 microcontroller.Copyright (c) 1988-2001 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. ----------------------------------------------- *//* BYTE Register */程序状态字 累加器 B 寄存器 堆栈指针 数据指针低八位 数据指针高八位 波特率选择寄存器 定时器/计数器控制寄存器 定时器方式选择寄存器 定时器0低八位 定时器1低八位 定时器0高八位 定时器1高八位 中断允许寄存器 中断优先级寄存器 串行控制寄存器 串行数据缓冲器*//* 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; /* BIT Register 程序状态字 有无进位或者借位 Auxiliary Carry 有无低四位向高四位的进位或借位 用户管理的标志位,可根据自己的需求设定 这两位用于选择当前工作寄存器区。
8051有8个8位寄存器R0~R7,它 们在RAM 中的地址可以根据用户需要来确定。
RS1 RS0: R0~R7 的地址 0 0: 00H~07H 0: 10H~17H 1 1 : 18H~1FH 溢出标志位 奇偶校验位 1的个数为奇数 08H~0FH 定时器/计数器控制寄存器 定时器/计数器1溢出中断请求标志, 断时由硬件清0 启动定时器1 定时器/计数器0溢出中断请求标志 断时由硬件清0 当溢出时由硬件置位, ,当溢出时由硬件置位, 当CPU 响应中当CPU 响应中sfr P0 =0x80;sfr P1 =0x90;sfr P2 =0xA0;sfr P3 =0xB0;sfr PSW =0xD0;sfr ACC =0xE0;sfr B =0xF0;sfr SP =0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfrPCON : = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;启动定时器0 外部中断1请求标志位,产生中断时由硬件置位,当 件清0 外部中断1的触发方式选择位,当IT1=1时,INT1弓I 脚上从高到低的负跳 变触发中断,当IT1=0时,INT1弓I 脚上的低电平触发中断 外部中断0请求标志位,产生中断时由硬件置位,当 CPU 响应中断时由硬 件清0 外部中断0的触发方式选择位,当IT0=1时,INT0弓I 脚上从高到低的负跳 变触发中断,当IT0=0时,INT1弓I 脚上的低电平触发中断 中断允许寄存器 中断总控制位 串行口中断允许位 定时器/计数器1溢出中断允许位 外部中断1的溢出允许位 定时器/计数器0溢出中断允许位 外部中断0的溢出允许位 中断优先级寄存器 串行口中断优先级控制位 定时器/计数器1中断优先级控制位 外部中断1中断优先级控制位 定时器/计数器0中断优先级控制位 外部中断0中断优先级控制位 外部RAM 写选通信号(输出) 外部RAM 写选通信号(输入) 计数器1计数输入 计数器0计数输入 外部中断1输入 外部中断0输入 串行数据发送口 串行数据接收口 串行口中断控制寄存器 SM0和SM1控制串行口的工作方式。