项目三定时计数器和中断系统应用.ppt

上传人:sccc 文档编号:5770779 上传时间:2023-08-18 格式:PPT 页数:95 大小:1.36MB
返回 下载 相关 举报
项目三定时计数器和中断系统应用.ppt_第1页
第1页 / 共95页
项目三定时计数器和中断系统应用.ppt_第2页
第2页 / 共95页
项目三定时计数器和中断系统应用.ppt_第3页
第3页 / 共95页
项目三定时计数器和中断系统应用.ppt_第4页
第4页 / 共95页
项目三定时计数器和中断系统应用.ppt_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《项目三定时计数器和中断系统应用.ppt》由会员分享,可在线阅读,更多相关《项目三定时计数器和中断系统应用.ppt(95页珍藏版)》请在三一办公上搜索。

1、项目三、定时计数器和中断系统应用,项目三、定时/计数器和中断系统应用-任务1.秒脉冲发生器,能力目标1.能正确运用定时/计数器产生秒信号2.秒脉冲发生器程序的编写3.学会中断控制系统的应用4.秒脉冲发生器程序的仿真调试方法学习内容1.掌握定时/计数器的组成及功能2.掌握单片机内部结构资源:TH0、TL0、TH1、TL1、TMOD、TCON3.掌握中断控制系统的概念及定时功能4.理解预置数的用法和溢出的概念,一一、任务要求在项目二的任务2中曾经采用单纯的软件来实现延时或定时很耗费单片机的资源,采用可编程定时/计数器,可以解决上述问题。用可编程定时/计数器设计一个秒脉冲发生器,通过P1.0端口输出

2、驱动二极管每隔1s亮一次来显示秒脉冲发生器效果。定时1s用定时器中断来实现。二、任务分析首先得用可编程定时/计数器设计一个0.5s脉冲发生器,每隔0.5s将P1.0端口取反,即可在P1.0端口输出1Hz方波,P1.0硬件接法可参考项目二中任务2的接法。,三、学习知识(一)定时/计数器的结构 1、定时/计数器的结构(1)定时/计数器的结构51子系列单片机内有两个十六位加1定时/计数器 T0 T1,2、定时/计数器功能(1)计数功能 对外部输入脉冲计数。定时/计数器0计数信号由芯片的T0(P3.4)端引入。定时/计数器1计数信号由芯片的T0(P3.5)端引入。外部输入脉冲频率不能高于单片机晶体振荡

3、频率的1/24,单片机机器周期变化的频率为单片机晶体振荡频率的1/12,因为单片机在相邻两个机器周期中采样到端口上有负跳变时,才计作输入一个脉冲。,(2)定时功能对内部机器周期脉冲计数。定时时间=计数脉冲数机器周期时间由于机器周期时间取决于单片机晶振,(二)中断概念与定时中断 1、中断定义,单片机主要用于实时控制,当对控制对象进行正常控制时,如果外部突然有特殊情况发生,这个向CPU发出请求的过程叫中断请求,则CPU必须立即暂停原来正常的控制程序,并转向执行应急处理的服务程序,这个转去处理应急任务的过程叫中断响应,处理应急的过程叫中断服务,处理完毕,再恢复到原来正常控制程序的暂停处继续执行,这个

4、返回过程叫中断返回,这样的过程称为中断系统。,表3-1日常生活中的中断与单片机中断比较,2、中断服务子程序返回指令中断响应是单片机响应随机的突发要求,进行相应处理,等应急处理的服务程序完毕,要进行中断返回,为区别子程序返回,中断服务子程序返回指令用“RETI”3、中断源能够引发CPU中断的事件源称为中断源。MCS-51系列单片机有定时中断(定时/计数器0和定时/计数器1)、外中断(外中断0和外中断1)和串行中断3类。,4、定时中断 当它们计数到预定的次数或预定的时间时,通过单片机内部硬件电路将定时中断源的中断请求标志置于“1”,向CPU提出中断请求,让CPU及时作出处理。(三)定时/计数器控制

5、 1、工作方式控制寄存器TMOD(89H)特殊功能寄存器TMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1,,GATE 门控位。GATE=0 启动不受/INT0或/INT1的控制;GATE=1 启动受/INT0 或/INT1 的控制。C/T 外部计数器/定时器方式选择位 C/T=0 定时方式;C/T=1 计数方式。M1M0 工作模式选择位(编程可决定四种工作方式)。,TMOD工作方式控制位:,2、定时控制寄存器TCON(88H)TCON的作用是控制定时器的启、停,标志定时器的溢出和中断情况,定时器控制字TCON格式,TR0 定时/计数器1运行控制位。软件置位。TR1

