单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章 中断和定时计数器

上传人:E**** 文档编号:89492895 上传时间:2019-05-25 格式:PPT 页数:22 大小:728KB
返回 下载 相关 举报
单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章  中断和定时计数器_第1页
第1页 / 共22页
单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章  中断和定时计数器_第2页
第2页 / 共22页
单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章  中断和定时计数器_第3页
第3页 / 共22页
单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章  中断和定时计数器_第4页
第4页 / 共22页
单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章  中断和定时计数器_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章 中断和定时计数器》由会员分享,可在线阅读,更多相关《单片机应用项目式教程——基于Keil和Proteus 教学课件 ppt 作者 张志良 第3章 中断和定时计数器(22页珍藏版)》请在金锄头文库上搜索。

1、第3章 中断和定时/计数器,基于Keil和Proteus,配套 50例全部取自于本书项目和练习题,免费下载,机械工业出版社同名教材配套电子教案,张志良主编 Email:,单片机应用 项目式教程,第3章 目录,C51编程基础知识准备 3.1 80C51中断系统 3.2 80C51定时/计数器 项目8 输出脉冲波 任务8.1 编制输出脉冲波程序 任务8.2 输出脉冲波Keil编译调试 任务8.3 输出脉冲波Proteus虚拟仿真 项目9 播放生日快乐歌 任务9.1 编制播放生日快乐歌程序 任务9.2 播放生日快乐歌Keil编译调试 任务9.3 播放生日快乐歌Proteus虚拟仿真,中断系统和定时/

2、计数器是单片机片内非常重要的功能部件。 在早期的计算机中,计算机与外设交换信息时, 慢速工作的外设与快速工作的CPU之间形成很大的矛盾。 例如计算机与打印机相连接,CPU处理和传送字符的速度是微秒级的, 而打印机打印字符的速度比CPU慢得多, CPU不得不花费大量时间等待和查询打印机打印字符, 中断就是为了解决这类问题而提出来的。 可以这样说,只有有了中断系统后, 计算机才能比原来无中断系统的早期计算机演绎出多姿多彩的功能。,C51编程基础知识准备,3.1 80C51中断系统,CPU暂时中止其正在执行的程序, 转去执行请求中断的那个外设或事件的服务程序, 等处理完毕后再返回执行原来中止的程序,

3、叫做中断。, 中断源,共有5个,其中2个为外部中断源,3个为内部中断源:, INT0 外部中断0,中断请求信号由P3.2输入。 INT1 外部中断1,中断请求信号由P3.3输入。 T0 定时/计数器0溢出中断,对外部脉冲计数由P3.4输入。 T1 定时/计数器1溢出中断,对外部脉冲计数由P3.5输入。 串行中断(包括串行接收中断RI和串行发送中断TI)。, 中断控制特殊功能寄存器, 中断请求控制寄存器,80C51涉及中断请求的控制寄存器有2个。 定时和外中断用TCON,串行中断用SCON。,1)TCON, TF0 / TF1 T0 / T1溢出中断请求标志。 IE0 / IE1 外中断INT0

4、 / INT1中断请求标志。 IT0 / IT1 外中断INT0 / INT1触发方式控制位。 IT0 / IT1 =1,边沿触发方式; IT0 / IT1=0,电平触发方式。,2)SCON。, TI 串行口发送中断请求标志 RI 串行口接收中断请求标志,CPU在响应串行发送、接收中断后, TI、RI不能自动清0,必须由用户用指令清0。, 中断允许控制寄存器IE, EA CPU中断允许控制位。 EA=1,CPU开中;EA=0,CPU关中,且屏蔽所有5个中断源。 EX0 外中断INT0中断允许控制位。 EX0=1,INT0开中;EX0=0,INT0关中。 EX1 外中断INT1中断允许控制位。

5、EX1=1,INT1开中;EX1=0,INT1关中。 ET0 定时/计数器T0中断允许控制位。 ET0=1,T0开中;ET0=0,T0关中。 ET1 定时/计数器T1中断允许控制位。 ET1=1,T1开中;ET1=0,T1关中。 ES 串行口中断(包括串行发、串行收)允许控制位。 ES=1,串行口开中;ES=0,串行口关中。,80C51对中断实行两级控制, 总控制位是EA,每一中断源还有各自的控制位对该中断源开中或关中。 因此,首先要EA=1,其次还要自身的控制位置“1”。, 中断优先级控制寄存器IP, PX0 INT0中断优先级控制位。 PX0=1,INT0为高优先级;PX0=0,INT0为

6、低优先级; PX1 INT1中断优先级控制位。控制方法同上。 PT0 T0中断优先级控制位。控制方法同上。 PT1 T1中断优先级控制位。控制方法同上。 PS 串行口中断优先级控制位。控制方法同上。,80C51中断优先控制的基本原则: 高优先级中断可以中断正在响应的低优先级中断,反之则不能。 同优先级中断不能互相中断。 同一中断优先级中,若有多个中断源同时请求中断 CPU将先响应优先权高的中断,后响应优先权低的中断。,中断优先权:从高到低的顺序为:INT0、T0、INT1、T1、串行口。, 中断处理过程, 中断请求, 中断响应,中断入口地址如下:,INT0: 0003H T0: 000BH I

7、NT1: 0013H T1: 001BH 串行口:0023H, 执行中断服务程序, 中断返回,上述中断响应过程大部分操作是CPU自动完成的。 用户只需要了解来龙去脉, 用户需要做的事情是编制中断服务程序。 并在此之前完成中断初始化: 定义外中断触发方式, 定义中断优先级, 开放中断等。, C51中断应用,void 函数名( ) interrupt n using m 中断函数体语句;,C51中断以子函数的形式出现,其格式如下:, 中断函数无返回值,也不带参数。 因此,返回值类型为void,函数名后括号内无形式参数表。 interrupt是C51关键字,表示该函数是一个中断服务子函数; n=04

