第5章80C51的中断系统及定时计数器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/1/8 11
中断响应时间
M1 M2 M3 M4 M5 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
中断 ε 标志 锁存 有效
排序选择
保护断点,长调用至入口
也可以利用以下2条语句完成: TH0 = (65536-500)/256 ; 商为计数初值的高字节 TL0 = (65536-500)%256 ; 余数为计数初值的低字节
2019/1/8
26
方式2:8位自动重装方式
TCON TF1 申请 中断 TR1 TF0 TR0 TH0 8位 D0 D7 溢出 1 TL0 &
2019/1/8
5
两种触发方式比较:
电平方式时, INTx低电平必须保持到响应时,否则就会 漏掉;在中断服务结束前,INTx低电平必须撤除,否则中断 返回之后将再次产生中断。 例,8255的中断请求线在接受读或写操作后即被复位,因 此以其去请求电平触发方式的中断比较方便。 边沿方式时,采样到有效下降沿后,在IEx中将锁存一个1。 若CPU暂时不能响应,申请标志也不会丢失,直到响应时才 清0。 例,ADC0809的转换结束信号EOC为正脉冲,经反相后就可 以作为80C51的INTx信号 。
2019/1/8 6
溢出中断标志TF1、TF0(用TFx表示) 溢出中断请求标志TFx ,Tx启动后就开始由初值进行加 1计数,直至最高位产生溢出使TFx=1向CPU请求中断。CPU 响应中断后TFx自动清0。
SCON的中断标志
7 SCON 6 5 4 3 2 1 TI 0 RI 字节地址:98H
2019/1/8 24
方式ቤተ መጻሕፍቲ ባይዱ:16位方式
TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 1 TH0 8位 TL0 8位 &
≥1
TMOD T0引脚 1 0 M0 M1 C/T 0 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0
X=216-N=65536-N
2019/1/8
4
触发方式设置及中断标志
7 6 5 4 3 2 1 0
TCON
TF1 TR1 TF0 TR0 IE1
IT1
IE0
IT0
字节地址:88H
外部中断标志IE1、IE0(用IEx表示) 电平方式(ITx=0),INTx引脚低电平时IEx=1,响应中 断后IEx不自动清0(INTx引脚状态)。 边沿方式(ITx=1),INTx引脚负跳变时IEx=1,响应中 断后IEx自动清0。
2019/1/8 23
门控位作用
当GATE=0时 仅由TR0控制与门的开启。与门输出1时,控制开关 接通,计数开始; 当GATE=1时 与门的开启由INT0和TR0共同控制。这种方式可以用 来测量INT0引脚上正脉冲的宽度。 注意:方式0的计数初值高8位和低5位确定麻烦 ,实际 应用中常由16位的方式1取代。
主程序A 断点 中断服务程序B
响应
返回
RETI 中断服务程序B
中断的优点 中断源 : CPU 中断请求 利用率高 控制实时性强 中断服务 系统可靠性好 中断返回 中断系统
2019/1/8
2
……
80C51中断系统的结构
5个中断源、2个优先级
TCON
IT0 1 0 IE0 1 ET0 1 TF0 IT1 1 0 IE1 1 ET1 1 TF1 0 RI TI ES 1 ≥1 PS 1 0 0 PT1 1 低 优 先 级 中断源 中断申请 0 EX1 1 PX1 1 中断源 EX0 1
2019/1/8
14
5.2.4
中断程序举例
void Ex0()interrupt 0 { Flag=~Flag; }
while(1) {if(Flag==0) //左移 { ScanNum=_crol_(ScanNum,1); P0=ScanNum; } else //右移 { ScanNum=_cror_(ScanNum,1); P0=ScanNum; } DelayMs(500); }
≥1
TMOD T0引脚 0 1 M0 M1 C/T 0 机器周期 GATE M0 1 INT0引脚 M1 C/T GATE D7 D0
X=28-N=256-N
计数范围:1~256
EX0:外中断0允许 ET0:T0中断允许 EX1:外中断1允许
ET1:T1中断允许 ES :串口中断允许 EA :CPU中断允许
2019/1/8
8
中断优先级控制
中断优先级由IP控制(1,高级;0,低级)
7 IP 6 5 4 PS 3 2 1 0 PT1 PX1 PT0 PX0 字节地址:B8H
PX0:外中断0优先级 PT0:T0中断优先级 PX1:外中断1优先级
2019/1/8
22
初值计算:
公式法 C/T=1时,则为计数模式,有: 13 X=2 -N=8192-N C/T=0时,则为定时模式,有: X=213-N=8192-N,N=t/Tcy 求补法 :X=对N求补
【例5-3】若计数个数N为2,求计数初值。 公式法计算:X=8192-2=8190=1FFEH 求补法计算:对0 0000 0000 0010B取反加1为: 1 1111 1111 1110B(1FFEH)
} void Ex1Isr() interrupt 2 { if(Flag1==0)Flag1=1; Flag0 = 0; }
16
2019/1/8
5.3 80C51单片机的定时/计数器
基本型:T0,定时、计数。 T1,定时、计数、串口波特率发生器。
增强型:增加了 T2。见5.3.4节。 5.3.1 定时/计数器的结构和工作原理
中断服务
中断响应至少需要3个完整的机器周期(3~8个)! 受阻时要附加3~5个机器周期(无同级或高级中断正进行) 排序周期不是指令的最后机器周期(如MUL,5个) 排序周期恰逢RETI类指令(要再跟指令,若是MUL,8个)
2019/1/8
12
5.2.2 中断响应过程 CPU响应中断过程
将相应优先级状态触发器置1(阻断后来同级或低级中断 ) 执行硬件LCALL指令(PC入栈,中断服务程序入口址送PC ) 执行中断服务程序
计数范围:1~65536
计数初值要分成2个字节分别送入TH0、TL0
2019/1/8 25
【例5-4】若要求定时器T0工作于方式1,定时时间为1ms, 当晶振为6 MHz时,求送入TH0和TL0的计数初值各为多少? 应怎样送入TH0和TL0?
由于晶振为6 MHz,所以机器周期Tcy为2µ S,因此: N=t/Tcy=1×10-3/2×10-6=500 X=216-N=65536-500=65036=FE0CH 分别将FEH送入TH0中,0CH送入TL0中即可。
IE
EA 1
IP
PX0 1 0 PT0 1
硬件查询
高 优 先 级
INT0 T0 INT1 T1 RX TX
中断申请
中断入口
中断入口
SCON
2019/1/8 3
5.1.2 80C51的中断源 中断源 外部中断0(INT0) 外部中断1(INT1) T0溢出中断(TF0) T1溢出中断(TF1) 串行口中断(RI或TI)
【例5-1】单外部中断源示例
2019/1/8
15
【例5-2】如图所示,编写程序实现:系统上电后,数码管 显示“P”。按下S0键则数码管进行加计数,S1键则数码管进 行减计数。计数值显示在数码管上。 void t0Isr() interrupt 1
{ if(Flag0==0)Flag0=1; Flag1 = 0;
18
2019/1/8
5.3.2 定时/计数器的控制
工作方式寄存器TMOD
7 TMOD 6 5 M1 4 M0 3 2 1 M1 0 M0 字节地址:89H GATE C/T GATE C/T
GATE :门控位。 GATE = 0 时,只要 TRx 为 1 ,就可启动计 数器工作; GATA = 1 时,定时器的启动还要加上 INTx 引脚 为高电平这一条件。
结构
T1引脚 T0引脚
机器周 期脉冲
TH1
TL1
TH0
TL0
内部总线
GATE TF1 TR1 TF0 TR0 C/T C/T M1 M0 M1 M0
TCON
TMOD
TH1、TL1 TH0、TL0 TCON TMOD
GATE
外部中断相关位
T1方式
17
T0方式
2019/1/8
工作原理
---实质是16位加1计数器
注意:TMOD不能进行位寻址
2019/1/8
20
控制寄存器TCON
7 TCON 6 5 4 3 2 1 0 字节地址:88H TF1 TR1 TF0 TR0
TFx:Tx溢出标志位。响应中断后TFx有硬件自动清0。 用软件设置TFx可产生同硬件置1或清0同样的效果。 TRx:Tx运行控制位。置1时开始工作;清0时停止工作。 TRx要由软件置1或清0(即启动与停止要由软件控制)。
第5章 80C51的中断系统及定时/计数器
5.1
80C51单片机的中断系统
5.2
80C51单片机的中断处理过程
5.3
80C51单片机的定时/计数器 80C52的定时/计数器2
5.4
2019/1/8
1
5.1 80C51单片机的中断系统
5.1.1 80C51中断系统的结构
中断的概念
CPU进行工作A时发生了事件B,请求CPU马上处理 CPU暂时中断当前工作A,转去处理事件B 事件B处理完后,回到工作A被中断的地方继续处理A工作
C/T:模式选择位。 清0为定时模式,置1为计数方式。 M1M0:工作方式设置位。可设置四种工作方式(见下页)。
2019/1/8
19
M1M0 工作方式 00 方式0
说 13位定时/计数器

01
10 11
方式1
方式2 方式3
16位定时/计数器
8位自动重装定时/计数器 T0分成两个独立的8位定时/计数器; T1此方式停止计数
RI:串口接收中断标志,响应中断时不能自动清除 TI:串口发送中断标志,响应中断时不能自动清除
7
2019/1/8
5.1.3 80C51中断的控制 中断允许控制
中断源的开放和屏蔽由IE控制(1,开放;0,禁止)
7 IE EA 6 5 4 ES 3 2 1 0 ET1 EX1 ET0 EX0 字节地址:A8H
编写中断服务程序注意
中断服务程序入口存放指令LJMP或AJMP 现场保护与现场恢复
2019/1/8
13
5.2.3 中断返回
中断服务程序最后指令必须是RETI,其功能:
将断点从堆栈弹送PC,CPU从原断点继续执行 将相应优先级状态触发器清0,恢复原来工作状态
注意
不能用RET代替RETI 中断服务程序中PUSH和POP必须成对使用
2019/1/8
21
5.3.3
定时/计数器的工作方式
T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。
方式0:13位方式
TCON TF1 申请 中断 TR1 TF0 TR0 D7 溢出 TH0 8位 TL0 5位 &
≥1
TMOD T0引脚 1 1 0 0 0 M0 M1 C/T 机器周期 GATE M0 1 D0 INT0引脚 M1 C/T GATE D7 D0
PT1:T1中断优先级 PS :串口中断优先级
同一优先级的自然顺序: 自高至低:INT0、TO、INT1、T1、串口。
9
2019/1/8
中断优先级遵循的原则 几个中断同时申请,先响应高级的中断 正进行的中断服务,同级或低级中断不能对其 中断,但可以被高级中断所中断。 为此,中断系统内设有对应高、低2个优先级状 态触发器(用户不能寻址)。 状态触发器的复位由中断返回指令RETI控制。
2019/1/8
10
5.2 80C51单片机中断处理过程
5.2.1 中断响应条件和时间
中断响应条件
有中断请求
相应的中断允许位为1
CPU开中断(即EA=1) 遇下面情况之一将不被响应(此间中断条件失效,中断丢失) 正在处理同级或高级中断
当前选择周期不是所执行指令的最后一个机器周期
正在执行RETI或访问IE或IP 的指令
定时器模式时,对内部机器周期计数。 定时时间=计数值*机器周期 计数器模式时,是对外部脉冲计数。脉冲由T0 ( P3.4 ) 或T1(P3.5)引脚输入。 注意:(若计数值为N,计数初值为X) •溢出信号使TF0或TF1置1,并发出中断请求,16位时有: X=65536-N •12MHz晶振时,计数频率低于0.5MHz
相关文档
最新文档