《最新单片机原理及应用课件ppt课件.ppt》由会员分享,可在线阅读,更多相关《最新单片机原理及应用课件ppt课件.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5.1 MCS-51单片机的单片机的中断系统中断系统u一、单片机中断技术概述1、有关中断术语: 中断源、断点、中断服务程序 开中断、关中断、中断优先级2、中断技术:中断技术是解决资源竞争实现资 源共享的方法3、程序中断与调用子程序的区别:在于是否可预知4、中断的功能实现CPU与外设的速度匹配 实时控制故障及时发现5.1 MCS-51单片机的单片机的中断系统中断系统u三、单片机对中断源的管理2、IE:中断允许寄存器EA/ES ET1EX1ET0EX0EA:EA=1 ,允许CPU响应中断,中断总允许ES:ES=1 ,允许串行口中断ET1: ET1=1 ,允许定时器1中断EX1: EX1=1 ,允许
2、外中断1中断 ET0: ET0=1 ,允许定时器0中断EX0: EX0=1,允许外中断0中断例如:若要允许T0产生中断,必须ET0=1且EA=5.1 MCS-51单片机的单片机的中断系统中断系统u三、单片机对中断源的管理3、IP:中断允许寄存器/PS PT1PX1PT0PX0 某位=1,对应中断源处于高优先级PS:PS=1 ,串行口中断处于高优先级PT1: PT1=1 ,定时器1中断处于高优先级PX1: PX1=1 ,外中断1中断处于高优先级PT0: PT0=1 ,定时器0中断处于高优先级PX0: PX0=1,外中断0中断处于高优先级注意:复位后,IE=00H,IP=00H,表示。5.1 MC
3、S-51单片机的单片机的中断系统中断系统四、中断优先级的控制原则: MCS-51具有两级优先级,两级中断服务嵌套功能,控制原则是:低优先级的中断请求不能打断高优先级的服务,高优先级的中断请求可以打断低优先级的服务。如果一个中断请求已被响应,则同级的中断服务将被禁止。同级的中断同时出现,CPU响应中断的顺序是: 外中断0、T0、外中断1、T1、串行口例如:若设置IP=12H,则CPU响应中断的顺序是: T0、串行口、外中断0、外中断1、T5.1 MCS-51单片机的单片机的中断系统中断系统五、中断响应过程:1、中断采样:2、中断查询:3、 中断响应:产生LCALL指令 中断响应时间:38个机器周
4、期 (标志位查询) 1+(LCALL)2=3(IE、IP、RET、RETI)2+(MUL、DIV)4+ (LCALL) 2=5.1 MCS-51单片机的单片机的中断系统中断系统五、中断请求的撤销:目的:使一次中断请求执行中断服务一次1、定时中断请求:转向中断服务程序自动撤销2、串行中断请求:在中断服务程序中使用指令撤销 软件撤销。3、 边沿触发方式的外中断请求:转向中断服务程序自动撤销 4、电平触发方式的外中断请求:外加硬件电路撤销 P145 图6.2 5.2 MCS-51定时器定时器/计数器的控制计数器的控制u一、定时方法种类:1、软件定时、 2、硬件定时、 3、可编程定时器定时u二、定时和
5、计数功能综述:1、由两个16位的加法计数器(TH0TL0、TH1TL1)进行计数,通过对TH0TL0和TH1TL1的初值设置,可控制计数长度2、定时功能是对内部机器周期计数,计数功能是对T0、T1引脚进行计数。3、计数频率:定时:一个机器周期,fosc/12计数:外来信号,频率 fosc/5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制: 通过控制TCON 、IE、 IP、TMOD寄存器达到目的1、 TCON 、IE 、 IP有关位的控制意义TF1TR1TF0TR0IE1IT1IE0IT0EA/ESET1EX1ET0EX0/PS PT1PX1PT0PX5.2
6、MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:1、IP、IE、TCON有关位的控制意义2、TMOD寄存器介绍GATEC/TM1M0GATEC/TM1M0T1T0GATE:门控位GATE=0,当TR=1时,启动定时器,软启动GATE=1,当TR=1且INT=1时,启动定时器,硬启动C/T=1,计数功能; C/T=0,定时功能。M1M0:定时器工作方式,0011指定工作方式5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:1、IP、IE、TCON有关位的控制意义2、TMOD寄存器介绍u3、初始化定时器/计数器的步骤:设置TMOD,控制
7、定时器的工作方式设置TH、TL计数初值设置IE、IP5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:4、计数初值X的计算:u计数方式:M-X=要计的数例如:使用T0工作于方式1计数,每计1000就溢出求计数初值 65536-X=1000,得X=64536D=FC18H系统要求某种方式下最长计数值方式0:M=8192方式1:M=65536方式2、3:M=5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:4、计数初值X的计算:u定时方式:(M-X)机器周期=要定时的时间例如:使用T1工作于方式1定时10mS,若fosc=6MHz
8、,则计数初值=? ( 65536-X)2uS=10mS,得X=60536D=EC78H系统要求某种方式下最长计数值方式0:M=8192方式1:M=65536方式2、3:M=256系统给出5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:1、IP、IE、TCON有关位的控制意义2、TMOD寄存器介绍3、初始化定时器/计数器(T/C)的步骤u4、定时器/计数器(T/C)的使用步骤初始化T/C(TMOD、THTL、IE、IP)启动T/C:SETB TR查询方式:判TF,若=1,则转相应处理 中断方式:当TF=1时硬件自动转向中断入口地址,在 中断入口地址处按排相应处
9、理程序即可5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:4、定时器/计数器(T/C)的使用步骤初始化T/C启动T/C:SETB TR查询方式:判TF,若=1,则转相应处理初始化T/CTF=1?N清TF位溢出处理启动T/C重送TH、TLY5.2 MCS-51定时器定时器/计数器的控制计数器的控制三、定时器/计数器的控制:4、定时器/计数器(T/C)的使用步骤初始化T/C启动T/C:SETB TR中断方式:当TF=1时硬件自动转向中断入口地址,在中断入口地址处按排相应处理程序即可主程序: 中断服务程序:初始化T/C启动T/C(其它处理),并等待中断溢出处理重送
10、TH、TL中断返回5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u一、方式01、13位计数器:TH8TL52、计数长度:18192 定时长度:(18192)机器周期 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式0产生500uS的等宽正方波连续脉冲,问计数初值应为多少?5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u一、方式0例:设单片机晶体振荡频率为6MHz,使用定时器1以方式0产生500uS的等宽正方波连续脉冲,问计数初值应为多少?解:(1)方式0最大的计数长度M=8192(2)当fosc= 6MHz, 机器周期为2uS设计数初值为X,则(8192-
11、X) 2uS =250 Us解得X=8067D=11111100,00011B所以,TH1=FCH,TL1=03H5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u二、方式11、16位计数器:TH8TL82、计数长度:165536 定时长度:(165536)机器周期 例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u二、方式1例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。解:(1
12、)计算计数初值设计数初值为X,则(65536-X) 2uS =250 uS解得X=65411D=11111111,10000011B所以,TH1=FFH,TL1=83H(2)TMOD、IE、IP的确定(3)查询方式编程、中断方式编程5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u二、方式1例:设单片机晶体振荡频率为6MHz,使用定时器1以方式1产生500uS的等宽正方波连续脉冲,并从P1.0输出,试编程。解:(2)TMOD、IE、IP的确定TMOD:0001,XXXX 即10HIE:查询方式:00H; 中断方式:1XX0,1000 即88HIP:00H例:设单片机晶体振荡频率为
13、例:设单片机晶体振荡频率为6MHz,使用定时器,使用定时器1以方以方式式1产生产生500uS的等宽正方波连续脉冲,并从的等宽正方波连续脉冲,并从P1.0输出,输出,试编程。试编程。u(3)查询方式编程 MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#83H MOV IE,#00H MOV IP,#00H SETB TR1LOOP:JBC TF1,LOOP1 AJMP LOOPLOOP1:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 AJMP LOOP 初始化T/CTF1=1?N清TF1位溢出处理启动T/C重送TH1、TL1Yu(3)中断方式编
14、程 MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#83H MOV IE,#88H MOV IP,#00H SETB TR1 SJMP $T1PRO:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 RETI 初始化T/C启动T/C(其它处理),并等待中断溢出处理重送TH1、TL1中断返回主程序:中断服务程序:u(3)中断方式编程 ORG 0000H AJMP MAIN ORG 001BH AJMP T1PRO ORG 0030HMAIN: MOV TMOD,#10H MOV TH1,#0FFH MOV TL1,#83H MOV IE,#88H
15、MOV IP,#00H SETB TR1 SJMP $T1PRO:MOV TH1,#0FFH MOV TL1,#83H CPL P1.0 RETI 5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值1、8位计数器:TL8, TH8用来保存TL8的初值2、计数长度:1256 定时长度:(1256)机器周期 例:用定时器1方式2实现计数,每计100次,累加器加1,试编程。5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值例:用定时器1方式2实现计数,每计100次,累加器加1,试编程。解:(1)计算计数初值设计数初值
16、为X,则:256-X=100解得X=156D=9CH所以,TH1=9CH,TL1=9CH(2)TMOD、IE、IP的确定(3)查询方式编程、中断方式编程5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值例:用定时器1方式2实现计数,每计100次,累加器加1,试编程。解:(2)TMOD、IE、IP的确定TMOD:0110,XXXX 即60HIE:查询方式:00H; 中断方式:1XX0,1000 即88HIP:00H例例1:用定时器:用定时器1方式方式2实现计数,每计实现计数,每计100次,累次,累加器加加器加1,试编程。,试编程。u(3)查询方式编程 M
17、OV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#00H MOV IP,#00H SETB TR1LOOP:JBC TF1,LOOP1 AJMP LOOPLOOP1: INC A AJMP LOOP 初始化T/CTF1=1?N清TF1位溢出处理启动T/C重送TH1、TL1Yu(3)中断方式编程 MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH MOV IE,#88H MOV IP,#00H SETB TR1 SJMP $T1PRO: INC A RETI 初始化T/C启动T/C(其它处理),并等待中断溢出处理重送TH1、
18、TL1中断返回主程序:中断服务程序:5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值例2:使用定时器0工作于方式2产生100uS的定时,从P1.0输出200uS的等宽正方波连续脉冲,单片机晶体振荡频率为6MHz,试编程。解:(1)计算计数初值设计数初值为X,则(256-X) 2uS =100 uS解得X=206D=CEH所以,TH0=CEH,TL0=CEH(2)TMOD、IE、IP的确定(3)查询方式编程、中断方式编程5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值例2:使用定时器0工作于方式2产生100u
19、S的定时,从P1.0输出200uS的等宽正方波连续脉冲,单片机晶体振荡频率为6MHz,试编程。解:(2)TMOD、IE、IP的确定TMOD: XXXX , 0010 即02HIE:查询方式:00H; 中断方式:1XX0,0010 即82HIP:00H例例2:使用:使用定时器定时器0工作于方式工作于方式2产生产生100uS的定时,从的定时,从P1.0输出输出200uS的等宽正方波连续脉冲,单片机晶体振荡的等宽正方波连续脉冲,单片机晶体振荡频率为频率为6MHz,试编程,试编程。u(3)查询方式编程 MOV TMOD,#02H MOV TH1,#0CEH MOV TL1,#0CEH MOV IE,#
20、00H MOV IP,#00H SETB TR1LOOP:JBC TF1,LOOP1 AJMP LOOPLOOP1:CPL P1.0 AJMP LOOP 初始化T/CTF0=1?N清TF0位溢出处理启动T/C重送TH0、TL0Yu(3)中断方式编程 MOV TMOD,#02H MOV TH1,#0CEH MOV TL1,#0CEH MOV IE,#82H MOV IP,#00H SETB TR1 SJMP $T1PRO:CPL P1.0 RETI 初始化T/C启动T/C(其它处理),并等待中断溢出处理重送TH0、TL0中断返回主程序:中断服务程序:5.3 MCS-51定时器定时器/计数器工作方
21、式计数器工作方式u三、方式2 8位重装计数初值例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。u思路:即所求矩形方波高电平为40 uS,低电平为360 uS。使T0定时40 uS。当P1.0为高电平时,每定时时间到使P1.0变为低电平;当P1.0为低电平时,每定时时间到使R7减1,(R7初值为9),当R7减到0时,使P1.0变为高电平。5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形
22、方波,试编程。解:(1)计算计数初值设计数初值为X,则(256-X) 1uS =40 uS解得X=216D=D8H所以,TH0=D8H,TL0=D8H(2)TMOD、IE、IP的确定(3)查询方式编程、中断方式编程5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u三、方式2 8位重装计数初值例3:有晶体振荡频率为12MHz的单片机,使用定时器0以方式2从P1.0输出周期占空比为1:10的矩形方波,试编程。解:(2)TMOD、IE、IP的确定TMOD: XXXX , 0010 即02HIE:查询方式:00H; (中断方式:1XX0,0010 即82H)(IP:00H)例例3:有晶体
23、振荡频率为:有晶体振荡频率为12MHz的单片机,使用定时器的单片机,使用定时器0以方式以方式2从从P1.0输出周期占空比为输出周期占空比为1:10的矩形方波,试的矩形方波,试编程编程。u溢出处理:初始化T/C、R7TF0=1?N清TF0位溢出处理启动T/C重送TH0、TL0YP1.0=1?NP1.0=0R7=09HYR7-1=0?YNP1.0=例例3:有晶体振荡频率为:有晶体振荡频率为12MHz的单片机,使用定时器的单片机,使用定时器0以方式以方式2从从P1.0输出周期占空比为输出周期占空比为1:10的矩形方波,试的矩形方波,试编程编程。u(3)查询方式编程 MOV R7,#09H MOV T
24、MOD,#02H MOV TH1,#0CEH MOV TL1,#0CEH MOV IE,#00H MOV IP,#00H SETB TR1LOOP:JBC TF1,LOOP1 AJMP LOOPu溢出处理:LOOP1:JB P1.0,LOOP2 DJNZ R7,LOOP3 MOV R7,#09H SETB P1.0LOOP3: AJMP LOOP CLR P1.0 AJMP LOOPu四、方式3特点:T0:被拆分成两个独立的8位计数器TH0、TL0,TL0能作计数器用也能作定时器用,TH0只能作定时器用,TH0占用了T1的溢出标志TF1和启动控制位TR1。T1:当T0工作于方式3时,T1可工作
25、于方式0、1、2,用作波特率发生器用。5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u五、定时器/计数器的应用例1:用51定时器/计数器0工作于方式1产生时钟计时,每秒到给内部RAM的SEC地址加1,每60秒到给内部RAM的MIN地址加1,并使SEC清0。fosc=6MHz解:(1)计算计数初值(2)TMOD、IE、IP的确定(3)查询方式编程、中断方式编程5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u五、定时器/计数器的应用例1:用51定时器/计数器0工作于方式1产生时钟计时,每秒到给内部RAM的SEC地址加1,每60秒到给内部RAM的MIN地址加1,并使S
26、EC清0。fosc=6MHz思路:设T0工作于方式1定时100mS,每定时时间到R7减1(R7的初值为10),当R7=0时即1秒到(1)计算计数初值计数初值为X,则(65536-X) 2uS = 100mS解得X=15536D=3CB0H所以,TH0=3CH,TL0=B0H5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式u五、定时器/计数器的应用例1:用51定时器/计数器0工作于方式1产生时钟计时,每秒到给内部RAM的SEC地址加1,每60秒到给内部RAM的MIN地址加1,并使SEC清0。fosc=6MHz解:(2)TMOD、IE、IP的确定TMOD:XXXX,0001 即01H
27、IE:中断方式:1XX0,0010 即82HIP:00H5.3 MCS-51定时器定时器/计数器工作方式计数器工作方式程序流程:程序流程:u主程序流程u中断服务流程初始化T/C初始化R7初始化SEC、MIN启动T/C(其它处理),并等待中断重送TH0、TL0中断返回R7-10?(SEC)=(SEC)+1(SEC)=60?(SEC)=0(MIN)=(MIN)+1 YYNNu主程序 ORG 0000H AJMP STR ORG 000BH AJMP T0P ORG 0030HSTR: MOV R7,#10 MOV SEC,#00H MOV MIN,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV IE,#82H MOV IP,#00H SETB TR0 SJMP $u中断服务流程T0P: MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,T0P0 INC SEC CJNE SEC,#60,T0P0 MOV SEC,#00H INC MINT0P0: RETI程序:程序:51 结束语结束语