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

上传人:本田雅阁 文档编号:3378734 上传时间:2019-08-20 格式: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、TCON 3.掌握中断控制系统的概念及定时功能 4.理解预置数的用法和溢出的概念,一一、任务要求 在项目二的任务2中曾经采用单纯的软件来实现延时或定时很耗费单片机的资源,采用可编程定时/计数器,可以解决上述问题。 用可编程定时/计数器设计一个秒脉冲发生

2、器,通过P1.0端口输出驱动二极管每隔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.

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

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

5、“1”,向CPU提出中断请求,让CPU及时作出处理。 (三)定时/计数器控制 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的作用是控制

6、定时器的启、停,标志定时器的溢出和中断情况,定时器控制字TCON格式,TR0 定时 / 计数器1运行控制位。软件置位。 TR1 定时 / 计数器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)方式3 T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数器TL0和TH

7、0。 TL0使用C/T、GATE、TR0、/INT0、TF0定时/计数, TH0使用TR1、TF1 因此,只能用于定时,(a)TL0作8位定时/计数器,(b)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)

8、 ET1(IE.3):定时器T1的溢出中断允许控制位,位地址为ABH。 (5)EX1(IE.2):外部中断 的中断请求允许控制位,位地址是AAH。 (6) ET0(IE.1):定时器T0的溢出中断允许控制位,位地址是A9H。,(7)EX0(IE.0):外部中断 的中断请求允许控制位,位地址是A8H。 以上各位置为“1”时,允许中断;清为“0”时,禁止中断。 注意要设定某中断源允许中断时,除将对应的中断源允许控制位置成“1”外,还有将总控制位EA置成为“1”。,5、相关指令,(1)位指令的应用 SETB EA ;开启总中断允许 SETB ET0 ;开启定时器0中断允许 SETB TR0 ;启动定

9、时/计数器0 CLR EA ;禁止总中断允许 CLR ET0 ;禁止定时器0中断允许 CLR TR0 ;禁止定时/计数器0,(2)位控制转移指令 JBC bit,rel; 若(bit)=1时,则转移到标号对应的地址,并且同时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

10、Rn,#data,rel; CJNE Ri,#data,rel;,CJNE系列指令可产生三分支程序:,(5)判CY转移指令 JC rel ;若(CY)=1,(PC)(PC)+2+rel 若(CY)=0,(PC)(PC)+2顺序 JNC rel ;若(CY)=0,(PC)(PC)+2+rel 若(CY)=1,(PC)(PC)+2顺序 上述操作不影响操作位。,例:编程通过P1.0线连续输出256个宽度为5个机器周期长的方波。 解: MOV R0,#00H;置R0的值为256 LOOP:CLR P1.0 ; P1.0=0 CPL P1.0 ; P1.0=1 NOP NOP DJNZ R0, LOOP

11、 例:用软件实现如图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 中断入口地址,(五)定时器/计数器的设计步骤 初始化的内容如下: 1、设置TMOD寄存器参数 2、计算计数初值 计算出计数初始值并写入TH0、TL0、TH1、TL1中。 计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=M-C。其中计数最大值在不同工作方式下的值不同,具体如下:,(1)工作方式0:M=213=8192。 (2)工作

12、方式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倍)。 将计数所得的X值转换成相应的16进制数,分别放入相应的TH0、TL0或TH1、TL1中。,3、定时中断选择 给定时器控制寄存器TCON送命令字,控制定时/计数器的启动和停止。 (1)应用定时中断编程时,需要开启相应的定时中断控制位,否则将其设为禁止。 (2)若定时/计数器仅使用一次,则要在服务程序中把工作启动/停止控制位TR清

13、为“0”,关闭定时/计数器,若连续使用时,则不要改变TR位。,(3)当不使用定时中断时,即用查询溢出标志编程, 无论定时/计数仅用一次还是连续使用,每次都要用指令将对应的溢出标志位清“0”。而采用中断编程时,一旦中断响应,由硬件自动将对应的溢出标志撤销。,例:产生周期为1ms的定时方波 选择T1方式0用于定时,在P1.1输出周期为1ms的方波,晶振fosc=6MHZ。根据题意,只要使P1.1每隔500us取反一次即可得到1ms方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可,则M1M0=00;因是定时器方式,所以C/ =0;在此用软件启动T1,所以GATE=0.T0不用,方式

