6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。 6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。 微 型 机 I/O 接 口 设 备 2.数据格式转换: 并-串转换、A/D、D/A转换。 3.电平转换: 电平幅值或正/负逻辑转换。 4.隔离: 多个设备信号通过接口三态门隔离干扰信号。 5.缓冲驱动: 驱动多个逻辑部件或大功率执行部件。
6 单片机的中断与定时系统 I/O控制方式 中断系统是计算机的重要指标之一。 一.无条件传送方式 二.查询式传送 四.直接存储器存取方式传送 6 单片机的中断与定时系统 I/O控制方式 一.无条件传送方式 二.查询式传送 四.直接存储器存取方式传送 三.中断传送 6.1 MCS-51单片机中断系统 6.1.1 单片机中断技术概述 中断系统是计算机的重要指标之一。 日常事务程序 中断服务程序 某人看书 执行主程序 日常事务 电话铃响 中断信号INT=0 中断请求 暂停看书 暂停执行主程序 中断响应 书中作记号 当前PC入栈 保护断点 电话谈话 执行I/O程序 中断服务 继续看书 返回主程序 中断返回
6.1 MCS-51单片机中断系统 6.1.1 单片机中断技术概述 6.1.2 中断源 能发出中断请求信号的各种事件。如I/O设备、定时时钟、系统故障、软件设定等。 1. 外中断 信号方式:电平方式、脉冲方式 2. 定时中断(内中断) 定时器/计数器0 定时器/计数器1 3. 串行中断(内中断)
6.1 MCS-51单片机中断系统 6.1.1 单片机中断技术概述 6.1.2 中断源 6.1.3 中断控制 一.中断控制寄存器
1.中断标志位:登记各中断源请求信号 TF1、TF0、IE1、IE0、RI 、TI IE1、IE0(外中断)TF1、TF0(定时计数器) RI(串行口接收中断请求标志位) TI(串行口发送中断请求标志位) =1,有中断请求;= 0,无中断请求。 CPU响应中断后, TF1、TF0、IE1、IE0自动清零。TI,RI标志必须软件清零。
2.外部中断触发方式选择位: IT0、IT1 =1:负边沿(脉冲)触发中断请求; =0:低电平触发中断请求。
3.中断允许控制位:EA、ES、ET1、EX1、ET0、EX0 EA (总中断) EX1、EX0 (外部中断) ET1、ET0(定时计数器中断) ES (串行中断) =1开中断;= 0关中断。 例:允许CPU响应INT0的中断请求 SETB EX0 SETB EA
4.中断优先级控制位:PS、PT1、PX1、PT0、PX0 PX1、PX0(外中断) PT1、PT0(定时计数中断) PS (串行中断) 2级优先级:=1为高优先级,= 0为低优先级。 同一优先级别按内部查询顺序排列优先级: 高 INT0、T0、INT1、T1、SIO 低。
TCON SCON 6.1 MCS-51单片机中断系统 6.1.4 中断响应过程 1. 中断采样 外部中断源 2. 中断查询 CPU 6.1.4 中断响应过程 1. 中断采样 外部中断源 2. 中断查询 CPU TCON SCON 3. 中断响应 执行中断程序 LCALL addr16
要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 单片机 INT0 P1.0 1 +5V 脉冲触发:每次下跳变引起一次中断请求。 ORG 0000H; 复位入口 AJMP MAIN ORG 0003H; 中断入口 AJMP PINT0 ORG 0100H; 主程序 MAIN: MOV SP,#40H;设栈底 SETB EA ;开总允许开关 SETB EX0 ;开INT0中断 SETB IT0 ;负跳变触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0: CPL P1.0 ;改变LED RETI ;返回主程序
要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 单片机 INT0 P1.0 1 +5V 电平触发:避免一次按键引起多次中断响应。 ORG 0000H;复位入口 AJMP MAIN ORG 0003H ;中断入口 AJMP PINT0 ORG 0100H ;主程序 MAIN: MOV SP,#40H;设栈底 SETB EA ;开总允许开关 SETB EX0 ;开INT0中断 CLR IT0 ;低电平触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0: CPL P1.0 ;改变LED WAIT: JNB P3.2,WAIT;等按键释放 RETI ;返回主程序
6 单片机的中断与定时系统 6.1 MCS-51单片机中断系统 6.2 MCS-51单片机的定时器/计数器 6.2.1 定时方法概述 6 单片机的中断与定时系统 6.1 MCS-51单片机中断系统 6.2 MCS-51单片机的定时器/计数器 6.2.1 定时方法概述 定时必不可少! 1. 软件定时: 2. 硬件定时:(外部硬件) 3. 可编程定时器定时:(内部硬件) 定时器/计数器0 定时器/计数器1 6.2.2 定时器/计数器的定时和计数功能 定时器/计数器0:TH0(8CH)、TL0(8AH) 定时器/计数器1:TH1(8DH)、TL0(8BH)
6.2 MCS-51单片机的定时器/计数器 6.2.2 定时器/计数器的定时和计数功能 1. 计数功能: T0、T1 脉冲 2. 定时功能: 6.2.2 定时器/计数器的定时和计数功能 1. 计数功能: T0、T1 脉冲 2. 定时功能: 内部脉冲(机器周期) 计数器 定时器 计数频率=1/12振荡频率 振荡脉冲 例:12M、6M 2分频 时钟脉冲 6M、3M 6分频 机器周期1M------1us 0.5M ---2us
6.2 MCS-51单片机的定时器/计数器 6.2.1 定时方法概述 6.2.2 定时器/计数器的定时和计数功能 6.2.3 定时器/计数器的控制寄存器 1. 定时器控制寄存器(TCON): 1)启动控制位TR0、TR1 =0,停止定时器工作 =1,启动定时器工作 例:启动T0: SETB TR0 2)溢出中断标志位TF0、TF1 定时器溢出使TFx=1,引起中断请求,CPU响应Tx中断后,自动清0 TFx。
6.2.3 定时器/计数器的控制寄存器 1. 定时器控制寄存器(TCON)88H: 2.中断允许控制寄存器(IE)A8H: EA (总中断) ET1、ET0(定时计数器中断) =1开中断;= 0关中断。
6.2.3 定时器/计数器的控制寄存器 1. 定时器控制寄存器(TCON)88H: 2.中断允许控制寄存器(IE)A8H: 3.工作方式控制寄存器(TMOD)89H: T1 T0 1)门控方式选择位GATE : =0,非门控方式(内部启动)TCON : TRx=1,启动定时器工作; TRx=0,停止定时器工作。 =1,门控方式(外部启动):TRx=1且引脚INTx=1才启动。 2)功能选择位C/T: =0,定时功能,计数内部机器周期脉冲; =1,计数功能,计数引脚T0(T1)输入的负脉冲。
2.工作方式控制寄存器(TMOD)89H: T1 T0 3)方式选择位M1、M0:4种工作方式:13/16/8位
6.2 MCS-51单片机的定时器/计数器 6.2.1 定时方法概述 6.2.2 定时器/计数器的定时和计数功能 6.2.3 定时器/计数器的控制寄存器 6.2.4 定时工作方式0 :13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器。 1. 电路逻辑结构 2. 定时和计数应用 计数外部脉冲个数:1~8192(213) 定时时间(T=1s):1s ~8.19ms (T=2s): 2s ~16.38ms
例:设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500 s的等宽方波连续脉冲,并由P1.0输出,以查询方式完成。 6.2.4 定时工作方式0 设定初值: 213-X=脉冲数 例:设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500 s的等宽方波连续脉冲,并由P1.0输出,以查询方式完成。 T1 T0 MOV TMOD,#00H MOV TH1,#0FCH MOV TL1,#03H MOV IE,#00H LOOP: SETB TR1 JBC TF1,LOOP1 AJMP LOOP LOOP1: MOV TH1,#FCH CLR TF1 CPL P1.0 213-X=500 s /2/2 s X=8067D=1F83H =1111110000011B
6.2 MCS-51单片机的定时器/计数器 6.2.4 定时工作方式0 6.2.5 定时工作方式1 :16位定时/计数器。 THx 8位和TLx 8位组成16位加1计数器。 计数外部脉冲个数:1~65536(216) 定时时间(T=1s):1s ~65.536ms (T=2s): 2s ~131.072ms 设定初值: 216-X=脉冲数
例:设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500 s的等宽方波连续脉冲,并由P1.0输出,以中断方式完成。 6.2.5 定时工作方式1 例:设单片机晶振频率为6MHz,使用定时器1以方式0产生周期为500 s的等宽方波连续脉冲,并由P1.0输出,以中断方式完成。 ORG 0000H; 复位入口 AJMP MAIN ORG 001BH; 中断入口 AJMP PINT0 ORG 0100H; 主程序 MAIN: MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#083H SETB EA SETB ET1 LOOP: SETB TR1 HERE: SJMP $ 中断服务程序 PINT0: MOV TH1,#FFH CPL P1.0 RETI 216-X=500 s /2/2 s X=65411D=FF83H
6.2 MCS-51单片机的定时器/计数器 6.2.4 定时工作方式0 6.2.5 定时工作方式1 6.2.6 定时工作方式2 :8位定时/计数器。 自动重新加载功能 TLx 8位计数寄存器; THx 8位预制寄存器。 计数外部脉冲个数:1~256(28)
例:设单片机晶振频率为6MHz,使用定时器0以方式2产生周期为200 s的等宽方波连续脉冲,并由P1.0输出,分别以查询和中断方式完成。 6.2.6 定时工作方式2 例:设单片机晶振频率为6MHz,使用定时器0以方式2产生周期为200 s的等宽方波连续脉冲,并由P1.0输出,分别以查询和中断方式完成。 1. 查询方式 T1 T0 MOV IE,#00H MOV TMOD,#02H MOV TH0,#0CEH MOV TL0,#0CEH SETB TR0 LOOP: JBC TF0,LOOP1 AJMP LOOP LOOP1: CPL P1.0 28-X=脉冲数 设定初值: 28-X=200 s /2/2 s ORG 0100H; 主程序 MAIN: MOV TMOD,#02H MOV TH0,#0FCH MOV TL0,#0FCH SETB EA SETB ET0 LOOP: SETB TR0 HERE: SJMP $ CPL TF0 AJMP LOOP 中断服务程序 PINT0: CPL P1.0 RETI X=206D=0CEH 1. 中断方式 ORG 0000H; 复位入口 AJMP MAIN ORG 000BH; 中断入口 AJMP PINT0
用定时器1以工作方式2实现计数,每计100次进行累加器加1操作。 6.2.6 定时工作方式2 用定时器1以工作方式2实现计数,每计100次进行累加器加1操作。 查询方式 T1 T0 MOV IE,#00H MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH SETB TR1 DEL: JBC TF1,LOOP AJMP DEL LOOP: INC A 28-X=100 X=156D=9CH
6.2 MCS-51单片机的定时器/计数器 6.2.4 定时工作方式0 6.2.5 定时工作方式1 6.2.6 定时工作方式2 6.2.7 定时工作方式3 定时器/计数器0 定时器/计数器1 不同工作方式 1. 定时器/计数器0分成2个8位定时器:TL0定时/计数器 TH0定时器 1) TL0占用T0控制位:C/T,TR0,GATE; 2) TH0占用T1控制位:TR1; 2. 定时器/计数器1不能使用方式3工作
6 单片机的中断与定时系统 6.1 MCS-51单片机中断系统 6.2 MCS-51单片机的定时器/计数器 6 单片机的中断与定时系统 6.1 MCS-51单片机中断系统 6.2 MCS-51单片机的定时器/计数器 6.3 MCS-51单片机外部中断源的扩展 1. 直接扩展 1. 定时器/计数器扩展
利用定时器/计数器的溢出(TFX) 中断。 方法: 6.3 MCS-51单片机外部中断源的扩展 1. 直接扩展 2. 定时器/计数器扩展 利用定时器/计数器的溢出(TFX) 中断。 方法: 1) 工作方式2,自动装载8位计数。 2) THX、TLX均置为0FFH。 3) 外部中断源接到T0或T1。 4) 中断程序放入对应的定时器/计数器中断入口地址。 程序: ORG 000BH(001BH) AJMP PINT0 主程序 MOV TMOD,#06H(#60H) MOV TH0(TH1),#0FFH MOV TL0(TL0),#0FFH SETB EA SETB ET0(ET1) SETB TR0(TR1)