一.中断系统相关寄存器
1.51单片机中断系统的总体结构:
2.中断源的中断级别(由高到低):
INT0---外部中断0,中断入口地址:0003H,P3.2提供,有电平和脉冲两种方式
T0---定时器/计数器0中断,中断入口地址:000BH,由T0定时溢出提供
INT1---外部中断1,中断入口地址:0013H,P3.3提供,有电平和脉冲两种方式
T1---定时器/计数器1中断,中断入口地址:001BH,由T1定时溢出提供
TX/RX---串行口中断,中断入口地址:0023H,由串行口提供,串行通信接收和发送都可产生中断
3.与中断有关的四个寄存器:
(1)TCON---定时控制寄存器
TCON寄存器是一个8位的特殊功能寄存器,用于控制定时器/计数器和外部中断。
TCON即以下这部分:
TCON的结构(8FH-88H):
TF1 :TF1=1表示T1有中断产生。(Timer Flag,定时器标志位
TR1 :TR1=1表示T1开始运行。(单片机中T0引脚,需要高低电平的驱动)
TF0 :TF0=1表示T0有中断产生。
TR0 :TR0=1表示T0开始运行。(单片机中T1引脚,需要高低电平的驱动)
IE1 :IE1=1表示INT1有中断产生。
IT1 :IT1=1表示INT1为下降沿触发,IT1=0表示INT1为低电平触发。
IE0 :IE0=1表示INT0有中断产生。
IT0 :IT0=1表示INT0为下降沿(负跳变)触发,IT0=0表示INT0为低电平触发。
针对外部中断(IE/IT):
IE0/IE1:外部中断请求标志位
当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,
CPU开始响应,处理中断,而当入中断程序后由单片机自动置0.
IT0/IT1:外部中断触发方式控制位 //选择有效信号
IT0/IT1=1:脉冲触发方式,下降沿有效。
IT0/IT1=0:电平触发方式,低电平有效。
(2)IE---中断允许控制寄存器
IE寄存器是一个用于控制各种中断的使能和禁止的特殊功能寄存器,包含了一系列位,每个位对应一个特定的中断源,通过设置这些位,可以控制相应中断的触发。
注:支持位寻址
IE寄存器即这一部分:
IE寄存器的结构(AFH-A8H):
EA :整体中断允许位;EA=1允许中断。
ES :串行中断允许位;ES=1允许中断。
ET1 :T1中断允许位;ET1=1允许中断。
EX1 :INT1中断允许位;EX1=1允许中断。
ET0 :T0中断允许位;ET0=1允许中断。
EX0 :INT0中断允许位;EX0=1允许中断。
注:D6,D5为无关位
(3)IP---中断优先级控制寄存器
IP寄存器用于控制中断的优先级,支持位寻址,而在默认情况下,中断优先级由高到低为:X0 > T0 > X1 > T1 > S
X0表示外部中断源0的优先级位,T0表示定时器0中断的优先级位,X1表示外部中断源1的优先级位,T1表示定时器1中断的优先级位,而S则表示串行通信中断的优先级位
即中断系统的这一部分:
IP寄存器的结构(B8H-BFH):
PS——串行口中断优先级控制位。
PS=1,串行口中断定义为高优先级中断。
PS=0,串行口中断定义为低优先级中断。
PT1——定时器/计数器1中断优先级控制位。
PT1=1,定时器/计数器1中断定义为高优先级中断。
PT1=0,定时器/计数器1中断定义为低优先级中断。
PX1=1,外部中断1定义为高优先级中断。
PX1=0,外部中断1定义为低优先级中断。
PT0——定时器/计数器0中断优先级控制位。
PT0=1,定时器/计数器0中断定义为高优先级中断。
PT0=0,定时器/计数器0中断定义为低优先级中断。
PX0——外部中断0中断优先级控制位。
PX0=1,外部中断0定义为高优先级中断。
PX0=0,外部中断0定义为低优先级中断。
注:D7,D6,D5为无关位。
(4)SCON---串行口控制寄存器
SCON寄存器的结构(98H~9FH):
1.SM0、SM1:串行口工作方式控制位
2.SM2:多机通信控制位
多机通信工作于方式2和方式3,故SM2位主要用于方式2和方式3。
①在接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入sbuf,且置位RI发出中断申请,否则会将接受到的数据放弃。
②当SM2=0时,就不管第9位数据是0还是1,都得将数据送入sbuf,并发出中断申请。即此时RI是否置位由SM2和RB8共同决定。
工作于方式0时,SM2必须为0。
3.REN:允许接收位
REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
4.TB8:发送接收数据位8
在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样也要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
5.RB8:接收数据位8
在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
6.TI:发送中断标志位
可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件置0。
7.RI:接收中断标志位
可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。
注:在串口中断处理时,TI、RI都需要软件置0,硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要ES=0,以防止中断出现。
二.定时/计数相关寄存器
定时/计数器的逻辑结构:
1.TMOD---控制寄存器
TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。
D0~D3为T0定时/计数器的设置,D4~D7为T1定时/计数器的设置 。
GATE:为门控位:
GATE=0时,只要在编写程序时,使TCON中的TRO或TR1为1,就可以启动定时器/计数器工作。
GATE=1时,不仅要在编写程序时,使TCON中的TRO或TR1为1,且需要外部引脚也为高电平,才能 工作。
C/T :定时/计数模式切换,C/T=0时为定时模式,C/T=1时为计数模式。
M1,M0:用来选择定时计/计数器的工作方式,一般使用都是采用16位的计时计数器。
想要详细了解工作方式:http://t.csdnimg.cn/904wt
2.TCON----定时器控制寄存器(支持位寻址)
TR1:1启动T1,0停止T1
TR0:1启动T0,0停止T0
其余6位:与中断有关
三.并行接口
MCS-51单片机有4个8位并行接口,如果想深入学习可以看:
四.串行接口
1.串行通信的分类
(1)同步通信
(2)异步通信
2.串行通信的制式
3.串行通信标准
(1)RS-232C接口
PC常用的RS-232C接口信号定义(9针)
PC常用的RS-232C接口信号定义(25针)
(2)RS-232与RS-423接口,RS-422和RS-485接口对比
4.MCS-51串口控制
MCS-51串口结构
MCS-51提供一个全双工串口,可以转换为标准的RS-232串口。
1)数据缓冲器
发送SBUF和接收SBUF共用一个地址99H。
•发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。
发送指令: MOV SBUF,A
•接收SBUF存放已接收成功的8位数据,供CPU读取。
读取串行口接收数据指令:MOV A,SBUF
(2)电源控制寄存器PCON
电源管理寄存器在特殊功能寄存器中,字节地址为 87H,不能位寻址,PCON用来管理单片机的电源部分,包括上电复位检测、掉电模式、空闲模式等。单片机复位时 PCON 全部被清0。
(3)SCON串行口控制寄存器
在中断控制节已经介绍:
D7、D6:SM0、SM1,工作方式,有四种。
D5:SM2,1多机通信,0双机
D4:REN,1允许接收
D3:TB8,发送的第9位数据
D2:RB8,接收的第9位数据
D1:TI,发送中断标志
D0:RI,接收中断标志
具体介绍四种工作方式:
方式0( SM0 SM1 :0 0):
串行口的工作方式0为移位寄存器I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。
发送操作:当执行一条“MOV SBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。发送完8位数据后自动置TI=1.请求中断。要继续发送时,TI必须有指令清零。
接收操作:REN是串行口接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当软件将REN置“1”时,即开始从RXD端口以fosc/12波特率输入数据,当接收到8位数据时,将中断标志RI置“1”。再次接收数据之前,必须用软件将RI清0。
方式1( SM0 SM1 :0 1):
串行口为10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。
发送数据:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。发送完一帧数据后,置中断标志TI=1,申请中断,通知CPU可以发送下一个数据了。
接收数据:首先使REN=1(允许接收数据),串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据 。
方式2 ( SM0 SM1 :1 0) :
串行口为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。
发送数据:发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出一帧数据。
接收数据:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置RI=1,并申请中断,通知CPU接收数据。当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行口将接收发送来的信息。当SM2=1时,且RB8=1,表示在多机通信情况下,接收的信息为“地址帧”, 此时置RI=1,串行口将接收发来的地址。当SM2=1时,且RB8=0,表示在多机通信情况下,接收的信息为“数据帧”, 但不是发给本从机的,此时RI不置为“1”,因而SBUF中接收的数据帧将丢失。
(4)方式3 ( SM0 SM1 :1 1) :
方式3为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。