14、字可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=00H。系统复位后TMOD为0,可不对TMOD重新清“0”。,下面计算500us定时T1初始值: 机器周期T=12/fosc=12/6MHZ=2us 设初始值为X,则(213-X)210-6s=50010-6s X=7942=111110000110B=1F06H 因为在作13位计数器同时,TL1的高3位未用,应填写0,TH1占高8位,所以X的实际填写值应为X=11111000000110B=F806H,结果TH1=F8H,TL1=06H。,四、任务实施 1、硬件设计 硬件设计可采用项目一中任务2的硬件原理图。2、软件设计 (1)要

15、二极管产生每一秒亮一次,则P1.0得每0.5s取反一次,所以定时器的定时时间为0.5s。 (2)设定工作方式寄存器TMOD。 表3-5 工作方式寄存器TMOD设置,(3)计算计数初值。 选用晶振为6MHZ,则机器周期T=12/fosc=12/6MHZ=2us,设初始值为X,则定时时间为(216-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

16、 ,X=3036=(BDC)16,所以TH1=0BH,TL1=0DCH,图3-9 定时0.5s示意图,图3-10 主程序流程图,图3-11 定时中断服务程序流程图,(5)程序设计,3、软件调试与仿真 用PROTEUS进行仿真调试 当来一个外中断,指示灯发生变化。,五、总结与提高 1、中断优点和功能: 2、程序的结构: 3、定时器/计数器的运用:,项目三、定时/计数器和中断系统应用- 任务2.脉冲计数测量,能力目标 1.正确运用定时/计数器进行计数 2.把握主程序、子程序、中断程序之间的关系,各入口和出口参数的协调 3.硬件资源、软件资源的合理分配 4.脉冲计数测量电路仿真调试 学习内容 1.定

17、时/计数器计数功能的运用 2.单片机脉冲计数测量控制系统的组成 3.相关指令的学习 4.掌握外部中断系统的应用,一、任务要求 由MCS-51单片机组成最小应用系统,对外部脉冲信号进行计数测量,通过8个发光二极管(LED)显示外部脉冲的个数。 二、任务分析 1构建一个单片机的最小系统。 2采用MCS-51单片机外部中断0来实现对外部中断的测量,即每输入一个外部脉冲,引起外部中断一次。 3单片机将测量的脉冲个数由P1端口输出,驱动LED发光二极管显示。,三、学习知识 (一)外部中断 1、信号引入脚 外中断0: (中断请求信号从P3.2端口引入) 外中断1: (中断请求信号从P3.3口引入) 2、信

18、号方式和中断请求标志 (1)信号方式 电平方式低电平有效 脉冲方式负跳变有效 (2)定时器控制寄存器与中断请求标志,IE0和IE1外中断0和1的中断请求标志位 IE0(IE1)=1时,表示有外部中断请求, IE0(IE1)=0时,表示无请求。 IT0和IT1外中断0和1请求信号方式控制位 IT0(IT1)=1时,即后沿负跳变有效 IT0(IT1)=0时,低电平有效 (三)中断优先级 1、中断优先级的概念 当多个中断源同时向CPU发出中断请求时,CPU应按情况的紧急程度,按优先次序来处理,最紧急的中断源请求优先处理,这就是中断优先级控。,2、中断优先级控制寄存器(IP),(1)PS:串行中断优先

19、级设定位。 (2)PT1和PT0:定时中断1和0优先级设定位。 (3)PX1和PX0:外部中断1和0优先级设定位。 各位置为“1”时,对应中断源设定成高优先级;清为“0”时,对应中断源设定成低优先级。,3、中断优先级控制规则 (1)高优先级中断源的请求可以打断低优先中断源的中断服务,形成中断嵌套,但低优先级中断源请求不能打断高优先级的中断服务。 (2)当一个中断源的请求已被响应,与其同优先级的中断源的请求不能打断它的中断服务。 (3)同级优先级中断源的中断请求被响应的优先次序: 外中断0定时中断0外中断1定时中断1串行中断,4、中断处理过程 (1)中断响应 (2)中断处理 1)完成当前指令的操

