21个SFR(特殊功能寄存器)离散分布(只能使用直接寻址的方式)。
至于什么叫不可寻址,则是指不能单独进行每一位的操作,如TMOD定时器工作模式及工作方式寄存器,在进行操作时,只能写TMOD=0xXX 。
关于能否进行位操作,可以通过查相关资料知道,当然还有个技巧就是其字节地址换成10 进制后能否被“8 ”整除,能被“8 ”整除的就能进行位操作,不能被“8 ”整除就不能,如P1 地址为90H ,10 进制为144 , 144/8=18 ,能被整除,所以可以位操作。再如TMOD 地址为89H , 10 进制为137 ,137/8=17.125 ,不能被整除,所以不可以位操作。
通常用A表示。该标志常用于程序分支转移的判断条件。
在做乘、除法时放乘数或除数。
存放CPU工作时的状态。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
|
P |
用途 :
可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。
按位寻址,地址:A8H。
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
EA |
- |
ET2 |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
中断的自然优先级 :
中断函数编号 |
中断名称 |
中断标志位 |
中断使能位 |
中断向量地址 |
默认优先级 |
0 |
外部中断0 |
IE0 |
EX0 |
03H |
1(最高) |
1 |
定时器T0中断 |
TF0 |
ET0 |
0BH |
2 |
2 |
外部中断1 |
IE1 |
EX1 |
13H |
3 |
3 |
定时器T1中断 |
TF1 |
ET1 |
1BH |
4 |
4 |
UART中断(串口) |
T1/R1 |
ES |
23H |
5 |
字节地址为88H,可以位寻址。
位序号 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符号 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
位地址 |
8FH |
8EH |
8DH |
8CH |
8BH |
8AH |
89H |
88H |
TF1: 定时器1溢出标志位,当定时器1计满溢出时,由硬件将TF1置1,并申请中断;进入中断服务程序后,由硬件自动清零。
TR1: 定时器1运行控制位: TR=1表示启动定时器,需要配合GATE和INT1。
TF0: 定时器0溢出标志位,功能和用法同TF1.
TR0: 定时器0运行控制位,功能和用法同TR1.
IE1: 外部中断1请求标志位.
IT1: 外部中断1触发方式选择位.
IE0: 外部中断0请求标志位,功能和用法同IE1.
IT0: 外部中断0触发方式选择位,功能和用法同IT1.
TMOD寄存器: 定时器/计数器工作方式寄存器.字节地址为89H,不能位寻址.
位序号 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符号 |
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
控制的定时器 |
定时器1 |
定时器0 |
|
|
|
|
|
|
GATE: 门控制位
C/T ‾ overline{T}T: 定时器模式和计数器模式选择位
M1,M0: 工作方式选择位
定时器T0有4种工作方式:方式0,方式1,方式2,=方式3= 。
设置定时器T1为方式3会让它进入关闭状态。通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。
定时器T1有3种工作方式:方式0,方式1,方式2。
当发送使用时,就采用SBUF=XXX; (XXX为需要传送的数据)
当接收使用时,采用XXX=SBUF;
它用于控制串行通信的方式选择、接收和发送,指示串口的状态。SCON既可以字节寻址,也可以位寻址。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
9FH |
9EH |
9DH |
9CH |
9BH |
9AH |
99H |
98H |
SM0, SM1:串行口工作方式控制位。
SM0 |
SM1 |
工作方式 |
功能 |
波特率 |
0 |
0 |
方式0 |
8位同步移位寄存器 |
晶振频率/12 |
0 |
1 |
方式1 |
10位UART |
可变 |
1 |
0 |
方式2 |
11位UART |
晶振频率/64或晶振频率/32 |
1 |
1 |
方式3 |
11位UART |
可变 |
工作方式0:串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。
工作方式1:方式1是10位数据的异步通信口。TXD为数据的发送引脚,RXD是数据的接受引脚。传送一帧数据的格式为1位起始位,8位数据位,1位停止位。
方式2或方式3:方式2或方式3时,为11位数据的异步通信口,TXD为数据发送引脚,RXD为数据接收引脚。起始位1位、数据位9位(含附加的第九位,发送时为SCON中的TB8,接收时为SCON中的RB8)、停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/32或1/64。方式3的波特率由定时器T1的溢出率决定。
SM2:多机通信控制位。
多机通信是工作于方式2和方式3,即SM2主要用于方式2和方式3。当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。
REN:允许接受位。
REN=1:允许接收
REN=0:禁止接收
TB8:发送数据位8.
在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
RB8:接收数据位8(一般配置为0)。
在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
TI:发送中断标志位。
可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。
RI:接收中断标志位。
可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。在配置串口初始化程序的时候,我们一般只用配置高四位,如果我们选择工作方式1,那么就是SCON=0X50;(SM0=0,SM1=1,SM2=0,REN=1)
原文作者:
https://kernel.0voice.com/
原文地址:
https://kernel.0voice.com/forum.php?mod=viewthread&tid=1997&extra=page%3D1(版权归原文作者所有,侵权联系删除)