6、定时/计数器1运行控制位。(用法与TR0类似),3、定时器/计数器的4种工作方式(1)方式0计数寄存器TLi 低5位+THi8位(T1、T0的等效逻辑结构),(2)工作方式1,与方式0相似。与方式0的区别:计数位数不同。计数 寄 存 器:THi(高8位)+TLi(低8位),(3)方式2与方式0、1的区别:1)计数位数不同;2)初值自动重装。,(4)方式3T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数器TL0和TH0。TL0使用C/T、GATE、TR0、/INT0、TF0定时/计数,TH0使用TR1、TF1 因此,只能用于定时,(a)TL0作8位定时/计数器,(b)

7、TH0作8位定时器,TR1,4、中断允许控制寄存器IE,表3-3 中断允许控制寄存器IE,(1)EA(IE.7):总允许控制位,若EA=0,禁止AT89C51所有中断源的中断请求;若EA=1,则总控制被开放,但每个中断源是允许还是被禁止CPU响应,还受控于中断源的各自中断允许控制位的状态。,(2)ET2(IE.5):定时器T2溢出中断允许控制位,位地址是ADH。(3)ES(IE.4):串行口中断允许控制位,位地址是ACH。(4)ET1(IE.3):定时器T1的溢出中断允许控制位,位地址为ABH。(5)EX1(IE.2):外部中断 的中断请求允许控制位,位地址是AAH。(6)ET0(IE.1):

8、定时器T0的溢出中断允许控制位,位地址是A9H。,(7)EX0(IE.0):外部中断 的中断请求允许控制位,位地址是A8H。以上各位置为“1”时,允许中断;清为“0”时,禁止中断。注意要设定某中断源允许中断时,除将对应的中断源允许控制位置成“1”外,还有将总控制位EA置成为“1”。,5、相关指令,(1)位指令的应用 SETB EA;开启总中断允许 SETB ET0;开启定时器0中断允许 SETB TR0;启动定时/计数器0 CLR EA;禁止总中断允许 CLR ET0;禁止定时器0中断允许 CLR TR0;禁止定时/计数器0,(2)位控制转移指令 JBC bit,rel;若(bit)=1时,则

9、转移到标号对应的地址,并且同时bit0。例如:JBC TF0,NEXT;若定时器0数据溢出时,即TF0=1时,则转移到标号NEXT对应的地址,并且同时清定时溢出标志TF00,这样下次就可以重新定时/计数。,(3)比较转移指令CJNE A,#data,rel;(A)data,PC+3+rel跳转到目标地址,(A)=data,PC+3顺序向下执行。CJNE A,direct,rel;CJNE Rn,#data,rel;CJNE Ri,#data,rel;,CJNE系列指令可产生三分支程序:,(5)判CY转移指令JC rel;若(CY)=1,(PC)(PC)+2+rel 若(CY)=0,(PC)(P

10、C)+2顺序JNC rel;若(CY)=0,(PC)(PC)+2+rel 若(CY)=1,(PC)(PC)+2顺序上述操作不影响操作位。,例:编程通过P1.0线连续输出256个宽度为5个机器周期长的方波。解:MOV R0,#00H;置R0的值为256LOOP:CLR P1.0;P1.0=0 CPL P1.0;P1.0=1 NOP NOP DJNZ R0,LOOP例:用软件实现如图3-8所示P1.0P1.3间的逻辑运算。解:MOV C,P1.1 ORL C,P1.2 ANL C,P1.0 MOV P1.3,C 图3-8 逻辑运算图,(四)中断入口地址,表3-4 中断入口地址,(五)定时器/计数器

