C51单片机——串口和中断系统

来源:互联网 发布:淘宝看数据软件 编辑:程序博客网 时间:2024/05/16 14:28
串口SCON,串口控制器
D7     D6    D5     D4      D3   D2     D1  D0
SM0  SM1  SM2  REN  TB8  RB8  TI    RI


SM0 SM1 工作方式   功能描述       波特率
0   0   方式0     8位移位寄存器   Fosc/12
0   1   方式1     10位UART       可变
1   0   方式2     11位UART       Fosc/64或fosc/32
1   1   方式3     11位UART       可变
其中fosc为晶振频率
 
SM2:多机通讯控制位。
     在方式0时,SM2一定要等于0。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1。
     在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。
REN:接收允许控制位。由软件置位以允许接收,又由软件清0来禁止接收。
TB8: 是要发送数据的第9位。在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。
     例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。
RB8:接收到的数据的第9位。在方式0中不使用RB8。
     在方式1中,若(SM2)=0,RB8为接收到的停止位。在方式2或方式3中,RB8为接收到的第9位数据。
TI: 发送中断标志。在方式0中,第8位发送结束时,由硬件置位。在其它方式的发送停止位前,由硬件置位。
     TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。
     TI必须用软件清0。
RI: 接收中断标志位。
     在方式0,当接收完第8位数据后,由硬件置位。在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。
     RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。RI也必须用软件清0。




中断应用
实现中断功能的硬件系统和软件系统称为中断系统。中断系统基本问题:
中断源,中断响应与返回,优先级控制。
MCS51有5个中断源,2个中断优先级(可实现两级中断嵌套)。
中断允许寄存器IE,中断优先寄存器IP


中断请求源
      中断源              中断向量             中断请求标志
      --------------------------------------------------------------
      上电复位            0000H                
      外部中断 0          0003H                IE0
      定时器 T0 溢出      000BH                TF0
      外部中断 1          0013H                IE1
      定时器 T1 溢出      001BH                TF1
      串行口中断          0023H                T1或R1
      
TCON:定时器控制寄存器
寄存器地址88H,位寻址8FH~88H。
       D7  D6  D5  D4  D3  D2  D1  D0
       --------------------------------
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
位地址 8F  8E  8D  8C  8B  8A  89  88


TF0(TF1)———计数溢出标志位,当计数器计数溢出时,该位置1。
TR0(TR1)——定时器运行控制位
  当TR0(TR1)=0,停止定时器/计数器工作
  当TR0(TR1)=1,启动定时器/计数器工作
IE0(IE1)——外中断请求标志位
  当CPU采样到P3.2(P3.3)出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。
IT0(IT1)——外中断请求信号方式控制位
  当IT0(IT1)=1 脉冲方式(后沿负跳有效)
  当IT0(IT1)=0 电平方式(低电平有效)此位由软件置1或清0。
TF0(TF1)——计数溢出标志位
  当计数器产生计数溢出时,此位由硬件置1。当转向中断服务时,再有硬件自动清0。
  计数溢出的标志位的使用有两种情况:采用中断方式时,作中断请求标志位来使用;采用查询方式时,作查询状态位来使用。
  
IE:中断允许寄存器
寄存器地址
             D7  D6  D5  D4    D3    D2    D1  D0
              ---------------------------------------------
位符号 EA   -    -       ES    ET1   EX1  ET0  EX0
位地址 AFH              ACH ABH  AAH  A9H  A8H
 

EA:中断总允许位。EA=1,CPU允许中断;EA=0,CPU禁止所有的中断请求。
ES:串行中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。
ET1:定时器/计数器T1中断控制位。ET1=1,允许T1中断;ET1=0,禁止T1中断
EX1:T0溢出中断允许位。ET0=1,允许T0中断;        ET0=0, 禁止T0中断。
ET0:定时器/计数器T0中断控制位。ET0=1,允许T0中断;ET0=0,禁止T0中断
EX0:外部中断允许位。  EX0=1,允许外部中断0中断;  EX0=0,禁止外部中断0中断。
8051系统复位后,IE中各位均被清0,即禁止所有中断。


IP:中断优先寄存器
寄存器地址
 D7  D6  D5  D4  D3  D2  D1  D0
   --------------------------------
位符号 -   -    -            PS  PT1 PX1 PT0 PX0
位地址                        BCH BBH BAH B9H B8H


PS: 串行中断优先控制位。PS=1,设定串行口为高优先级中断;PS=0,为低优先级。
PT1:T1中断优先控制位。PT1=1,设定定时器T1为高优先级中断;PT=0,为低优先级。
TX1:外部中断1中断优先级控制位。PX1=1设定外部中断1为高优先级中断;PC1=0,为低优先级。  INT1
PT0:T0中断优先控制位。PT1=1,设定定时器T0为高优先级中断;PT0=0,为低优先级。
PX0:外部中断0中断优先级控制位。PX0=1,设定外部中断0为高优先级。PX0=0,为低优先级。    INT0
 
8051复位后,IP低五位全部清0,将所有中断源设置为低优级中断。
  如果几个同优先级的中断源同时向CPU申请中断,哪一个申请得到服务,取决于它们在CPU内部动登记排队的序号。
CPU通过内部硬件查询登记号,按自然优先级决定优先响应哪个中断请求。
自然优先级按从高到低的顺序依次为:外中断0,定时器0,外中断1,定时器1,串行中断。
原创粉丝点击