8、(常正整数),依次为:INT0、T0、INT1、T1、串行口。, using是C51关键字,主要用于中断函数内选择工作寄存器组m, m=03(常正整数),对应工作寄存器区编号。 using m允许缺省,缺省时,不进行工作寄存器组切换, 但所有在中断函数内用到的工作寄存器将被压栈保护。, 中断函数不能被非中断调用。只能由系统硬件产生自然调用。, 允许在中断函数中调用其他子函数,但工作寄存器组必须相同。,需要说明的是,由于中断函数无返回值,也不带参数。 因此,若需要在中断函数外用到中断函数中的某个变量值, 则必须将其设置全局变量。 否则,中断函数运行结束后,中断函数内的局部变量被释放,无法保全。,

9、3.2 80C51定时/计数器,定时/计数器是单片机系统一个重要的部件, 其工作方式灵活、编程简单、使用方便, 可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。 此外,定时/计数器还可作为串行通信中波特率发生器, 定时/计数器概述,80C51单片机有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1。 对外部事件脉冲(下降沿)计数,是计数器; 对片内机周脉冲计数,是定时器。,计数器由两个8位计数器组成: T0 是TH0和TL0,T1是TH1和TL1,合起来是16位计数器。,定时时间和计数值可以编程设定, 其方法是在计数器内设置一个初值,然后加1计满后溢出。 调整计数

10、器初值,可调整从初值到计满溢出的数值, 即调整了定时时间和计数值。,定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入, T0的外部事件脉冲应从P3.4引脚输入, T1的外部事件脉冲应从P3.5引脚输入,从其他引脚输入无效。, 定时/计数器的控制寄存器, 定时/计数器控制寄存器TCON,TR0 / TR1 定时/计数器T0 / T1运行控制位。 TR0 / TR1 =1, T0 / T1运行; TR0 / TR1 =0, T0 / T1停。, 定时/计数器工作方式控制寄存器TMOD,1)M1M0 工作方式选择位。,3)GATE 门控位。, 定时/计数器工作方式,80C51定时/计数器有

11、四种工作方式,由TMOD中M1M0的状态确定, 工作方式0, 工作方式1,最大计数值为216 = 65536, 工作方式2,仅用TL0计数,最大计数值为28 =256,计满溢出后,原来装在TH0中的初值装入TL0。 优点是定时初值可自动恢复,短处是计数范围小。, 工作方式3,仅适用于T0,T1无方式3。,T0方式3情况下的T1方式2,常用作波特率发生器。, 定时/计数器的应用, 计算定时/计数初值,N与工作方式有关。方式0时,N=13;方式1时,N=16;方式2、方式3时,N=8。 机周时间与主振频率有关,机器周期是时钟周期的12倍,机周时间=12/fOSC。, 应用步骤,1)合理选择定时/计

12、数器工作方式,2)计算定时/计数器定时初值, 编制应用程序, 定时/计数器的初始化: 定义TMOD,写入定时初值,设置中断系统,启动定时/计数器运行等。, 正确编制定时/计数器中断服务程序,注意是否需要重装定时初值。, 若将定时/计数器用于计数方式,则外部事件脉冲必须 从P3.4(T0)或P3.5(T1)引脚输入。 且外部脉冲的最高频率不能超过时钟频率的1/24。,项目8 输出脉冲波,要求在80C51 P1.0引脚输出周期为400s的脉冲方波(fOSC=12MHz)。,任务8.1 编制输出脉冲波程序, 工作方式1, 计算定时初值, 设置TMOD,T1初值=216200s/1s=65536200

13、=65336=FF38H, 编制程序, 工作方式2, 设置TMOD,令工作方式选择位M1M0=10,因此,TMOD=20H。 计算定时初值:T1初值=28 -200s/1s=38H。因此,TH1=38H,TL1=38H。,比较两种程序,方式2的优点是不需重装定时初值。,任务8.2 输出脉冲波Keil编译调试,编译链接并进入调试状态后,打开P1对话窗口, 全速运行,可看到P1对话窗口中的P1.0端口状态不断跳变, 从“”(高电平)到“空白”(低电平), 再从“空白”到“”,表明P1.0输出脉冲方波。 适当加大定时脉冲宽度,可更清晰观察。,任务8.3 输出脉冲波Proteus虚拟仿真,可打开本书配

14、套的项目8,直接操作。,项目9 播放生日快乐歌,按序控制输出方波频率和节拍长短时间,就能播放生日快乐歌。,用T0控制音符频率。例如,生日快乐歌第1个音符“5”,定时初值TH0=236, TL0=2;第3个音符“6”,定时初值TH0=238,TL0=8。,用T1控制音符节拍。例如,生日快乐歌第1个音符“5”,1/8拍, 取450ms=200ms;第3个音符“6”,1/4拍,取850ms=400ms ,,任务9.1 编制播放生日快乐歌程序,任务9.2 播放生日快乐歌Keil编译调试,本例Keil调试意义不大,编译链接,自动生成Hex文件。,任务9.3 播放生日快乐歌Proteus虚拟仿真, 画Proteus虚拟仿真电路, 虚拟仿真运行,装入Hex文件, 全速运行。 鼠标左键单击K0(不锁定), 可听到播放生日快乐歌。 播完后, 再次单击K0,再次播放。,可打开本书配套的项目9,直接操作。,项目8 输出脉冲波 任务8.1 2种工作方式2种程序 练习题3.10 输出4种周期脉冲波 项目9 播放生日快乐歌 练习题3.11 播放世上只有妈妈好,配套 第3章内容,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号