11、的设计步骤 初始化的内容如下:1、设置TMOD寄存器参数 2、计算计数初值计算出计数初始值并写入TH0、TL0、TH1、TL1中。计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=M-C。其中计数最大值在不同工作方式下的值不同,具体如下:,(1)工作方式0:M=213=8192。(2)工作方式1:M=216=65536。(3)工作方式2:M=28=256。(4)工作方式3:M=28=256。计数初值都是X=M-C(十六进制数)。定时器模式下对应的定时时间为:T=CT机=(M-X)T机式中,T机为单片机的机器周期(T机为晶振时钟周期的

12、12倍)。将计数所得的X值转换成相应的16进制数,分别放入相应的TH0、TL0或TH1、TL1中。,3、定时中断选择给定时器控制寄存器TCON送命令字,控制定时/计数器的启动和停止。(1)应用定时中断编程时,需要开启相应的定时中断控制位,否则将其设为禁止。(2)若定时/计数器仅使用一次,则要在服务程序中把工作启动/停止控制位TR清为“0”,关闭定时/计数器,若连续使用时,则不要改变TR位。,(3)当不使用定时中断时,即用查询溢出标志编程,无论定时/计数仅用一次还是连续使用,每次都要用指令将对应的溢出标志位清“0”。而采用中断编程时,一旦中断响应,由硬件自动将对应的溢出标志撤销。,例:产生周期为

13、1ms的定时方波选择T1方式0用于定时,在P1.1输出周期为1ms的方波,晶振fosc=6MHZ。根据题意,只要使P1.1每隔500us取反一次即可得到1ms方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可,则M1M0=00;因是定时器方式,所以C/=0;在此用软件启动T1,所以GATE=0.T0不用,方式字可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=00H。系统复位后TMOD为0,可不对TMOD重新清“0”。,下面计算500us定时T1初始值:机器周期T=12/fosc=12/6MHZ=2us设初始值为X,则(213-X)210-6s=50010-6sX=7

14、942=111110000110B=1F06H因为在作13位计数器同时,TL1的高3位未用,应填写0,TH1占高8位,所以X的实际填写值应为X=11111000000110B=F806H,结果TH1=F8H,TL1=06H。,四、任务实施 1、硬件设计硬件设计可采用项目一中任务2的硬件原理图。2、软件设计(1)要二极管产生每一秒亮一次,则P1.0得每0.5s取反一次,所以定时器的定时时间为0.5s。(2)设定工作方式寄存器TMOD。表3-5 工作方式寄存器TMOD设置,(3)计算计数初值。选用晶振为6MHZ,则机器周期T=12/fosc=12/6MHZ=2us,设初始值为X,则定时时间为(21

15、6-X)210-6s,当X=0,在晶振为6MHZ的情况下,采用定时/计数器1工作方式1下,最长的定时时间为216210-6s=131ms,而125 ms4=500 ms=0.5s,可选定时0.5s的流程图如图3-9所示,对定时器125 ms中断4次,就是0.5s。(216-X)210-6s=125 ms,X=3036=(BDC)16,所以TH1=0BH,TL1=0DCH,图3-9 定时0.5s示意图,图3-10 主程序流程图,图3-11 定时中断服务程序流程图,(5)程序设计,3、软件调试与仿真 用PROTEUS进行仿真调试当来一个外中断,指示灯发生变化。,五、总结与提高1、中断优点和功能:2

16、、程序的结构:3、定时器/计数器的运用:,项目三、定时/计数器和中断系统应用-任务2.脉冲计数测量,能力目标1.正确运用定时/计数器进行计数2.把握主程序、子程序、中断程序之间的关系,各入口和出口参数的协调3.硬件资源、软件资源的合理分配4.脉冲计数测量电路仿真调试学习内容1.定时/计数器计数功能的运用2.单片机脉冲计数测量控制系统的组成3.相关指令的学习4.掌握外部中断系统的应用,一、任务要求 由MCS-51单片机组成最小应用系统,对外部脉冲信号进行计数测量,通过8个发光二极管(LED)显示外部脉冲的个数。二、任务分析1构建一个单片机的最小系统。2采用MCS-51单片机外部中断0来实现对外部

17、中断的测量,即每输入一个外部脉冲,引起外部中断一次。3单片机将测量的脉冲个数由P1端口输出,驱动LED发光二极管显示。,三、学习知识(一)外部中断 1、信号引入脚外中断0:(中断请求信号从P3.2端口引入)外中断1:(中断请求信号从P3.3口引入)2、信号方式和中断请求标志(1)信号方式 电平方式低电平有效脉冲方式负跳变有效(2)定时器控制寄存器与中断请求标志,IE0和IE1外中断0和1的中断请求标志位IE0(IE1)=1时,表示有外部中断请求,IE0(IE1)=0时,表示无请求。IT0和IT1外中断0和1请求信号方式控制位 IT0(IT1)=1时,即后沿负跳变有效IT0(IT1)=0时,低电

