前言
单片机复习的时候对应寄存器的记忆感觉很混乱,这里进行一下整理,后面的单词是我用来辅助记忆的,可能并不是表示原本的含义。
P3口的第二功能
0 |
RXD |
串行数据输入口
|
1 |
TXD |
串行数据输出口 |
2 |
INT0 |
外部中断0输入 |
3 |
INT1 |
外部中断1输入 |
4 |
T0 |
定时器0外部计数输入 |
5 |
T1 |
定时器1外部计数输入 |
6 |
WR |
外部数据存储器的写选通控制信号 |
7 |
RD |
外部数据存储器的读选通控制信号 |
程序状态字寄存器(PSW)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
PSW |
Cy |
Ac |
F0 |
RS1 |
RS0 |
OV |
|
P |
D0H |
- Cy进位标志位:也可以写成C。有进位/借位,则Cy=1;否则,Cy=0.
- Ac辅助进位标志位:用于在BCD码运算时进行十进位调整,当D3位D4位产生进位或借位,Ac=1;否则,Ac=0。
- F0用户使用的标志位:可用指令来使它置“1”或清零,也可以用指令来测试该标志位,根据测试结果控制程序的流向。
- RS1,RS04组工作寄存器区选择控制位1和位0:用来选择片内RAM区中的4组工作寄存器区中的某一组为当前工作寄存区。
- OV溢出标志位:用来指示运算结果是否产生溢出。如果结果产生溢出,OV=1;否则,OV=0。
- P奇偶标志位,累加器A中“1”的个数是奇数,P=1,否则,P=0.
RS1 |
RS0 |
4组寄存器 |
0 |
1 |
0区(片内RAM 00H~07H) |
0 |
1 |
1区(片内RAM 08H~0FH) |
1 |
0 |
2区(片内RAM 10H~17H) |
1 |
1 |
3区(片内RAM 18H~1FH) |
RS1、RS0与4组工作寄存器区的对应关系 |
中断源的中断入口地址
中断源 |
入口地址 |
外部中断0 |
0003H |
定时器T0 |
000BH |
外部中断1 |
0013H |
定时器T1 |
001BH |
串行口 |
0023H |
AUXR寄存器
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
AUXR |
|
|
|
WDIDLE |
DISRTO |
|
|
DISALE |
8EH |
- DISRTO:禁止/允许看门狗定时器(WDT)溢出时的复位输出。1:禁止WDT溢出时的复位输出;0:WDT溢出时,允许向RST引脚输出一个高电平脉冲,使单片机复位。
- WDIDLE:WDT在空闲模式下的禁止/允许位。1:禁止WDT在空闲模式下计数;0:允许WDT在空闲模式下计数。
TCON(定时器/计数器控制寄存器)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
TCON |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
88H |
位地址 |
8FH |
|
8DH |
|
8BH |
8AH |
89H |
88H |
|
- TF:片内定时器/计数器T的溢出中断请求标志位。启动计数后,从初值开始加1计数,当计数溢出时,又硬件自动为TF置“1”,向CPU申请中断。CPU响应TF中断时,标志位由硬件自动清零,同时也可以用软件来清零。(Flag)
- IE:外部中断请求的中断请求标志位(enable)
- IT:选择外部中断请求的中断方式,0为电平触发方式,1为负跳变触发方式。
- TR:计数运行控制位。1:启动定时器/计数器计数的必要条件;0:停止。软件置1或者清零。
SCON(串行口控制寄存器)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
SCON |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
98H |
位地址 |
9FH |
9EH |
9DH |
9CH |
9BH |
9AH |
99H |
98H |
|
- SM0、SM1:串行口工作方式选择位。
- SM2:多机通信控制位。
- REN:允许串行口接收位(由软件置“1”或清零),1:允许;0:禁止。
- TB8:发送的第9位数据。
- RB8:接收的第9位数据。
- TI:串行口发送中断请求标志位。当CPU将1字节的数据写入串行口的发送缓冲器SBUF时,就会启动一帧串行数据的发送,每发送完一帧串行数据后,硬件把TI中断请求标志位自动置“1”,发送之后需要在中断服务程序中用指令对其清零。TI必须由软件清零。(transmit)
- RI:串行口接收中断请求标志位。在串行口接收完一个串行数据帧,硬件自动把RI中断请求标志位置“1”,需要在中断服务程序中用指令对其清零。RI必须由软件清零。(receive)
SM0 |
SM1 |
功能说明 |
0 |
0 |
方式0,同步移位寄存器方式(用于扩展I/O口) |
0 |
1 |
方式1,8位异步收发,波特率可变(由定时器控制) |
1 |
0 |
方式2,9位异步收发,波特率为fosc/64或fosc/32 |
1 |
1 |
方式3,9位异步收发,波特率可变(由定时器控制) |
IE(中断允许寄存器)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
IE |
EA |
|
|
ES |
ET1 |
EX1 |
ET0 |
EX0 |
A8H |
位地址 |
AFH |
|
|
ACH |
ABH |
AAH |
A9H |
A8H |
|
- EA:中断允许总开关控制位。1:允许;0:屏蔽。(enable all)
- ES:串行口中断允许控制位。1:允许;0:屏蔽。(enable serial)
- ET:定时器/计数器的溢出中断允许控制位。1:允许;0:屏蔽。(enable timer)
- EX:外部中断中断允许控制位。1:允许;0:屏蔽。(enable external)
IP(中断优先级寄存器)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
IP |
|
|
|
PS |
PT1 |
PX1 |
PT0 |
PX0 |
B8H |
位地址 |
|
|
|
BCH |
BBH |
BAH |
B9H |
B8H |
|
- PS:串行口中断优先级控制位,1:高优先级;0:低优先级。(priority serial)
- PT:定时器T中断优先级控制位,1:高优先级;0:低优先级。(priority timer)
- PX:外部中断中断优先级控制位,1:高优先级;0:低优先级。(priority external)
同级中断的查询顺序(中断级别):外部中断0>T0溢出中断>外部中断1>T1溢出中断>串行口中断。
TMOD(定时器/计数器工作方式存储器)
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
TMOD |
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
89H |
|
T1方式字段 |
T0方式字段 |
|
- GATE:门控位,1:由外中断引脚(或INT1)INT0上的电平与运行控制位TRx两个条件共同控制;0:仅由控制位TRx(x=0,1)来控制。
- M1、M0:工作方式选择位。
- C/T:计数器模式和定时器模式选择位。1:计数器工作模式,对系统时钟12分频后的内部脉冲进行计数;0:计数器工作模式,计数器对外部输入引脚T0或T1的外部买重(负跳变)计数。
M1 |
M0 |
工作方式 |
0 |
0 |
方式0,为13位定时器/计数器 |
0 |
1 |
方式1,为16位定时器/计数器 |
1 |
0 |
方式2,为8位的常数自动重新装载的定时器/计数器 |
1 |
1 |
方式3:,仅适用于T0,此时T0分成2个8位计数器,T1停止计数 |
PCON
|
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
|
PCON |
SMOD |
|
|
|
GF1 |
GF0 |
PD |
IDL |
87H |
SMOD=1时要比SMOD=0时的波特率加倍。
总结
本文主要是用来区分不同寄存器的大概功能,所以不是很详细,写这个主要是给自己记忆的,所以有点水。