80C51特殊功能寄存器地址表
第3章80C51系列单片机的硬件基础知识
(3) P2口(21脚~28脚):P2口的8条引脚也有两种不同的 功能: 1) 准双向输入/输出接口,每一位也可独立控制。
2) 在接有片外存储器或扩展I/O接口时,P2口作为高8位地
址总线。
引脚
第二功能
说 明
P3.0
RXD
串行口输入
外部中断0输入,低电平
(4) P3口(10 脚~17脚): 8条引脚也有两种不同的功能: P3.1 TXD P3口的 串行口输出
STC
Winbond(华邦) W78C54,W78C58,W78E54,W78C58等 Intel(英特尔) i87C54,i87C58,i87L54,i87C51FB,i87C51FC
Siemens(西门子) C501-1R,C501-1E,C513A-H,C503-1R,C504-2R
3.1.3 80C51系列单片机的选择依据
3.1.1 MCS-51系列单片机
1980年美国INTEL公司推出了高性能的8位单片机: MCS-51系列单片机。 系列单片机是指同一厂家生产的具有相同系统结构 的多种型号的单片机。 MCS-51系列单片机又可分为51和52两个子系列。
各个子系列所含有的芯片型号及其硬件资源的区别如表3-1所示。
MCS-51系列 型号 8031 片内ROM 无 4KB掩膜ROM 4KB EPROM 无 8KB掩膜ROM 片内 RAM 128B 128B 128B 256B 256B 定时器/计数 中断源数量 器 2×16位 2×16位 2×16位 3×16位 3×16位 5 5 5 6 6
PDIP (T2)P1.0 (T2EX)P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST (RXD)P3.0 (TXD)P3.1 1 40 39 38 37 36 35 VCC P0.0(AD0) P0.1(AD1) P0.2(AD2) P0.3(AD3) P0.4(AD4) P0.5(AD5) P0.6(AD6) P0.7(AD7) EA/VPP ALE/PROG PSEN P0.4(AD4) P0.5(AD5) P2.7 P0.6(AD6) P2.6 P0.7(AD7) EA/VPP P2.5 NC P2.4 ALE/PROG PSEN P2.3 P2.7 P2.6 P2.2 P2.5 P2.1 P2.0
特殊功能寄存器
特殊功能寄存器
在学习51单⽚机的过程中,代码⾥总会有TMOD,P0等等⼀系列⾃⼰根本没有定义过的东东。
今天在学习定时器中断时看到了介绍TMOD是特殊功能寄存器。
今天就来了解⼀下特殊功能寄存器吧!
特殊功能寄存器是80C51系列单⽚机中个功能部件对应的计时器⽤于存放相应功能的控制命令、状态和数据。
80C51有21个特殊功能寄存器,52⼜多了五个(*指代80C52独有的特殊功能寄存器)。
MCS-51单⽚机的特殊功能寄存器
符号地址功能介绍
F0H B寄存器
E0H
D0H程序状态
TH2*CDH/计数器2(⾼8位)
TL2*CCH定时器/计数器2(低8位)
RLDH*CBH外部输⼊(P1.1)计数器/⾃动再装⼊模式时初值寄存器⾼⼋位
RLDL*CAH外部输⼊(P1.1)计数器/⾃动再装⼊模式时初值寄存器低⼋位
T2CON*C8H T2/计数器
B8H中断优先级控制寄存器
B0H P3⼝
A8H中断允许
A0H P2⼝
SBUF99H
98H
P190H P1⼝
TH18DH/计数器1(⾼8位)
TH08CH定时器/计数器0(⾼8位)
TL18BH/计数器1(低8位)
TL08AH/计数器0(低8位)
89H T0、T1定时器/计数器⽅式
88H T0、T1/计数器控制寄存器
DPH83H数据地址指针(⾼8位)
DPL82H数据地址指针(低8位)
SP81H
P080H P0⼝
PCON87H电源控制寄存器。
第3章80C51系列单片机的硬件基础知识
21:52
9
图3-8 80C51单片机对外三总线构成
21:52 10
四个I/O端口P0、P1、P2、P3的作用总结: P2口负责输出高8位地址, P0口以分时方式承担输出低8位地址信息和数据输入/输出的 双重任务。 P3口则作为和外设沟通的控制线, P1口可随意用作I/O口。 51系列单片机的对外三总线总结: AB(地址总线): P2口负责高8位地址, P0口输出低8位地址。 DB(地址总线): P0口作为8位数据输入/输出口。 CB(地址总线): P3口作为和外设沟通的控制线。
各个子系列所含有的芯片型号及其硬件资源的区别如表3-1所示。
片内 RAM 128B 128B 128B 256B 256B 定时器/计数 中断源数量 器 2×16位 2×16位 2×16位 3×16位 3×16位 5 5 5 6 6
MCS-51系列
型号 8031
片内ROM 无 4KB掩膜ROM 4KB EPROM 无 8KB掩膜ROM
51子序列 (基本型)
8051 8751 8032 8052
52子序列 (增强型)
在不同型号的MCS-51系列单片机中,除片内存储器(ROM、RAM) 容量与种类、定时器/计数器的个数、中断源的数量有所不同外, 指令系统和芯片引脚是完全兼容的。
21:52 1
80C51单片机引脚主要分为主电源引脚、外接晶体 引脚 、输入/输出引脚与控制引脚四类,以PDIP 封装的单片机为例,引脚介绍如下: 1. 主电源引脚(2条) 2. 外接晶体引脚(2条) 3. 输入/输出(I/O)引脚(32条) 4. 控制引脚(4条)
21:52
15
3. 并行输入/输出端口(I/O口)
80C51片内有4个8位的I/O接口:P0、P1、P2和P3,每个I/O接 口内部都有一个8位锁存器和一个8位驱动器,既可用作输出 口,也可用作输入口。 80C51单片机没有专门的I/O口操作指令,而是把I/O口当作寄 存器使用,通过传送指令实现数据的输入和输出操作。
80C51单片机的硬件结构之CPU与存储器
2.1 80C51系列单片机结构
2.1.1 内部结构框图
1.1个8位的CPU 2.1个片内振荡器和时钟电路 3.程序存储器 4 KB的掩膜ROM,用于存放程序、原始数 据或表格。 4.数据存储器 5.64KB总线扩展控制器 6.4个8位并行I/O口(P0、P1、P2、P3)
7.1个全双工串行接口
堆栈指针SP:存放栈顶的地址,内容可软件设置初值,单片机 复位时SP = 07H。CPU每往堆栈中存放一个数,SP都会先自动 加1,CPU每从堆栈中取走一个数,SP都会自动减1,SP始终指向 堆栈最顶部的数据的地址。
(5)数据指针DPTR
分成DPL(低8位)和DPH(高8位)两个寄存器,用来存放16 位地址值。
P0.4 84H
P0.3 83H
P0.2 82H
P0.1 81H
P0.0 80H
(1)累加器Acc
最常用的寄存器,所有的运算类指令都要使用它。累加器 在指令中的助记符为A,自身带有全零标志Z,若A=0则Z=1; 若A≠0则Z=0。该标志常用作程序分支转移的判断条件。
(2)B寄存器
80C51中,在做乘、除法时必须使用B寄存器,不做乘、除法 时,可作为一般的寄存器使用。
① 掩膜ROM。 ② 可编程的只读存储器(PROM)。 ③ 可改写的只读存储器EPROM。 ④ 可电改写只读存储器(EEPROM)。
随机存取存储器(RAM)
① 静态SRAM。 ② 动态DRAM。
可现场改写的非易失性存储器
① 快擦写存储器(FLASH)。 ② 铁电存储器FRAM。
2.存储单元和存储单元地址
1.80C51片内数据存储空间(低128B)
(1)工作寄存器区(00H~1FH) 作用:有专用于工作寄存器操作的指令,读写速度比一般内 RAM要快,指令字节比一般直接寻址指令要短,还具有间 址功能,能给编程和应用带来方便。 工作寄存器区分为4个区:0区、1区、2区、3区。每区有8 个寄存器:R0~R7,寄存器名称相同。但是,当前工作的 寄存器区只能有一个,由PSW中的D4、D3位决定。
80c51
ACC B
指令寄存器IR 指令译码器ID DPH
缓冲器 DPL ROM 4K字节
暂存器1
暂存器2
PC增量器 PSW ALU 振荡器 定时与控制 程序计数器PC 地址寄存器AR
XTAL2 VSS XTAL1 EA RST ALE PSEN
11
2.4.1 80C51的内部结构 一、80C51的微处理器(CPU) (1)运算器 累加器ACC ; 寄存器B ; 程序状态字寄存器PSW 。 (2)控制器 程序计数器PC ; 指令寄存器IR ; 定时与控制逻辑。
(3)在功能上,该系列单片机有基 本型和增强型两大类 基本型: 8051/8751/8031 80C51/87C51/80C31 增强型: 8052/8752/8032 80C52/87C52/80C32
1
(4)在片内程序存储器的配置上, 该系列单片机有三种形式,即掩膜ROM、 EPROM 和 ROMLess( 无 片 内 程 序 存 储 器)。如: ﹡80C51有4K字节的掩膜ROM; ﹡87C51有4K字节的EPROM ; ﹡80C31在芯片内无程序存储器。
23
2.5.1 80C51的程序存储器配置
PSEN 0000H EA=1 内部 0FFFH 1000H 外部 FFFFH FFFFH EA=0 外部
复位入口 INT0中断入口 T0中断入口 INT1中断入口 T1中断入口 串口中断入口
0000H 0003H 000BH 0013H 001BH 0023H ROM
80H
间接寻址 直接寻址 访问 访问 FFH
FFFFH RD WR
25
一、工作寄存器区
低端32个字节分成4个工作寄存器组,每组8个单 元。当前工作寄存器组的机制便于快速现场保护。
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特殊功能寄存器表
定时器模式
M1 M0 GATE C/T 方式选择 门控开/关 计数/定时 定时/计数器T0 的低8 位 定时/计数器T1 的低8 位 定时/计数器T0 的高8 位 定时/计数器T1 的高8 位
辅助寄存器 P1端口
95H 94H 93H 92H 91H 90H 90H P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 9DH 9CH 9BH 9AH 99H 98H 98H 串行口控制 SCON SM2 REN TB8 RB8 TI RI 多机控制 串行接收允/ 发的第九位 收的第九位 送中断有/ 发 接收中断有/无 串行口数据 SBUF 99H A7H A6H A5H A4H A3H A2H A1H A0H P2端口 P2 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 辅助寄存器1 AUXR1 A2H 看门狗复位 WDTRST A6H AFH AEH ADH ACH ABH AAH A9H A8H 中断允许 IE A8H EA - - ES ET1 EX1 ET0 EX0 中断总控 T2 串行口 INT1 T0 INT0 允/禁 允/禁 允/禁 允/禁 允/禁 允/禁 1/0 B7H B6H B5H B4H B3H B2H B1H B0H P3端口 P3 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 RD WR T1 T0 INT1 INT0 TXD RXD BFH BEH BDH BCH BBH BAH B9H B8H 中断优先权 IP B8H - - PT2 PS PT1 PX1 PT0 PX0 T2 中行口 T1 INT1 T0 INT0 CFH CEH CDH CCH CBH CAH C9H C8H 定时器2控制 T2CON C8H TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 DP/RL2 溢出标志 外部标志 接收时钟使能 发送时钟使能 外部使能 启动标志 定时/计数 捕获/重装 T2OE DCEN 定时器2模式 T2MOD C9H 输出允/禁 计数方式选择 RCAP2L 捕捉寄存器低字节 CAH 捕捉寄存器高字节 RCAP2H CBH T2低字节 TL2 CCH T2高字节 TH2 CDH D7H D6H D5H D4H D3H D2H D1H D0H 程序状态字 D0H PSW CY AC F0 RS1 RS0 OV - P E7H E6H E5H E4H E3H E2H E1H E0H A累加器 ACC E0H ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0 F7H F6H F5H F4H F3H F2H F1H F0H B寄存器 B F0H B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0
80C51单片机原理
80C51单片机原理RAM地址寄存器 RAM 128B 程序地址寄存器P0驱动器 P2锁存器 P2驱动器P1锁存器 暂存器2 B 寄存器 4KB ROM暂存器1ACC SP P0锁存器 PC PC 增1 缓冲器 P3锁存器 OSC中断、串行口及定时器PSW ALU DPTRP1驱动器 P3驱动器XTAL1XTAL2 P0.0~P0.7 P2.0~P2.7 P3.0~P3.7 P1.0~P1.7 RST ALEV CCV SS定时控制 指令译码器 指令寄存器 PSEN EA表2-1 P3口各引脚与第二功能表PSW 的各位定义见表80C51 P0~P3接口功能简见大多数口线都有双重功能,介绍如下: 1、P0口具有双重功能:(1) 作为通用I/O ,外接I/O 设备。
(2) 作为地址/数据总线。
在有片外扩展存储器的系统 中,低8位地址和数据由P0口分时传送。
PSW 位地址 PS W.7PSW .6PSW .5 PSW .4 PSW .3 PSW .2 PSW .1 PSW .0 位标志CY ACF0RS1RS0OVF1P2、P1口是唯一的单功能口:作为输入/输出口,P1口的每一位都可作为输入/输出口。
3、P2口具有双重功能:(1)作为输入/输出口。
(2)作为高8位地址总线。
在有片外扩展存储器的系统中,高8位地址由P2口传送。
4、P3口具有双重功能:(1)作第一功能使用时,其功能为输入/输出口。
(2)作第二功能使用时,每一位功能定义如表2.1所示。
80C51单片机的4个I/O口都是8位双向口,这些口在结构和特性上是基本相同的,但又各具特点,以下将分别介绍之。
图2-9 P0口某位的结构图2-10 P1口某位的结构1D CPQQ MUX& T1T2锁存器地址/数据控制信号C V CC内部总线写锁存器读锁存器读引脚P0.X引脚12DCPQQ T锁存器V CC内部总线写锁存器读锁存器读引脚P1.X引脚12图2-11 P2口某位的结构图2-12 P3口某位的结构P0~P3口使用时应注意事项1、如果80C51单片机内部程序存贮器ROM 够用,不需要扩展外部存贮器和I/O接口,80C51的四个口均可作I/O 口使用。
单片机基础_80C51
5. 串行I/O口 目前高档 8 位单片机均设置了全双工串行 I/O 口,用以 实现与某些终端设备进行串行通信,或者和一些特殊功能 的器件相连接的能力,甚至用多个单片机相连构成多机系 统。随着应用的拓宽,有些型号的单片机内部还包含有二 个串行I/O口。 6. 定时器/计数器
3. 控制线:共4根。
· RST(VPD:备用电源引入端,当电源发生故障,电源降到下限值时, 备用电源经此端向内部 RAM提供电压,以保护内部RAM中的数据不 丢失)——复位输入信号,高电平有效。在振荡器工作时,在RST上 作用两个机器周期以上的高电平,将器件复位。 ·/EA(Vpp:编程电压,具体电压值视芯片而定)——片外程序存储 器访问允许信号,低电平有效。/EA=1,选择片内程序存储器(80C51 为4KB,80C52为8KB) ;/EA=0,则程序存储器全部在片外而不管片 内是否有程序存储器。 使用80C31时,必须接地,使用8751编程时,施加 21V的编程电 压。 · ALE(PROG:编程脉冲)——地址锁存允许信号,输出。 在访问片外存储器或 I/O 时,用于锁存低八位地址,以实现低八 位地址与数据的隔离。即使不访问外部存储器,ALE端仍以固定的频 率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器 时,出现一个ALE脉冲。
在单片机中,常把寄存器(如工作寄存器、特殊功能 寄存器、堆栈等)在逻辑上划分在片内 RAM 空间中,所 以可将单片机内部 RAM 看成是寄存器堆,有利于提高运 行速度。
当内部 RAM 容量不够时,还可通过串行总线或并行 总线外扩数据存储器。
4. 并行I/O口
单片机往往提供了许多功能强、使用灵活的并行输入 /输出引脚,用于检测与控制。有些I/O引脚还具有多种功 能,比如可以作为数据总线的数据线、地址总线的地址线、 控制总线的控制线等。单片机 I/O 引脚的驱动能力也逐渐 增大,甚至可以直接驱动外扩的LED显示器。
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.。
80386&80C51寄存器
寄存器是中央处理器内的组成部份。
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。
在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。
在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。
更适当的是称他们为“架构寄存器”。
以下寄存器都是32-bits 宽;A、通用寄存器顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。
通用寄存器最多的用途是计算。
EAX:通用寄存器。
相对其他寄存器,在进行运算方面比较常用。
在保护模式中,也可以作为内存偏移指针(此时,DS 作为段寄存器或选择器)EBX:通用寄存器。
通常作为内存偏移指针使用(相对于EAX、ECX、EDX),DS 是默认的段寄存器或选择器。
在保护模式中,同样可以起这个作用。
ECX:通用寄存器。
通常用于特定指令的计数。
在保护模式中,也可以作为内存偏移指针(此时,DS 作为寄存器或段选择器)。
EDX:通用寄存器。
在某些运算中作为EAX 的溢出寄存器(例如乘、除)。
在保护模式中,也可以作为内存偏移指针(此时,DS 作为段寄存器或选择器)。
同AX 分为AH&AL 一样,上述寄存器包括对应的16-bit分组和8-bit 分组。
B、用作内存指针的特殊寄存器ESI:通常在内存操作指令中作为“源地址指针”使用。
当然,ESI 可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。
DS 是默认段寄存器或选择器。
EDI:通常在内存操作指令中作为“目的地址指针”使用。
当然,EDI 也可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。
DS 是默认段寄存器或选择器。
EBP:这也是一个作为指针的寄存器。
通常,它被高级语言编译器用以建造‘堆栈帧'来保存函数或过程的局部变量,不过,你可以在其中保存你希望的任何数据。
80C51存储器配置
外部数据存储器
外部数据存储器一般用来存放相对来讲是用不太频 繁的数据,其中的数据不能直接进行处理,要进行 处理前必须提前从外部数据存储器送到单片机内部。
外部数据存储器地址空间寻址范围为64K字节,采 用R0、R1或DPTR寄存器间址方式访问。当采用R0、 R1间址时只能访问00H~0FFH的低256字节,采用 DPTR间址可访问整个64K字节空间。
04H
03H
02H
01H
00H
位寻址区
1、地址: 从20H~2FH共16字节(Byte,缩写为英文大写 字母B)。每字节有8位(bit,缩写为小写b),共 128位,每一位均有一个位地址,可位寻址、位操 作。即按位地址对该位进行置1、清0、求反或判转。
2、用途: 存放各种标志位信息和位数据。
3、注意事项: 位地址与字节地址编址相同,容易混淆。 区分方法:位操作指令中的地址是位地址;
外部数据存储器
共64KB 地址范围:0000H~FFFFH
读写外RAM用MOVX指令, 控制信号是P3口中的RD和WR。
一般情况下,只有在内RAM不能满足应用 要求时,才外接RAM。
读外RAM的过程
外RAM 16位地址分别由P0口(低8位)和P2口(高
8位)同时输出;
ALE信号有效时由地址锁存器锁存低8位地址信号,
指令,CPU将按修改后PC的16位地址读ROM。
程序存储器(ROM)
读外ROM的过程:
CPU从PC(程序计数器)中取出当前ROM的16位 地址,分别由P0口(低8位)和P2口(高8位)同 时输出,ALE信号有效时由地址锁存器锁存低8位 地址信号,地址锁存器输出的低8位地址信号和P2 口输出的高8位地址信号同时加到外ROM 16位地址 输入端,当PSEN信号有效时,外ROM将相应地址存 储单元中的数据送至数据总线(P0口),CPU读入 后存入指定单元。
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控制寄存器。
智能抢答器的设计-毕业论文
摘要摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用80C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和计数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发声提示。
同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-99s设定;可以显示是哪位选手有效抢答和无效抢答,正确按键后有音乐提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:80C51,LED数码管,抢答器,计时I目录目录第一章绪论 (1)1.1 课题研究的相关背景 (1)1.2 选题的目的和意义 (1)1.3 课题研究的内容 (1)1.4 国内外研究现状 (2)1.5 抢答器目前存在的主要问题 (2)第二章抢答器的系统概述 (3)2.1系统的主要功能 (3)2.2系统需求分析 (4)2.3抢答器的工作流程 (4)2.4抢答器的工作过程 (5)2.580C51特殊功能寄存器 (6)2.680C51的功能及简介 (7)2.7抢答器的优点及组成 (8)2.8本章小结 (8)第三章系统总体方案的设计 (9)3.1硬件电路的设计 (9)3.2总体原理图 (10)3.3时钟频率电路的设计 (10)3.4复位电路的设计 (11)3.5显示电路的设计 (12)3.6键盘扫描电路的设计 (12)3.7发声电路 (14)3.8本章小结 (15)第四章软件设计 (16)4.1主程序系统结构图 (16)4.2软件任务分析 (16)4.3程序流程图 (17)4.4主要程序分析 (18)4.5本章小结 (24)第五章PROTEUS 7 PROFESSIONAL仿真系列组图 (25)I5.1复位图 (25)5.2设置计时时间 (25)5.3非法抢答并显示座号 (25)5.4抢答成功并显示倒计时 (26)5.5本章小结 (26)第六章总结与展望 (27)6.1总结 (27)6.2展望 (27)参考文献 (28)致谢 (29)II第一章绪论第一章绪论1.1 课题研究的相关背景抢答器是一种应用非常广泛的设备,在各种竞赛、抢答场合中,它能迅速、客观地分辨出最先获得发言权的选手。
80C51单片机存储器物理结构参考
详述80C51单片机存储器物理结构、工作特点、地址范围大小并且图示说明?
1、80C51单片机的存储器在物理结构上可分为4个存储空间:片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器。
在逻辑上可分为3个空间,64KB程序存储器(片内、外统一编址)、256B片内数据存储器和64KB片外数据存储器。
其容量大小和地址如下图。
2、80C51片内256B数据存储器分两部分,特殊功能寄存器区(80H-FFH)和低128BRAM (00H-7FH)区。
特殊功能寄存器区有21个特殊功能寄存器(SFR),字节地址能被8整除的特殊功能寄存器可位寻址。
3、低128BRAM可分为用户RAM区(30H-7FH)可作数据缓冲和堆栈区、位寻址区(20H-2FH )共128位(位地址00H-7FH)和4组通用工作寄存器区(00H-1FH)。
在4组通用工作寄存器区(00H-1FH)中,每组有8个工作寄存器(R0-R7)。
CPU当前使用的工作寄存器组,是由程序状态寄存器PSW中的RS1、RS0的设置来选择的。
dptr是什么寄存器
dptr 是什么寄存器
数据指针(DPTR)是80C51 中一个功能比较特殊的寄存器。
从结构DPTR 是一个16 位的特殊功能寄存器,其高位字节寄存器用DPH 表示,低位字节寄存器用DPL 表示,DPTR 既可以作为一个16 位的寄存器来处理,也可以作为两个独立的8 位寄存器来使用。
主要功能是存放16 位地址,作为片外RAM 寻址用的地址寄存器(间接寻址),故称数据指针。
dptr 功能
dptr 主要功能是存放16 位地址,作为片外RAM 寻址用的地址寄存器
(间接寻址),故称数据指针,也可以将外部RAM 中地址的内容传送到内部RAM 的地址所指向的内容中。
访问片外数据存储器的指令:
MOVX A,@DPTR 读
MOVX @DPTR,A 写。
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控制存放器。
80c51内部RAM空间分配
80c51内部RAM空间分配keil编译的时候,在开始时候会清零所有内存.在main之前,所以,只要复位, 内存肯定是0MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:数据存储器空间(低128单元),用户可用的;特殊功能寄存器空间(高128单元);这两个空间是相连的,从用户角度而言,低128单元才是真正的数据存储器。
下面我们就来详细的与大家讲解一下:低128单元:片内数据存储器为8位地址,所以最大可寻址的范围为256个单元地址,对片外数据存储器采用间接寻址方式,R0、R1和DPTR都可以做为间接寻址寄存器,R0、R1是8位的寄存器,即R0、R1的寻址范围最大为256个单元,而DPTR是16位地址指针,寻址范围就可达到64KB。
也就是说在寻址片外数据存储器时,寻址范围超过了256B,就不能用R0、R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。
1、通用寄存器区(00H-1FH)在00H1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0R7来命名,我们常称这些寄存器为通用寄存器。
这四块中的寄存器都称为R0R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的D3和D4位(RS0和RS1),即可选中这四组通用寄存器。
程序中并不需要用4组,那么其余的可用做一般的数据缓冲器,CPU在复位后,选中第0组工作寄存器。
2、位寻址区(20H-2FH)片内RAM的20H2FH单元为位寻址区,既可作单元用字节寻址,也可对它们的位进行寻址。
位寻址区共有16 个字节,128个位,位地址为00H7FH。
CPU能直接寻址这些位,执行例如置1、清0、求反、转移,传送和逻辑等操作。
我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。
3、用户RAM区(30H-。
SFR详解
SFR 详解
SFR 是Special FuncTIon Register(特殊功能寄存器)的缩写。
SFR 特殊功能寄存器区: 8051 把CPU 中的专用寄存器、并行端口锁存器、串行口与定时器/计数器内的控制寄存器集中安排到一个区域,离散地分
布在地址从80H 到FFH 范围内,这个区域称为特殊功能寄存器区SFR。
SFR 是80C51 单片机中各功能部件对应的寄存器,用于存放相应功能
部件的控制命令,状态或数据。
它是80C51 单片机中最具有特殊的部分,现
在所有80C51 系列功能的增加和扩展几乎都是通过增加特殊功能寄存器SFR
来达到目的的。
对于80C51 系列中的80C51,共定义了26 个特殊功能寄存器。
在
80C52 中,除了80C51 的26 个特殊功能寄存器,还增加了5 个,共计31
个。
2.SFR 是法国电信和网络运行商,由沃达丰掌握32%的股权,2008 年
收购法国网络运行商NEUF,现在主要经营电信和网络业务
3.SFR (spaTIal frequency response)中文解释是"空间频率响应",一般是利于边沿去检测图像的清晰程度.
4.专用寄存器包括:1)程序计数器(PC-Program Counter)2)累加器A (ACC-Accumulator)3)B 寄存器4)程序状态寄存器(PSW-Program Status Word)等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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; //串行口工作方式设定控制位1
sbit 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控制寄存器。