18、平有效(三)中断优先级 1、中断优先级的概念 当多个中断源同时向CPU发出中断请求时,CPU应按情况的紧急程度,按优先次序来处理,最紧急的中断源请求优先处理,这就是中断优先级控。,2、中断优先级控制寄存器(IP),(1)PS:串行中断优先级设定位。(2)PT1和PT0:定时中断1和0优先级设定位。(3)PX1和PX0:外部中断1和0优先级设定位。各位置为“1”时,对应中断源设定成高优先级;清为“0”时,对应中断源设定成低优先级。,3、中断优先级控制规则(1)高优先级中断源的请求可以打断低优先中断源的中断服务,形成中断嵌套,但低优先级中断源请求不能打断高优先级的中断服务。(2)当一个中断源的请求

19、已被响应,与其同优先级的中断源的请求不能打断它的中断服务。(3)同级优先级中断源的中断请求被响应的优先次序:外中断0定时中断0外中断1定时中断1串行中断,4、中断处理过程(1)中断响应(2)中断处理 1)完成当前指令的操作。2)保护断点地址,将PC内容压入堆栈。3)屏蔽同级的中断请求。4)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断程序入口地址。5)执行中断服务程序。6)当执行到RETI指令时即结束中断,从堆栈 中自动弹出断点地址到PC寄存器,返回到先 前断点处继续执行原程序。,(3)中断返回(4)中断请求的撤消 CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把

20、它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。硬件复位:一般的中断请求都可以通过硬件清 除,自动撤除,无需采用其他措施。软件复位:CLR TI;CLR RI,(5)中断响应时间中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间。四、任务实施1、硬件设计,2、软件设计,图3-20 主程序流程图 图3-21 中断服务流程图,4、程序设计,5、仿真调试,五、总结与提高1、有关中断方式:中断信号的形式是低电平还是沿触发 2、有关中断优先级:根据轻重缓急来定义好各个中断的优先级,项目三、定时/计数器和中断系统应用-任务3.转速计数器,能力目标1能理解

21、单片机的中断原理及其中断过程,掌握外中断的程序设计步骤。2简单了解霍尔传感器的原理和应用,会使用霍尔传感器进行转速测量电路设计。3掌握数码管显示的方法。学习内容1学习霍尔传感器的简单工作原理,学习用外中断边沿方式实现转速测量的程序设计与仿真;2伪指令的使用方法。3.学习数码管的类型,用数码管显示数据的方法。,一、任务要求 利用AT89C51单片机来制作一个转速计数器。在AT89C51单片机的P3.2管脚通过开关接一个霍尔传感器转速输入信号,用单片机的P1.0P1.7接一个共阳数码管,作为0060计数的个位数显示,用单片机的P2.0P2.7接一个共阳数码管,作为0060计数的十位数显示;当计数到

22、60时,停止计数,按复位键后重复运行。,二、任务分析1、要了解霍尔传感器输出的信号形式,以方便在仿真时选用合适的信号进行仿真。2、由于对转速的测量要具有实时性,所以考虑在P3.2口采用外中断0方式输入,这样在主程序中要考虑总中断EA、外中断0EX0的打开,以及对外中断0的检测是下降沿方式还是低电平方式。3、计数值与数码管之间的对应关系可以采用查表的方式来对应。所谓转速是指单位时间1S内转过的圈数,所以真正的转速计数器必须加1S的时间背景来测定转速的计数值。,三、学习知识(一)了解霍尔传感器测速的简单原理,(二)数码管的有关知识1、数码管的种类,a)共阴极;b)共阳极;c)管脚配置,2、数码管的

23、段码,(1)静态显示(2)动态显示,(三)相关指令学习 1、二十进制调整指令DA A 该指令是对累加器参与BCD码运算所获得的8位结果(在累加器中)进行十进制修正,使得累加器中的内容调整为BCD码。,DA A进行二十进制修正的具体过程如下:当A的低4位大于9或AC=1,则低4位加6。当A的高4位大于9或CY=1,则高4位加6。2、数据交换指令字节交换:指令:XCH A,Rn XCH A,direct XCH A,Ri例:(A)=03H,(40H)=30H XCH A,40H执行后(A)=30H,(40H)=03H,半字节交换:指令:XCHD A,Ri例:(A)=80H,(R1)=32H,(32

24、H)=77H执行XCHD A,R1后(A)=87H,(32H)=70H累加器自身半字节交换:完成累加器A中高4位和低4位的交换。SWAP A例:(A)=84H执行SWAP A(A)=48H,(四)伪指令的学习伪指令告诉汇编程序如何汇编源程序的指令。伪指令既不控制机器的操作,也不能被汇编成机器码,故称为伪指令。1、起始地址伪指令 ORG addr16 用于规定目标程序段或数据块的起始地址,设置在程序开始处。2、汇编结束伪指令END 告诉汇编程序,对源程序的汇编到此结束,一个程序出现一次,在末尾。,3、赋值伪指令 EQU告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。格式:标号名称 EQU 数