20、作。 2)保护断点地址,将PC内容压入堆栈。 3)屏蔽同级的中断请求。 4)将中断源入口地址(固定的)送入PC寄存器, 自动转入相应中断程序入口地址。 5)执行中断服务程序。 6)当执行到RETI指令时即结束中断,从堆栈 中自动弹出断点地址到PC寄存器,返回到先 前断点处继续执行原程序。,(3)中断返回 (4)中断请求的撤消 CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。 硬件复位:一般的中断请求都可以通过硬件清 除,自动撤除,无需采用其他措施。 软件复位:CLR TI ;CLR RI,(5)中断响应时

21、间 中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间 。 四、任务实施 1、硬件设计,2、软件设计,图3-20 主程序流程图 图3-21 中断服务流程图,4、程序设计,5、仿真调试,五、总结与提高 1、有关中断方式: 中断信号的形式是低电平还是沿触发 2、有关中断优先级: 根据轻重缓急来定义好各个中断的优先级,项目三、定时/计数器和中断系统应用- 任务3.转速计数器,能力目标 1能理解单片机的中断原理及其中断过程,掌握外中断的程序设计步骤。 2简单了解霍尔传感器的原理和应用,会使用霍尔传感器进行转速测量电路设计。 3掌握数码管显示的方法。 学习内容 1学习霍尔传感

22、器的简单工作原理,学习用外中断边沿方式实现转速测量的程序设计与仿真; 2伪指令的使用方法。 3. 学习数码管的类型,用数码管显示数据的方法。,一、任务要求 利用AT89C51单片机来制作一个转速计数器。在AT89C51单片机的P3.2管脚通过开关接一个霍尔传感器转速输入信号,用单片机的P1.0P1.7接一个共阳数码管,作为0060计数的个位数显示,用单片机的P2.0P2.7接一个共阳数码管,作为0060计数的十位数显示;当计数到60时,停止计数,按复位键后重复运行。,二、任务分析 1、要了解霍尔传感器输出的信号形式,以方便在仿真时选用合适的信号进行仿真。 2、 由于对转速的测量要具有实时性,所

23、以考虑在P3.2口采用外中断0方式输入,这样在主程序中要考虑总中断EA、外中断0EX0的打开,以及对外中断0的检测是下降沿方式还是低电平方式。 3、 计数值与数码管之间的对应关系可以采用查表的方式来对应。 所谓转速是指单位时间1S内转过的圈数,所以真正的转速计数器必须加1S的时间背景来测定转速的计数值。,三、学习知识 (一)了解霍尔传感器测速的简单原理,(二)数码管的有关知识 1、数码管的种类,a)共阴极; b)共阳极; c)管脚配置,2、数码管的段码,(1)静态显示 (2)动态显示,(三)相关指令学习 1、二十进制调整指令DA A 该指令是对累加器参与BCD码运算所获得的8位结果(在累加器中

24、)进行十进制修正,使得累加器中的内容调整为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,(32H)=77H 执行XCHD A,R1后 (A)=87H,(32H)=70H 累加器自身半字节交换:完成累加器A中高4位和低4位

25、的交换。 SWAP A 例:(A)=84H 执行SWAP A (A)=48H,(四)伪指令的学习 伪指令告诉汇编程序如何汇编源程序的指令。 伪指令既不控制机器的操作,也不能被汇编成机器码,故称为伪指令。 1、起始地址伪指令 ORG addr16 用于规定目标程序段或数据块的起始地址,设置在程序开始处。 2、汇编结束伪指令END 告诉汇编程序,对源程序的汇编到此结束,一个程序出现一次,在末尾。,3、赋值伪指令 EQU 告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。 格式:标号名称 EQU 数值或汇编符号 例:COUNT EQU 34H ADDE EQU 18H MOV A,#COUNT;#

26、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位存入低地址,低8位存入高地址。 例:ORG 1000H TAB:DW 12

27、00H,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、位地址赋值伪指令 BIT 将位地址赋予规定的字符名称 格式:字符

28、名称 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.能运用堆栈指令进行现场的数据保护 3.能

29、学会程序编写并用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的程序内容都一样,只是它们的入口地址不同而已。,三、学习知识 堆栈操作指令

30、(2条) 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备18001539号-1