25、值或汇编符号 例:COUNT EQU 34H ADDE EQU 18H MOV A,#COUNT;#34HA ADD A,ADDE;(A)+(18H)(A)这里,COUNT被赋值为34H,ADDE被赋值为18H,4、定义字节伪指令 DB告诉汇编程序从指定的地址单元开始,定义若干字节存储单元并赋初值。格式:标号:DB 字节数据或字节数据表例:ORG 2000H TAB1:DB 10H,23H TAB2:DB“123”汇编后(2000H)=10H(2001H)=23H(2002H)=31H(2003H)=32H(2004H)=33H,5、定义字伪指令 DW从指定地址开始,定义若干个16位数据,高8

26、位存入低地址,低8位存入高地址。例:ORG 1000HTAB:DW 1200H,4567H汇编后(1000H)=12H(1001H)=00H(1002H)=45H(1003H)=67H,6、数值地址赋值伪指令 DATA将表达式指定的数据地址赋予规定的字符名称格式:字符名称 DATA 表达式 7、定义空间伪指令 DS从指定地址开始,保留由表达式指定的若干字节空间作为备用空间。格式:标号:DS 表达式,例:ORG 1000H DS 0AH DB 71H,11H,11H;从100BH开始存放71H,11H,11H;注:DB、DW、DS只能用于程序存储器;而不能用于数据存储器。8、位地址赋值伪指令 B

27、IT将位地址赋予规定的字符名称格式:字符名称 BIT 位地址 例:X1 BIT P1.2相当于X1 EQU 92H,四、任务实施1、硬件设计其中个位和十位的两个数码管采用的共阳极接法,公共端均接电源正端。其中P3.2(外中断0)接proteus中的仿真方波脉冲信号,各项参数均可调整。,2、软件设计其中03H为外中断0的入口地址,TABLE中放的是十进制数09的显示段码。,3、仿真调试,五、总结与提高1、单片机技术的学习涉及到各个学科:2、伪指令的作用:3、数码管的选用:,项目三、定时/计数器和中断系统应用-任务4.中断优先级设计,能力目标1.能进行中断优先级的设计2.能运用堆栈指令进行现场的数

28、据保护3.能学会程序编写并用Keil C进行调试4.能清楚各个中断入口的地址学习内容1.中断优先级的概念和设置方法2.中断响应及处理过程3.堆栈指令的学习,一、任务要求单片机主程序控制P0口数码管显示0F,外中断0发生时P2口显示0F,外中断1发生时P1口显示0F;外中断1为高优先级,外中断0为低优先级。每个数字显示1S钟。二、任务分析 外中断1的优先级应该最高,外中断0的优先级属于低的,但仍优于主程序,所以设置时可将中断1的优先级对应控制位设为1,外中断0的优先级对应位设为0,除此外,运行在主程序、外中断0、外中断1的程序内容都一样,只是它们的入口地址不同而已。,三、学习知识堆栈操作指令(2

29、条)1、进栈指令 PUSH direct;此时的direct应指数据来源地址。(SP+1)(SP),(direct)(SP)2、出栈指令 POP direct;此时的direct应指数据目标地址即去向。(SP)(direct),(SP-1)(SP)原则栈中的数据按“先进后出,后进先出”。数据进栈时,堆栈指针加1,出栈时指针减1。可用于“保护现场,恢复现场”。,例:(SP)=07H,(30H)=50H 执行PUSH 30H后 堆栈过程见图。,结果:(SP)=08H(08H)=50H,例:(SP)=15H,(15H)=70H 执行POP 20H后 出栈过程见图。结果:(20H)=70H(SP)=14H,四、任务实施1、硬件设计,2、软件设计,3、仿真调试,五、总结与提高1、中断优先级使用的场合:2、中断程序和主程序等资源的合理利用:3、数码管段码显示的方法:,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号