第4部分中断系统和定时计数器

上传人:cn****1 文档编号:567688578 上传时间:2024-07-22 格式:PPT 页数:113 大小:1.15MB
返回 下载 相关 举报
第4部分中断系统和定时计数器_第1页
第1页 / 共113页
第4部分中断系统和定时计数器_第2页
第2页 / 共113页
第4部分中断系统和定时计数器_第3页
第3页 / 共113页
第4部分中断系统和定时计数器_第4页
第4页 / 共113页
第4部分中断系统和定时计数器_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《第4部分中断系统和定时计数器》由会员分享,可在线阅读,更多相关《第4部分中断系统和定时计数器(113页珍藏版)》请在金锄头文库上搜索。

1、第第4章章 中断系统和定时中断系统和定时/计数器计数器本章学习目标本章学习目标 :理解中断概念,能正确描绘单片机中断响应过程理解中断概念,能正确描绘单片机中断响应过程熟记熟记80C5180C51单片机的单片机的5 5个中断源及其中断入口地址个中断源及其中断入口地址能按要求正确设置特殊功能寄存器能按要求正确设置特殊功能寄存器IEIE、IPIP、TCONTCON、SCONSCON和和TMODTMOD熟悉中断优先控制的方法熟悉中断优先控制的方法能正确描绘定时能正确描绘定时/ /计数器的计数器的4 4种工作方式,重点掌种工作方式,重点掌握方式握方式1 1、方式、方式2 2的应用的应用学会定时学会定时/

2、 /计数初值的计算计数初值的计算能读懂教材中的控制实例,学会编写同等难度的能读懂教材中的控制实例,学会编写同等难度的中断、定时中断、定时/ /计数程序计数程序坦惰坚惺最讼僻魔俱沮檬捏茂挚甩扁淹夺虚首嗽簿盲楷畦反戌缓渭话臀硒第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.1 中断系统中断系统4.1.14.1.1中断系统的基本概念中断系统的基本概念某人看书某人看书某人正在处理一件事某人正在处理一件事A电话铃响电话铃响出现另一件须立即解决的事出现另一件须立即解决的事B暂停看书暂停看书中止中止A 书中作记号书中作记号记录断点,便于接续记录断点,便于接续 电话谈话电话谈话处理处理B继续看书继

3、续看书继续继续A的工作的工作保护断点保护断点中断响应中断响应中断请求中断请求中断返回中断返回1.中断的概念中断的概念 (1)现实生活中的中断:)现实生活中的中断:选湿灶嘿查扎静渴物网宇舀孵招梦训袭梦竞哥米顶牙哉责旷皖薄底浴澡凑第4部分中断系统和定时计数器第4部分中断系统和定时计数器 中断原因:中断原因: 一个人不可能同时一个人不可能同时完成两项任务。完成两项任务。 单片机单片机只有一个只有一个CPU,一旦面临,一旦面临多任务,它也会多任务,它也会中断吗?中断吗?先接电话,然后再继续看书,这样效率最高!4.1.1中断系统的基本概念中断系统的基本概念竟五刃涌义蚁巢棵证垦瓣岛船宪锅碴主摈庚孺鸦苯姜醚

4、听庚钻坟赐任凸躇第4部分中断系统和定时计数器第4部分中断系统和定时计数器(2)单片机中的中断)单片机中的中断CPU在处理某一事件在处理某一事件A时,发生了另一事件时,发生了另一事件B请求请求CPU迅速去处理迅速去处理(中断发生或中断请求)(中断发生或中断请求);CPU暂时中断当前的工作,转去处理事件暂时中断当前的工作,转去处理事件B(中断响(中断响应和中断服务)应和中断服务);待待CPU将事件将事件B处理完毕后,再回到原来事件处理完毕后,再回到原来事件A被中被中断的地方继续处理事件断的地方继续处理事件A(中断返回)(中断返回)。中断请求中断请求中断响应中断响应中断服务中断服务中断返回中断返回中

5、断过程中断过程事件事件B的的处理理过程程事件事件A事件事件B什么是什么是什么是什么是中断中断中断中断?施暖短洱赁随勿闸晒怨台犀褪绣楷白辅晒瓶靖讯瓶短压咆淹筋棺蝗铃噬冉第4部分中断系统和定时计数器第4部分中断系统和定时计数器2.中断技术的应用中断技术的应用并行处理并行处理 CPU可以与多台外设并行工作,并分时与他们进可以与多台外设并行工作,并分时与他们进行信息交换,提高了行信息交换,提高了CPU的工作效率。的工作效率。实时控制实时控制 单片机应用系统可能随机请求单片机应用系统可能随机请求CPU提供服务。有了提供服务。有了中断系统,中断系统,CPU就可以立即响应并予以处理。就可以立即响应并予以处理

6、。故障处理故障处理 单片机系统在工作时可能会出现一些突发故障,如单片机系统在工作时可能会出现一些突发故障,如电源断电,存储器出错,程序执行错误(如除数为电源断电,存储器出错,程序执行错误(如除数为0)等,一旦出现故障,)等,一旦出现故障,CPU就可及时转去执行故障就可及时转去执行故障处理程序,而不必停机。处理程序,而不必停机。渭蔬一必啸练粱鬃轧校械钦坚狠冠吮娩宋拓穿督灯氟痰瑰酋贝日酞讲芭酱第4部分中断系统和定时计数器第4部分中断系统和定时计数器3.中断系统中断系统 为实现中断功能而配置的硬件和为实现中断功能而配置的硬件和编写的软件就是中断系统。编写的软件就是中断系统。中断由谁来实施?中断由谁来

7、实施?中断由谁来实施?中断由谁来实施?中断功能由中断系统来执行。中断功能由中断系统来执行。长一霄绞募疏种撰碍随奈惦怪烽锦缝椿橇诣灿嗅塞豆导躲抵枢县鸳钡讨迟第4部分中断系统和定时计数器第4部分中断系统和定时计数器图图4-1 中断系统的结构框图中断系统的结构框图妮嘎樟够耍掸摸赢蛔吕舵拄浓色酷久溺太纳徒蝶豪舅惺阅琅井块丝序太誉第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.1.2 4.1.2 中断源中断源中断的申请方中断的申请方能够向能够向CPU发出中断申请的部件称为中断源。发出中断申请的部件称为中断源。80C51单片机有单片机有5个中断源。见下表个中断源。见下表 那些部件可以那些部件可

8、以向向CPU申请申请中断中断呢?呢?中断源中断源 说明说明 外部中断 从P3.2引脚引入的外部中断申请定时器T0中断 定时器T0溢出时引发中断申请外部中断从P3.3引脚引入的外部中断申请定时器T1中断定时器T1溢出时引发中断申请串行口中断一次串行发送或接收完成后,发出中断申请湿培高戮赃廖盘趾仍逢挥鼓姚汁盂桥雀甩瞻斌狄凄挎憋炉椽侯矮爷携炭阑第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.1.3 中断控制中断控制中断的控制中断的控制“工具工具”中断允许寄存器中断允许寄存器IE中断优先级寄存器中断优先级寄存器IP定时定时/计数器及外部中断控制寄存器计数器及外部中断控制寄存器TCON串口控

9、制寄存器串口控制寄存器SCON 单片机通过对单片机通过对4个特殊功能寄存器个特殊功能寄存器实施中断控制:实施中断控制:答殊州垢抄皂影赛刘溶乌渡谩领田懈恰铱仁佳麦醚嘻嚏璃享痔研硕耕肥鸥第4部分中断系统和定时计数器第4部分中断系统和定时计数器1中断允许寄存器中断允许寄存器IE功能:功能: 控制单片机是否接受中断申请,以及接控制单片机是否接受中断申请,以及接受哪一种中断申请受哪一种中断申请字节地址:字节地址: A8H 其格式和每位的含义如下:其格式和每位的含义如下:监贵技魁签遏摧室烩据薄滑堵赡孤迹礁抚皖怜遂跪机骏凄市臭附揩铁省投第4部分中断系统和定时计数器第4部分中断系统和定时计数器图图4-2 IE

10、的格式的格式肃盎宋庶苇地臭斯遭偷疵尸足瘩茫疾袱或鸣侵艰彩玖辗坞氮怂瓤绑践倦缅第4部分中断系统和定时计数器第4部分中断系统和定时计数器由位操作指令或数据传送指令实现。由位操作指令或数据传送指令实现。例:同时打开外部中断例:同时打开外部中断0和串行口中断,可设置为:和串行口中断,可设置为:法法1:MOV IE,#10010001B 法法2:SETB EA SETB ES SETB EX0 想一想还可以怎样实现?想一想还可以怎样实现?如何如何如何如何对对IEIE进进行行行行设设置?置?置?置? IE的设置方法:的设置方法:漾睛琼吸幢月嫉诬畜斥哟拈傈亿奢感豢绕拄生卑孜藕半催滴剃眼沦邵职酵第4部分中断系

11、统和定时计数器第4部分中断系统和定时计数器2中断优先级寄存器中断优先级寄存器IP功能:功能: 对对80C51单片机进行高级别或低级别中单片机进行高级别或低级别中断的设置,断的设置,IP的字节地址:的字节地址: B8H 格式和每位的含义如下:格式和每位的含义如下:萎膨临型捍侄稳训重兄隧账滨僳次冕病串姥鳃页贵拯劈合爪凡批珐言员鹃第4部分中断系统和定时计数器第4部分中断系统和定时计数器 图图4-3 IP的格式的格式 似兹井女哩映昨爪双爱询呛匀愈笨洲宝厉法呼邢稽咨勋礁牲聋略袖您怪椽第4部分中断系统和定时计数器第4部分中断系统和定时计数器举例举例 例:例:令串行口为高优先级中断,外部中断令串行口为高优先

12、级中断,外部中断0为为低优先级中断。低优先级中断。 设置方法:设置方法:法法1: MOV IE,#10010001B ;开中断;开中断 MOV IP,#00010000B ;设优先级;设优先级 法法2: MOV IE,#10010001B SETB PS说明:说明:此时串口的优先级高于外部中断此时串口的优先级高于外部中断0的优先级的优先级浙抖迢残取良薯柜琢溶躇命惩诫敬焰仑喘粪隐萧诲跨骄溅坝段慢覆捣苹等第4部分中断系统和定时计数器第4部分中断系统和定时计数器 答案:答案: 此时此时CPU按自然优先级顺序确定该响应哪个按自然优先级顺序确定该响应哪个中断请求。中断请求。如果几个同如果几个同如果几个同

13、如果几个同级别级别的中断的中断的中断的中断源同源同源同源同时时申申申申请请中断,中断,中断,中断,CPUCPU如何响如何响如何响如何响应应?注意:注意: 自然优先级由硬件决定,用户不能更改。自然优先级由硬件决定,用户不能更改。排列见表排列见表42吹恩莽于噎嚼亿惶脐砷她辅球刺凭煞颈诣圾雀劲稻涩舜力客樟拉皑架稚灿第4部分中断系统和定时计数器第4部分中断系统和定时计数器表表42 中断入口地址及自然优先级中断入口地址及自然优先级 智颤让树弓输庚腐枝名腻行摸彰梗醉蜒怒伐风按怪喘刻课术誓址戎泌澜蚀第4部分中断系统和定时计数器第4部分中断系统和定时计数器3定时定时/计数器及外部中断控制寄存器计数器及外部中断

14、控制寄存器TCON功能:功能: 字节地址:字节地址: 88H可设置外部中断申请的形式:低电平触发还是下可设置外部中断申请的形式:低电平触发还是下降沿触发降沿触发控制定时控制定时/计数器的计时开始或停止计数器的计时开始或停止是各中断源(串口中断除外)是否申请中断的标是各中断源(串口中断除外)是否申请中断的标志位志位格式如下,各位含义见表格式如下,各位含义见表43TCON D7 D6D5D4D3D2D1D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 躲学双司内掖疏抢担录肪驱淡札袍料万漆蘸傻库坝晒继褥匆疡葛答照糕硝第4部分中断系统和定时计数器第4部分中断系统和定时计数器形式形式

15、符号符号 位地址位地址 功功 能能 说说 明明 中断控制 IT0 88H 外部中断外部中断0的触发控制位的触发控制位IT0=0:低电平触发:低电平触发 IT0=1:下降沿触发:下降沿触发IT0的状态由用户的状态由用户通过初始化程序通过初始化程序定义定义 IE0 89H 外部中断外部中断0请求标志位。请求标志位。CPU采样到外部中断采样到外部中断0的中断请求时,的中断请求时, IE0=1CPU响应该中断时,响应该中断时, IE00 IE0的状态由单的状态由单片机自动设置片机自动设置 IT1 8AH 外部中断外部中断1的触发控制位的触发控制位IT1=0:低电平触发:低电平触发IT1=1:下降沿触发

16、:下降沿触发 IT1的状态由用户的状态由用户通过初始化程序通过初始化程序定义定义 IE1 8BH 外部中断外部中断1的中断请求标志位的中断请求标志位CPU采样到外部中断采样到外部中断1的中断请求时,的中断请求时, IE1=1CPU响应该中断时,响应该中断时, IE10 IE1的状态由单的状态由单片机自动设置片机自动设置 表表43 TCON的功能说明的功能说明奠鱼俩嘱益志枚苛峭卒惊匪平跑抛解扭两贯凹砰傍垒蚊矾谤荐谣仁诞趴炯第4部分中断系统和定时计数器第4部分中断系统和定时计数器形式形式 符号符号 位地址位地址 功功 能能 说说 明明 定定时时/计计数数控控制制 TR0 8CH TR0=1:启动定

17、时:启动定时/计数器计数器T0TR0=0:停止定时:停止定时/计数器计数器T0 TR0的状态由用户的状态由用户通过初始化程序定通过初始化程序定义义 TF0 8DH 定时定时/计数器计数器T0溢出中断请求位溢出中断请求位T0定时或计数完成时定时或计数完成时TF0=1,同时,同时申请中断申请中断CPU响应该中断时,响应该中断时, TF00 TF0的状态由单片的状态由单片机自动设置机自动设置 TR1 8EH TR1=1:启动定时:启动定时/计数器计数器T1TR1=0:停止定时:停止定时/计数器计数器T1 TR1的状态由用户的状态由用户通过初始化程序定通过初始化程序定义义 TF1 8FH 定时定时/计

18、数器计数器T1溢出中断请求位溢出中断请求位T1定时或计数完成时定时或计数完成时TF1=1,同时,同时申请中断申请中断CPU响应该中断时,响应该中断时, TF10TF1的状态由单片的状态由单片机自动设置机自动设置 续表续表4 43 3 拦紊些傣箩肛补摈虐屡婆扣纺遂乞痛厘寞依屁豹蜜撕致康饶饮蹋盈股兰矩第4部分中断系统和定时计数器第4部分中断系统和定时计数器例例 1 编程设定编程设定TCON为低电平触发的高优先级中为低电平触发的高优先级中断源。断源。分析:分析: 这是典型的中断初始化问题,方法一般如下:这是典型的中断初始化问题,方法一般如下:1)对)对TCON的相关位赋值的相关位赋值2)设定所用中断

19、源的优先级)设定所用中断源的优先级赋值赋值IP3)开中断)开中断置位置位IE仿码孵礼蓝韵互掘兴挎啮属射屁涧搬袁竞弦恒扛簇斟僻猫顽激亢俗锻嚼爬第4部分中断系统和定时计数器第4部分中断系统和定时计数器解:解: 法法1:CLR IT1 SETB PX1 SETB EX1 SETB EA例例 1 法法2:CLR IT1 MOV IP,#04H MOV IE,#84H书沛婚绅野反萝末翰浮积芭进敛锐牵埠速驭诞驼懦植讥袖纫贼锑委棵绞哈第4部分中断系统和定时计数器第4部分中断系统和定时计数器4串口控制寄存器串口控制寄存器SCON功能:功能: 只有只有D1和和D0位用于中断,作为串口中断请位用于中断,作为串口中

20、断请求标志,即串口中断请求寄存器求标志,即串口中断请求寄存器字节地址:字节地址: 98H 格式如下:格式如下:傅瓢栓布粪竟惜睁断歉焦眶通堑眷睛剃垮杜咳八栖谁泌煞拣突苞厌临民阅第4部分中断系统和定时计数器第4部分中断系统和定时计数器RI为接收中断请求标志位。为接收中断请求标志位。当串口接收完一帧串行数据时,当串口接收完一帧串行数据时,RI自动置自动置1;CPU响应中断后,用软件对响应中断后,用软件对RI清清0。TI为串行口发送中断请求标志。为串行口发送中断请求标志。当串口发送完一帧串行数据时,当串口发送完一帧串行数据时,TI自动置自动置1,请求中断。,请求中断。CPU响应中断后,由软件对响应中断

21、后,由软件对TI清零。清零。其他几位的含义及用法见第其他几位的含义及用法见第5章。章。闸妨汪渤让酵予征览览好绞跋轰抄淑王肃耻刃度闲确惮缚皑樱阶舒椒壤赐第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.1.4 中断响应中断响应无同级或高级中断正在服务无同级或高级中断正在服务有中断请求信号有中断请求信号相应的中断源已打开,即相应的中断源已打开,即EA=1,中断源,中断源对应中断允许位也为对应中断允许位也为1。当前的指令周期已经结束当前的指令周期已经结束如果当前指令为如果当前指令为RETI或访问或访问IE和和IP的指令,的指令,至少还要再执行完一条指令。至少还要再执行完一条指令。1.1.中

22、断响应条件中断响应条件技拧舜伍窗贵随岗躯骗醚妓仙油珠辕懦寂俏允糜妥爆邯妙坝魂与专负蓟欣第4部分中断系统和定时计数器第4部分中断系统和定时计数器2.中断响应过程中断响应过程图图44中断响应过程中断响应过程将当前寄存器内容压入堆栈,将当前寄存器内容压入堆栈,如如 PUSH ACC在中断服务程序中实现,解决单片在中断服务程序中实现,解决单片机中断后要干什么的问题。机中断后要干什么的问题。把保存在堆栈中的寄存器内容取出,送把保存在堆栈中的寄存器内容取出,送回原来的位置,如回原来的位置,如POP ACC供较理矮杯声襄擂峨篆闻溢家佬恨创推晋翔蔬絮茂爹肮收骋秽岂肛肤佬雅第4部分中断系统和定时计数器第4部分中

23、断系统和定时计数器4.1.5中断嵌套中断嵌套答案:答案:CPU要进行分析判断,决定是否响应:要进行分析判断,决定是否响应:当当当当CPUCPU正在正在正在正在执执行中断服行中断服行中断服行中断服务务程序程序程序程序时时,又有新的中,又有新的中,又有新的中,又有新的中断源断源断源断源发发出中断申出中断申出中断申出中断申请请,响,响,响,响应吗应吗?情况情况1: 同级或低级中断同级或低级中断源申请中断,源申请中断,CPU不予理睬不予理睬情况情况2: 高级别中断源申高级别中断源申请中断,请中断,CPU就要响就要响应。应。 待执行完高级别中断服务程序后待执行完高级别中断服务程序后再转回低级中断服务程序

24、继续执行,再转回低级中断服务程序继续执行,这就是这就是中断嵌套。中断嵌套。吧改刻仪纯津愉嚷寞雁曝驭盐统脐菇搏典蛙掖酸利解中纂竟虱讶寞捧歪依第4部分中断系统和定时计数器第4部分中断系统和定时计数器图图45 二级中断嵌套的执行过程二级中断嵌套的执行过程特威彻验条讹秋虚井蔫簇忆譬傲寄语冀校沫阐酶君蚁纂照椅崖精挞例合铝第4部分中断系统和定时计数器第4部分中断系统和定时计数器软件构成:软件构成:主程序主程序+中断服务程序中断服务程序程序编制的关键点:程序编制的关键点: 要对题目要求进行精确分析,明确哪要对题目要求进行精确分析,明确哪些环节应该安排在主程序中,哪些环节些环节应该安排在主程序中,哪些环节应该

25、安排在中断服务程序中,再分别编应该安排在中断服务程序中,再分别编制主程序和中断服务程序。制主程序和中断服务程序。4.2 中断的应用中断的应用4.2.14.2.1中断应用指导中断应用指导 1中断系统的程序编制中断系统的程序编制常嘘求若慧绑氟坍亩镐例慎讳缸滁隆穴咏颖元肝抓代拐榔拘铆冤吏尿胜辖第4部分中断系统和定时计数器第4部分中断系统和定时计数器 1中断系统的程序编制中断系统的程序编制 (1)编制主程序编制主程序p第一部分:主程序初始化第一部分:主程序初始化 功能:功能:p第二部分:须由主程序完成的其它功能。第二部分:须由主程序完成的其它功能。此部分必须编写此部分必须编写用于设置堆栈位置;用于设置

26、堆栈位置;定义触发方式(低电平触发或脉冲下降沿触发)定义触发方式(低电平触发或脉冲下降沿触发)对对IE和和IP赋值等;赋值等;袄呕标憾秤厚贵咬嘲梨那谤这嘉抬烃息忠咒挟惠考承羽读萤冲奄截搅瞄模第4部分中断系统和定时计数器第4部分中断系统和定时计数器(2)选择中断服务程序的入口地址。选择中断服务程序的入口地址。(3)编制中断服务程序编制中断服务程序。 1中断系统的程序编制中断系统的程序编制即明确中断服务程即明确中断服务程序的起始位置序的起始位置注意注意1:一般要保护断点一般要保护断点, 即保护进入中断时累加器即保护进入中断时累加器A、进、进/借位标借位标志志CY和和SFR的状态,的状态,并在退出中

27、断之前将其恢复;并在退出中断之前将其恢复;注意注意2:必须在中断服务程序中设定是否允许再次中断必须在中断服务程序中设定是否允许再次中断(即中断嵌套)(即中断嵌套),由用户对,由用户对EX0(或(或EX1)位置位或清)位置位或清0决定。决定。说明:说明:一般在中断服务程序中涉及到关键数据一般在中断服务程序中涉及到关键数据的设置时应关的设置时应关 中断,即禁止嵌套。中断,即禁止嵌套。茅肘脱盾赌类姻镣孵跋瞻唬五未三基重杏洱瞒渔贾真邯绅力勒瓤哮闸嘻氨第4部分中断系统和定时计数器第4部分中断系统和定时计数器2中断应用举例中断应用举例三相交流电的故障检测电路三相交流电的故障检测电路 例例2 图图4-6是三

28、相交流电的故障检测电路。当是三相交流电的故障检测电路。当A相缺电时,相缺电时,发光二极管发光二极管LEDA 亮;当亮;当B相缺电时,发光二极管相缺电时,发光二极管LEDB亮;亮;当当C相缺电时,发光二极管相缺电时,发光二极管LEDC亮。亮。硬件特点:硬件特点: 外部中断外部中断 由由3个交流个交流继电器的触点和一个或非门扩继电器的触点和一个或非门扩展而成;展而成; 3个个220V的交流继电器的的交流继电器的线圈线圈ZA、ZB、ZC分别接在分别接在A、B、C各相和交流地之间。各相和交流地之间。图图4-6 三相交流电的故障检测电路三相交流电的故障检测电路压炒钥磁竞硫般焉刑济粉豫访纺咎室疵嘛拎诊瓜天

29、积芹亡拧炉汛剑痹垫蚌第4部分中断系统和定时计数器第4部分中断系统和定时计数器(1)检测原理)检测原理三相电正常情况下三相电正常情况下3个线圈同时得电个线圈同时得电3个常开触点全都闭合个常开触点全都闭合0001不申请外部中断不申请外部中断叮鲍踩毫吉镊自欣罗垛塞拟峨轧师帘酸萤原谩担改绳愁潮竣营滩昧只墓烁第4部分中断系统和定时计数器第4部分中断系统和定时计数器故障情况下(假设故障情况下(假设A相掉电)相掉电)(1)检测原理)检测原理线圈线圈ZA失电失电常开触点常开触点ZA断开断开0申请外部中断,在外部中断服务申请外部中断,在外部中断服务程序中读取程序中读取P1.0引脚状态引脚状态0011产生产生A相

30、掉电状态信号送相掉电状态信号送入入P1.01在中断服务程序中对在中断服务程序中对该引脚输出该引脚输出1A相故障指示灯亮相故障指示灯亮线圈线圈ZB、ZC有电有电常开触点常开触点ZB、ZC闭合闭合B、C相故障指示灯不亮相故障指示灯不亮惩毯出汲莲瘸义常逻崎哦徘淄头彩而态锰薄板鸥冉智搂氧篇扛绅战回锭怠第4部分中断系统和定时计数器第4部分中断系统和定时计数器(2)软件设计软件设计 ORG 0000HLJMP MAIN;跳至主程序;跳至主程序ORG 0013H;的中断入口地址;的中断入口地址LJMP TEST;转至中断服务程序;转至中断服务程序ORG 0100HMAIN:MOV P1,#15H;P1.0、

31、P1.2、P1.4作输入;作输入;P1.1、P1.3、P1.5输出输出0SETB EX1;开中断;开中断 CLR IT1 ;为低电平触发;为低电平触发SETB EA;CPU开中断开中断SJMP $;等待中断;等待中断TEST:JNB P1.0,LB;A相正常,转测相正常,转测B相相SETB P1.1;A相掉电,点亮相掉电,点亮LEDALB:JNB P1.2,LC;B相正常,转测相正常,转测C相相SETB P1.3;B相掉电,点亮相掉电,点亮LEDBLC:JNB P1.4,LL;C相正常,返回相正常,返回SETB P1.5;C相掉电,点亮相掉电,点亮LEDCLL: RETI END诌面管疤绅辜榷

32、伦编腊应盘幂腻倘铺蹿净斟汛营猎奥广砚葡数掉础贺椿偷第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.2.2 4.2.2 课题与实训课题与实训7 7 中断控制流水灯中断控制流水灯一一.实训目的实训目的 学习外部中断的基本用法学习外部中断的基本用法 掌握中断处理程序的编程方法掌握中断处理程序的编程方法二二.课题要求课题要求 在程序正常运行时在程序正常运行时P1口的口的8个个LED灯作单灯左移灯作单灯左移8次而后次而后单灯右移单灯右移7次,如此循环;中断时(即按键按下)则次,如此循环;中断时(即按键按下)则P1口的口的8个个LED闪烁闪烁3次(即全亮全灭次(即全亮全灭3次)次)。三三.背景

33、知识背景知识 1中断程序的设计主要涉及开中断、设定优先级,外中断还中断程序的设计主要涉及开中断、设定优先级,外中断还 涉及触发方式的设定。涉及触发方式的设定。 2在软件设计中,首先要对主程序和中断服务程序所完成的在软件设计中,首先要对主程序和中断服务程序所完成的 任务进行划分。根据该课题提出的要求,在主程序中应该任务进行划分。根据该课题提出的要求,在主程序中应该 完成的任务是完成的任务是8个个LED循环左移右移;在中断服务程序中循环左移右移;在中断服务程序中 应该完成的功能是应该完成的功能是8个个LED闪烁闪烁3次。次。魂贰影删殉宏取卢理尧咬犀锰恩赂弛径悍范厌哺释塘猾骗芳冷敬爪娜板沿第4部分中

34、断系统和定时计数器第4部分中断系统和定时计数器四四.硬件电路硬件电路 硬件结构如图硬件结构如图,12引脚的按键点动表示有中断请求发出。引脚的按键点动表示有中断请求发出。 图图4-7 实训实训7电路电路 崔僚偷詹撞舟谰喇乏纠察杠姚宫糖丝困晶怎纠服嫉五相赡国狙募岭泥诸轮第4部分中断系统和定时计数器第4部分中断系统和定时计数器五五.参考程序参考程序 ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0100H START:MOV SP,#60H MOV IE,#81H ;开;开INT0中断中断 SETB IT0 ;INT0下降沿触发下降沿触发 L1: MOV

35、A,#0FFH ;设初值;设初值 MOV R0,#8 ;设定左移八次;设定左移八次 CLR C ;将;将CY清清0 L2: RLC A ;带进位位循环左移一位;带进位位循环左移一位 MOV P1,A ;送;送P1口口,P1.0灯亮灯亮 洒娃耿爱盼碘蝇纬现商辙阐鸥闷膳绦庙访锅垮耘曼爱嫉侯沃丛柞议逮刨茂第4部分中断系统和定时计数器第4部分中断系统和定时计数器 ACALL DELAY ;延时;延时0.2秒秒 DJNZ R0,L2 ;判断是否左移;判断是否左移8次次 MOV R0,#7 ;移动;移动7次次L3: RRC A ;带进位位循环右移;带进位位循环右移 MOV P1,A ;送;送P1口口 AC

36、ALL DELAY DJNZ R0,L3 ;是否右移;是否右移7次?次? AJMP L1 ;重新开始;重新开始DELAY:MOV R5,#4 ;延时;延时0.2秒秒 D1: MOV R6,#200 D2: MOV R7,#123 NOP DJNZ R7,$ 士咕虽晾矾抛萎帛栓韵嗜钾走钦烦敏晋探侮德挺彦片谅红巧奖歉败烬凋洱第4部分中断系统和定时计数器第4部分中断系统和定时计数器 DJNZ R6,D2 DJNZ R5,D1 RETINT0: PUSH PSW ;保护保护PSW,ACC值值 PUSH ACC MOV A,#00H ;使;使8个个LED全亮全亮 MOV R2,#6 ;闪烁;闪烁3次(全

37、亮全灭各次(全亮全灭各3次)次) L4:MOV P1,A ;A值送出值送出 LCALL DELAY ;延时;延时0.2秒秒 CPL A ;A值取反值取反 DJNZ R2,L4 ;闪烁;闪烁3次?次? POP ACC ;恢复保护的;恢复保护的A值值 POP PSW ;恢复保护的;恢复保护的PSW值值 RETI ;返回主程序;返回主程序 END 羡辅掌逐扶朴藩张蘸淀犬励逊奶信方涌菲斩或吟砍兹午彦哺锣泡负光倚膘第4部分中断系统和定时计数器第4部分中断系统和定时计数器六六.总结与提高总结与提高 1. 总结:中断服务程序与子程序对比总结:中断服务程序与子程序对比共同点:格式相近,执行过程大体相同共同点:

38、格式相近,执行过程大体相同子程序子程序 执行时刻是确定执行时刻是确定的,的,CPU只要执行只要执行LCALL、ACALL等等调用指令就会转去调用指令就会转去执行子程序执行子程序中断服务程序中断服务程序 中断申请往往是中断申请往往是随机发生的。中断服随机发生的。中断服务程序的发生可能是务程序的发生可能是在开中断后的任意时在开中断后的任意时刻,也可能不发生,刻,也可能不发生,兽轨灵况照乌亲瘪悍荒圈疟咎画庐贵玉蝉攒障泪秒傈仕峭条顷抠处聋酶蚂第4部分中断系统和定时计数器第4部分中断系统和定时计数器2提高提高 编写一个由两个中断(外部中断编写一个由两个中断(外部中断0、外部中断、外部中断1)控制的流水灯

39、程序。)控制的流水灯程序。要求:要求: 主程序不变,中断主程序不变,中断0可使可使P1.0P1.3的的LED闪闪烁烁5次,中断次,中断1可使可使P1.4P1.7的的LED闪烁闪烁5次,设次,设定中断定中断1的优先级比中断的优先级比中断0高。高。坦神栽裸坠轴未张妈扫践训险忿渍桌幼娩婿壹郝翰宛英今公愈描寥沉眷唐第4部分中断系统和定时计数器第4部分中断系统和定时计数器.3定时计数器定时计数器 1. 日常生活中定时、计数的例子:日常生活中定时、计数的例子: 如闹钟、画如闹钟、画“正正”统计选票、家用水表对水量的计数。统计选票、家用水表对水量的计数。 2 . 单片机应用系统中定时计数的需求:单片机应用系

40、统中定时计数的需求: 如用单片机控制的打铃器、空调的定时开关、啤酒自如用单片机控制的打铃器、空调的定时开关、啤酒自动生产线上对酒瓶的计数装置等。动生产线上对酒瓶的计数装置等。 3 . 80C51单片机片内的定时单片机片内的定时/计数器:计数器: 两个位可编程的定时计数器:两个位可编程的定时计数器:T0和和T1,都能定,都能定时和对外部事件进行计数。时和对外部事件进行计数。 此外,此外,T1还可以作为串行接口的波特率发生器。还可以作为串行接口的波特率发生器。 回胁潭窃岳悬溯螟睡江爵鸣充慌研酝沈原扁吉横吩笛酬援蚀仑迸瘩楚粘糖第4部分中断系统和定时计数器第4部分中断系统和定时计数器.3.1.3.1定

41、时计数器的结构定时计数器的结构.定时和计数的原理定时和计数的原理(1)计数)计数 定时计数器的实质是加计数器(位),定时计数器的实质是加计数器(位),其原理类似于古代用来计时的水钟:其原理类似于古代用来计时的水钟:假设计满一小时需要假设计满一小时需要100,000,000滴,这称为水钟的计数容量滴,这称为水钟的计数容量16位定时位定时/计数器的计数容量是计数器的计数容量是65536单片机是对脉冲个数计数,计数器每单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加接收到一个脉冲,计数值加1,当接收满当接收满65535个脉冲后,再个脉冲后,再来一个脉冲,计数值清来一个脉冲,计数值清0表明表明

42、这一轮计数结束,同时将标这一轮计数结束,同时将标志位志位TF0或或TF1置置1。紧啼漠州茧嘱晴推巷劈晾猾锰橡耕氨灌掠胡账脓顷烟懊迹掇涛峻琴攻精亮第4部分中断系统和定时计数器第4部分中断系统和定时计数器 (2)定时)定时 单片机内部的计数器用作定时器时,是对标准的单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就代表了只要保证计数脉冲的间隔相等,则计数值就代表了时间的流逝。时间的流逝。计计数器如何能作数器如何能作数器如何能作数器如何能作为为定定定定时时器使用呢?器使用呢?器使用呢

43、?器使用呢?单片机中的定时器和计数器其实是一个器件:单片机中的定时器和计数器其实是一个器件:计数器:计数器:是对外部发生的事件进行计数,是对外部发生的事件进行计数,定时器:定时器:是对单片机内部的标准时钟脉冲进行是对单片机内部的标准时钟脉冲进行计数。计数。览届吐育叶亦锁胸裳骡唁挨蜒安冉法株奠痘闭横痉吐瘫残厩挞柒浇值解吭第4部分中断系统和定时计数器第4部分中断系统和定时计数器单单片机内部的片机内部的片机内部的片机内部的标标准准准准时钟时钟脉冲是如何脉冲是如何脉冲是如何脉冲是如何获获得的呢?得的呢?得的呢?得的呢? 见图见图4-9 ,它是由单片机的晶振经过,它是由单片机的晶振经过12分频后得到。由

44、于分频后得到。由于晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难晶振的频率很准,所以这个时钟脉冲的时间间隔也很准。不难算出,当单片机采用算出,当单片机采用12的晶振时,它提供给计数器的的晶振时,它提供给计数器的脉冲频率是,脉冲周期就是微脉冲频率是,脉冲周期就是微秒。秒。图图4-9 定时定时/计数器计数器T0的结构示意图的结构示意图祥缩淮叼莹谅脱虎燎疟下络纪洲挑橙煞爪犀畅泳污雹恭级鳃乒派鉴琼何怠第4部分中断系统和定时计数器第4部分中断系统和定时计数器 单片机内部的单片机内部的16位定时计数器由高位定时计数器由高8位和低位和低8位位两个寄存器组成:两个寄存器组成:l T0由由TH0和和TL

45、0组成,组成,l T1由由TH1和和TL1组成,组成, 定时计数器的计数值就存放在这里面。定时定时计数器的计数值就存放在这里面。定时/计计数器数器T1的结构与的结构与T0相同。相同。图图4-9 定时定时/计数器计数器T0的结构示意图的结构示意图 2定时定时/计数器的结构计数器的结构碴迢晓缆闽怜鹃嘉叙氮臻菌甘麦碱刚柬符呻喀场枕侨秸滋肯苹腔黎寺挠鞭第4部分中断系统和定时计数器第4部分中断系统和定时计数器 再以水钟为例,当水不断落下,下面容器中的水不再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如果断变多,最终总有一滴水使得容器完全充满。这时如果再有一滴水落

46、下,就会发生再有一滴水落下,就会发生“溢出溢出”。与此类似,。与此类似,16位定时计数器计满位定时计数器计满65536个脉冲时,也会发生溢出。个脉冲时,也会发生溢出。 定时计数器溢出后标志位定时计数器溢出后标志位TF0(或(或TF1)由)由0变变1,由此能够引发定时中断(在中断定时方式下),这就,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样像定时的时间一到,闹钟就会响一样。 如果采用如果采用12的晶振,对应的脉冲周期是的晶振,对应的脉冲周期是微秒,计满微秒,计满65536个脉冲所对应的时间就是个脉冲所对应的时间就是65.536ms。 3定时定时/计数值的设置计

47、数值的设置梭言橇眩搂谤延倦出宇铃祝铬鹏尝耪趾点齐综誓毙恨馏况黑实国宇洁轩帐第4部分中断系统和定时计数器第4部分中断系统和定时计数器现实现实生活中,如何生活中,如何生活中,如何生活中,如何满满足足足足计计数数数数值值少于少于少于少于6553665536的需要的需要的需要的需要?如牛奶包装线上如牛奶包装线上如牛奶包装线上如牛奶包装线上2424盒装盒装盒装盒装箱一次。箱一次。箱一次。箱一次。再回到水钟的例子上去:再回到水钟的例子上去: 刚才假设下面容器滴入刚才假设下面容器滴入100,000,000滴水才会滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问满,现在我们在开始滴水之前先放入一勺水,这

48、样问题就解决了。题就解决了。 计数器的道理是一样的,只要用预置数的方法计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值先在计数容器内存入一个初值 (通常称为时间常数)(通常称为时间常数),如我们要计如我们要计100,那就存入,那就存入65436,只要再来,只要再来100个脉冲,就刚好会溢出,引发中断。个脉冲,就刚好会溢出,引发中断。计数器初值的设置计数器初值的设置祝托牡咕际晃丘碳隔酵划衙苏务藕亚疯绳绘弄凹森爪烟附悄颠甜仿宣旅膝第4部分中断系统和定时计数器第4部分中断系统和定时计数器 在主频为在主频为12MHz的情况下,每个时钟脉冲是的情况下,每个时钟脉冲是1微秒,则微秒,则计

49、满计满65536个脉冲需个脉冲需65.536毫秒,如要定时毫秒,如要定时10毫秒则存入毫秒则存入初值初值55536,(,(10毫秒是毫秒是10000微秒,需计数微秒,需计数10000个脉个脉冲)。可见,冲)。可见, 定时器的定时时间长短与系统时钟和定时器初定时器的定时时间长短与系统时钟和定时器初值有关值有关。 说明说明 1. 当定时计数器用作计数器时,通过引脚当定时计数器用作计数器时,通过引脚P3.4(P3.5)对外部输入脉冲计数。对外部输入脉冲计数。 2 . 定时计数器定时计数器T0(T1)启动运行后,会按设定的工作启动运行后,会按设定的工作方式独立进行计数,不再占用方式独立进行计数,不再占

50、用CPU时间。当计数器时间。当计数器T0(T1)计满溢出时,计满溢出时,TF0(TF1)置置1,向,向CPU发出中断请求信号。发出中断请求信号。定时器初值的设置定时器初值的设置潘子肋附盏鼎宋握罗牟硒枣卑戌录彦霖诸梭洛他噬舶浩碴腐伶速欧母烟演第4部分中断系统和定时计数器第4部分中断系统和定时计数器4-10 定时定时/计数器的控制关系计数器的控制关系若硷镐滋椒漫匿寇袒啥颂盒彪续宰绍呢末巍何吉宾镐酵植共陶警褥锨鸳畦第4部分中断系统和定时计数器第4部分中断系统和定时计数器 4.3.24.3.2定时计数器的控制定时计数器的控制 在单片机中有两个特殊功能寄存器与定时在单片机中有两个特殊功能寄存器与定时/计

51、数有关,计数有关,它们就是它们就是TMOD和和TCON,定时计数器,定时计数器T0、T1就由它们来就由它们来控制:控制: TMOD用于设置工作方式;用于设置工作方式; TCON用于控制其启动、停止和中断申请。用于控制其启动、停止和中断申请。 1.定时器工作方式寄存器定时器工作方式寄存器TMOD TMOD用于设置用于设置T0和和T1的工作方式,字节地址为的工作方式,字节地址为89H,不能按位寻址。其格式和各位的含义如下:不能按位寻址。其格式和各位的含义如下:臼全镍幼逢渺禾梭匀酸斥汇悦菏镜佣矗槽漂赢榆洲刽建跑饺习凄吊府适耕第4部分中断系统和定时计数器第4部分中断系统和定时计数器雍硕捆艰庞鲜梯垄背愉

52、犹龙履棉斟盟馈吸帆宋甲痈凯中敛刺菩呈焰危沁许第4部分中断系统和定时计数器第4部分中断系统和定时计数器蕊明方毅隘宰缆伎晾皱绞赠该满葛欠藕济溉贿加吨申秃锰种筹腊哉祟痒帽第4部分中断系统和定时计数器第4部分中断系统和定时计数器 2定时定时/计数器控制寄存器计数器控制寄存器TCON TCON的低的低4位用于控制外部中断,高位用于控制外部中断,高4位用于控位用于控制定时制定时/计数器的启动和中断申请。计数器的启动和中断申请。l TF0(或(或TF1) 当计数溢出时,当计数溢出时,TF0(或(或TF1)会自动由)会自动由0变变1,告诉我们计数已满,我们可以通过查询告诉我们计数已满,我们可以通过查询TF0(

53、或或TF1)位的状态来判断计时时间是否已到;位的状态来判断计时时间是否已到; 如果采用定时中断方式,则如果采用定时中断方式,则 TF0(或(或TF1)由由0变变1时,能自动引发中断。时,能自动引发中断。怖颁酉绪那澜遣评傈搁娶增跃堤巨赞围伐捶腮境之抽逸渡勤沥筏莲献久岂第4部分中断系统和定时计数器第4部分中断系统和定时计数器l TR0(或或TR1) 由图由图4-11 可知,只有可知,只有当当TR0(或或TR1)为为1时,开时,开关关1才能闭合,计数脉冲才才能闭合,计数脉冲才能进入计数器,故能进入计数器,故TR0(或或TR1)称为运行控制位,称为运行控制位,可可用指令用指令“SETB TR0(或或T

54、R1)”来置位以启动定时来置位以启动定时/计数器运行;计数器运行;或用指令或用指令“CLR TR0(或或TR1)”来关来关闭定时闭定时/计数器的工作,计数器的工作,一一切全靠编程人员控制。切全靠编程人员控制。图4-11 定时/计数器T0方式0的逻辑结构示意图 青伯铲储步离涣皇沙妈印碘噎赁吞哑昌作妥刚均碾累幼焊份洛恢怕祸盟回第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.3.3 4.3.3 定时定时/ /计数器的工作方式计数器的工作方式 80C51单片机定时单片机定时/计数器计数器T0有有4种工作方式(方式种工作方式(方式0、1、2、3),),T1有有3种工作方式(方式种工作方式(方

55、式0、1、2)。)。 1. 方式方式0 当当TMOD的的M1M0=00时,定时时,定时/计数器工作于方式计数器工作于方式0。方式方式0为为13位定时位定时/计数器,由计数器,由TL0的低的低5位和位和TH0(8位)共同位)共同完成计数功能(完成计数功能(TL0的高的高3位可忽略)。位可忽略)。 当当TL0的低的低5位溢出时,向位溢出时,向TH0产生进位;产生进位;TH0溢出时,将溢出时,将定时器中断请求标志位定时器中断请求标志位TF0置置1,可申请中断,也可对,可申请中断,也可对TF0进进行查询。行查询。 溺判紫共净廊茶携滦击布稿影三沥渠嫂闪沽奢非函设粥驾答齿写彭深苑途第4部分中断系统和定时计

56、数器第4部分中断系统和定时计数器图图4-11 定时定时/计数器计数器T0方式方式0的逻辑结构示意图的逻辑结构示意图 瓢冻主反宝哄另涟膳旷害幢啤宴赎暇接入豹丑牌民牲果投望部托昌生橙殴第4部分中断系统和定时计数器第4部分中断系统和定时计数器2. 方式方式1 当当M1M0=01时,定时时,定时/计数器工作于方式计数器工作于方式1。方式。方式1的计的计数位数是数位数是16位,由位,由TL0作为低作为低8位,位,TH0作为高作为高8位共同构成。位共同构成。其余操作同方式其余操作同方式0。图图4-12 定时定时/计数器计数器T0方式方式1的逻辑结构示意图的逻辑结构示意图胡况份狄恍抉乒咆向鄙憋骸汐挺卯犀叶青

57、瓶唯吹试罪针沥返开干似揣鸳悲第4部分中断系统和定时计数器第4部分中断系统和定时计数器3. 方式方式2 当当M1M0=10时,定时时,定时/计数器工作于方式计数器工作于方式2。这是自动重。这是自动重装初值的装初值的8位计数方式,它省去了方式位计数方式,它省去了方式0和方式和方式1在多次重复在多次重复计数状态下必须重新设定计数初值的麻烦,但是却付出了计数状态下必须重新设定计数初值的麻烦,但是却付出了减小定时时间的代价。减小定时时间的代价。图图4-13 定时定时/计数器计数器T0方式方式2的逻辑结构示意图的逻辑结构示意图特别适合于制作比较精特别适合于制作比较精确的脉冲信号发生器。确的脉冲信号发生器。

58、潭桌黍八殆筋躲摈幅仁种丸鞍妆糕钉缎宴迂粗颁此闻糊静欲临矾梅叫语蛊第4部分中断系统和定时计数器第4部分中断系统和定时计数器4. 方式方式3 方式方式3只适用于定时只适用于定时/计数器计数器T0。当。当T1被设定为方式被设定为方式3状态时,状态时,将停止计数。将停止计数。 当当M1M0=11时,时,T0工作于方式工作于方式3。 此时此时TL0和和TH0作为两个相互独立的作为两个相互独立的8位定时位定时/计数器使用。计数器使用。TL0既可定时又可计数,它使用既可定时又可计数,它使用T0的各控制位、引脚和中断源,的各控制位、引脚和中断源,即即C/、GATE、TR0、TF0、T0(P3.4引脚)、(引脚

59、)、(P3.2引脚);引脚);TH0此时只能用作内部定时功能,它借用了定时此时只能用作内部定时功能,它借用了定时/计数器计数器T1的控的控制位制位TR1和和T1的中断标志位的中断标志位TF1,其启动和停止只受,其启动和停止只受TR1控制。控制。躁砖润兜匡馋臀伯郝檀疯裤畔坍俭阜甥沫锭扬厩卿游涪驮阑媳询炕片丁韵第4部分中断系统和定时计数器第4部分中断系统和定时计数器图图4-14 定时定时/计数器计数器T0方式方式3的逻辑结构示意图的逻辑结构示意图 定时器定时器T1T1无工作方式无工作方式3 3,当定时器,当定时器T0T0工作在方式工作在方式3 3时,定时器时,定时器T1T1可设置为方式可设置为方式

60、0 0、方式、方式1 1和方式和方式2 2。 深浑柱植捏译哆笑烩跨馒滤绰汪匿柿锚厂溉察品熙讥板孪淹券便绢寿俯孰第4部分中断系统和定时计数器第4部分中断系统和定时计数器 4.4.1应用指导应用指导 1定时定时/计数器的定时计数器的定时/计数范围计数范围 定时定时/计数器工作于不同方式下的位数不同,它所计数器工作于不同方式下的位数不同,它所具有具有的计数范围也不一样:的计数范围也不一样:l 工作方式工作方式0:13位定时位定时/计数方式,因此,最多可以计数方式,因此,最多可以计到计到213,也就是,也就是8192次。次。l 工作方式工作方式1:16位定时位定时/计数方式,因此,最多可计数方式,因此

61、,最多可 以计到以计到216,也就是,也就是65536次。次。l 工作方式工作方式2和工作方式和工作方式3:都是都是8位定时位定时/计数方计数方 式,因此,最多可以计到式,因此,最多可以计到2 8,也就是,也就是256次。次。 如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?如果我们需要超过计数器计数范围的定时或计数功能,应该怎样做?4.44.4定时定时/ /计数器应用与训练计数器应用与训练倘宵刺元逸洼抱超根穗枣札簧腥填旺戍碌铸起廷浊辕短绦牲弃葵捻酸上郡第4部分中断系统和定时计数器第4部分中断系统和定时计数器 2时间常数初值的计算时间常数初值的计算 定时定时/计数器只要预设一个时间

62、常数初值,就可以完成不计数器只要预设一个时间常数初值,就可以完成不超过其计数范围的任意大小的计数。算法如下:超过其计数范围的任意大小的计数。算法如下:u 定时时间常数初值定时时间常数初值X: 方式方式0 X=8192-t(fosc/12) 方式方式1 X=65536-t(fosc/12) 方式方式2、方式、方式3 X=256-t(fosc/12) 其中其中t是需要定时的时间,单位是微秒;是需要定时的时间,单位是微秒;fosc是晶振是晶振u 计数时间常数计数时间常数X: 方式方式0 X=8192-S 方式方式1 X=65536-S 方式方式2、方式、方式3 X=256-S 说明:式中说明:式中S

63、是需要计数的次数是需要计数的次数 感沪晴荫韶返对掸尽愧页屠才四退任讫隧晰朵升癣组祈速钩兽寓晰妆餐床第4部分中断系统和定时计数器第4部分中断系统和定时计数器 假设流水线上一个包装是假设流水线上一个包装是12盒,要求每到盒,要求每到12盒就产生一盒就产生一个动作,用单片机的工作方式个动作,用单片机的工作方式0来控制,应当预置的计数初来控制,应当预置的计数初值是多少呢?值是多少呢? 对了,就是对了,就是8192-12=8180。3定时定时/计数器的初始化计数器的初始化对对80C51单片机的定时单片机的定时/计数器编程的初始化方法:计数器编程的初始化方法: 对对TMOD赋值,以确定赋值,以确定T0和和

64、T1的工作方式;的工作方式; 计算时间常数初值,并将其写入计算时间常数初值,并将其写入TH0、TL0或或TH1、 TL1; 采用中断定时方式时,需对采用中断定时方式时,需对IE赋值开中断;赋值开中断; 置位置位TR0或或TR1,启动定时,启动定时/计数器。计数器。 严辉濒竭伤职呐拙礁坏伤茵龋继缀脖浸田秤挡威众耶吴篮容舱芭墒闸求嗣第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.4.2 4.4.2 基本训练基本训练初始化训练初始化训练 例例3:某牛奶生产线上一个包装是某牛奶生产线上一个包装是12盒,要求盒,要求每生产每生产12盒就执行装箱操作,用盒就执行装箱操作,用80C51单片机来单

65、片机来控制,请编写初始化程序。控制,请编写初始化程序。 1思路与计算:思路与计算:要确定定时器(要确定定时器(T0 或或T1),),选择其工作方式。我们以选择其工作方式。我们以T0的工作方式的工作方式2为例,计为例,计算时间常数并赋值给算时间常数并赋值给TH0、TL0。 X=256-S=256-12=244=0F4H走拾铱记毅爵句靖洋睡盖绪册膘蛀时肄被赌帜活晋唬搔擎奖消肿渔幢谎迈第4部分中断系统和定时计数器第4部分中断系统和定时计数器 2 2初始化程序:初始化程序: MOV TMOD MOV TMOD,#06H #06H ;T0T0作计数器,工作于方式作计数器,工作于方式2 2 MOV TH0

66、 MOV TH0,#0F4H #0F4H ;装入时间常数初值;装入时间常数初值 MOV TL0 MOV TL0,#0F4H #0F4H ;自动重装时间常数;自动重装时间常数 MOV IE MOV IE ,#00H #00H ;用查询方式确定计满;用查询方式确定计满1212盒?盒?(或(或MOV IE MOV IE ,#82H#82H);使用);使用T0T0中断,计满中断,计满1212盒后,盒后, ;自动申请中断;自动申请中断 SETB TR0 SETB TR0 ;启动;启动T0T0波特率发生器波特率发生器 3 3总结:总结:对计数过程是否结束有查询和中断两对计数过程是否结束有查询和中断两种方法

67、,要合理选择,并在程序设计中正确体现。种方法,要合理选择,并在程序设计中正确体现。 背颁栓乘跃遗瞅嗓饼傅任况怂可魂抽臼冤傍垦术雇持蘑揣到挤徽歇倍溯樊第4部分中断系统和定时计数器第4部分中断系统和定时计数器 4.4.34.4.3应用实例应用实例 1 定时定时/计数器用于外部脉冲宽度的测量计数器用于外部脉冲宽度的测量 (1)测量原理)测量原理 可以利用定时计数器方式寄存器可以利用定时计数器方式寄存器TMOD中的门控中的门控位位GATE与与 引脚配合使用,控制定时计数器的启引脚配合使用,控制定时计数器的启动与停止:动与停止: 当当GATE1时,要求时,要求TR1l,且,且 为高电平,为高电平,才能启

68、动定时器才能启动定时器T1计数工作;如果计数工作;如果 出现低电平,则出现低电平,则T1停止计数;停止计数; 当当GATE=0时,只要时,只要TR11就可以启动定时器,就可以启动定时器,而与而与 的输入状态无关。的输入状态无关。 可以利用定时计数器方式寄存器可以利用定时计数器方式寄存器TMOD中的门控中的门控位位GATE与与 引脚配合使用,控制定时计数器的启引脚配合使用,控制定时计数器的启动与停止:动与停止: 当当GATE1时时,要求,要求TR1l,且,且 为高电平,为高电平,才能启动定时器才能启动定时器T1计数工作;如果计数工作;如果 出现低电平,则出现低电平,则T1停止计数;停止计数; 当

69、当GATE=0时,时,只要只要TR11就可以启动定时器,就可以启动定时器,而与而与 的输入状态无关。的输入状态无关。釜败衷蔼肉其滚蝎帜酱申庐读祸援校酞糊乞舱堡腾酥减击壕键氖审泌邯杆第4部分中断系统和定时计数器第4部分中断系统和定时计数器 利用上述特点,将被测脉利用上述特点,将被测脉冲信号从(冲信号从(P3.3)引入,在)引入,在T1的程序初始化中令的程序初始化中令GATE1,同时同时“SETB TR1”,这样脉冲,这样脉冲信号的上升沿就能启动信号的上升沿就能启动T1计数,计数,脉冲信号下降沿能使脉冲信号下降沿能使T1停止计停止计数。利用定时器数。利用定时器T1的计数值的计数值m乘以机器周期就可

70、以得到被测乘以机器周期就可以得到被测脉冲信号的宽度脉冲信号的宽度TW。(2)硬件电路)硬件电路 硬件电路简图如图硬件电路简图如图4-15。 乙碍曙譬奸顿绸仑澳升已替琼结克基迅童撇故静籽婿娟栗囚碌锹泄硼抿舔第4部分中断系统和定时计数器第4部分中断系统和定时计数器(3)程序设计)程序设计 利用利用80C51的内部的内部RAM30H、31H单元保存被测脉冲宽单元保存被测脉冲宽度对应的计数值。度对应的计数值。 参考程序如下:参考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV TMOD,#90H;设置控制字,;设

71、置控制字,T1工作于方式工作于方式 ; 1,GATE=1 MOV TH1,#00H ;设定计数初值为;设定计数初值为00H 玫物醇憋挡柔陌锗抡何移纶誓郊汕窒矛操兑尸溢位酋艳津亏鹊皑彤剁宙蜂第4部分中断系统和定时计数器第4部分中断系统和定时计数器 MOV TL1 MOV TL1,#00H#00HL1L1: JB P3.3 JB P3.3,L1 L1 ;等待输入变为低电平;等待输入变为低电平 SETB TR1 SETB TR1 ;预置;预置TR1=1TR1=1,准备启动,准备启动T1T1L2L2: JNB P3.3 JNB P3.3,L2 L2 ;等待上升沿,以便开始计数;等待上升沿,以便开始计数

72、L3L3: JB P3.3 JB P3.3,L3 L3 ;是高电平则计数继续;是高电平则计数继续 CLR TR1 CLR TR1 ;低电平则停止计数;低电平则停止计数 MOV A MOV A,TL1TL1 ;读低位计数值;读低位计数值 MOV 30H MOV 30H,A A ;低位计数值存于;低位计数值存于30H30H MOV A MOV A,TH1TH1 ;读高位计数值;读高位计数值 MOV 31H MOV 31H,A A ;高位计数值存于;高位计数值存于31H31H END END宫概蠢坯原色刹伴裴株挨庸袋摇决冬皮餐怂拧教巴酋琳灯富稳坛郭涵醚掐第4部分中断系统和定时计数器第4部分中断系统和

73、定时计数器 (4)总结与思考)总结与思考 定时定时/计数器还可用于测量脉冲信号的频率、周期等。本计数器还可用于测量脉冲信号的频率、周期等。本实例是利用定时实例是利用定时/计数器的门控位(计数器的门控位(GATE)测量脉冲宽度。但)测量脉冲宽度。但要注意,在晶振要注意,在晶振12MHz的情况下,被测脉冲宽度范围最大为的情况下,被测脉冲宽度范围最大为655351s=65.536ms。 ,如果要测量脉冲信号的周期,该如何去做?,如果要测量脉冲信号的周期,该如何去做? 2计数器用于绕线机的控制计数器用于绕线机的控制 绕线机常用于对电机或变压器的绕组进行绕制,图绕线机常用于对电机或变压器的绕组进行绕制,

74、图4-16是是绕线机的控制电路。当按下工作按钮以后,机器启动,绕线机绕线机的控制电路。当按下工作按钮以后,机器启动,绕线机在直流电机和减速齿轮的带动下开始工作。当绕线架上的线圈在直流电机和减速齿轮的带动下开始工作。当绕线架上的线圈绕到规定的圈数时,绕线机会自动停止绕线。如果再次按下工绕到规定的圈数时,绕线机会自动停止绕线。如果再次按下工作按钮,绕线机会重复以上过程。作按钮,绕线机会重复以上过程。淄刨涤敞蝶猎叭实偶愈梭井今规非捻预锚撅霖辑淀庄讽互遣哨华登汉焕藻第4部分中断系统和定时计数器第4部分中断系统和定时计数器图图4-16 绕线机的控制电路绕线机的控制电路控制说明:1软件控制P1.0=0时,

75、绕线机开始绕线;P1.0=1时,绕线机不绕线。 2绕线机每绕一圈,绕线机脉冲产生电路就产生一个脉冲信号。鳞升罩毅壹芍陀侗松卢欣芳推柱瓢积盖苛拇鱼肤搅揍举躬球谊元谅褂萨碘第4部分中断系统和定时计数器第4部分中断系统和定时计数器 (1)工作原理)工作原理 由于单片机复位后由于单片机复位后P1 口的输出状态全部为口的输出状态全部为1,所以,所以系统系统上电后上电后,P1.0输出高电平输出高电平“1”绕线机不工作。绕线机不工作。 当按下工作按钮以后,当按下工作按钮以后,P1.1输入低电平输入低电平“0”,当程序检,当程序检测到测到P1.1=0时,在程序指令的控制下从时,在程序指令的控制下从P1.0输出

76、低电平输出低电平“0”。绕线机开始绕线。绕线机每绕一圈,定时绕线机开始绕线。绕线机每绕一圈,定时/计数器计数器T1的输入引的输入引脚上就会产生一个负跳变的输入脉冲。因此,只要用定时脚上就会产生一个负跳变的输入脉冲。因此,只要用定时/计计数器数器T1的计数功能控制好输入脉冲的个数,就等于控制了绕的计数功能控制好输入脉冲的个数,就等于控制了绕线机的绕线圈数。线机的绕线圈数。 当绕线机缠绕到指定的圈数时,当绕线机缠绕到指定的圈数时,定时定时/计数器计数器T1引发计数引发计数中断,在程序指令的控制下,中断,在程序指令的控制下,P1.0将输出的高电平将输出的高电平“1”,使,使电机停转,制动器恢复制动,

77、于是系统回到最初的停机状态。电机停转,制动器恢复制动,于是系统回到最初的停机状态。 拜嚼俄释歧征帮饥绷颂侨词没辕至彻诬嚼浚辽连棘选驰捕煤灌醋碰殷匝拇第4部分中断系统和定时计数器第4部分中断系统和定时计数器 我们假设绕线架的规定匝数是我们假设绕线架的规定匝数是5000圈,为控制这个圈数,圈,为控制这个圈数,可以设定定时可以设定定时/计数器计数器T1用作计数器且工作在方式用作计数器且工作在方式1,于是确,于是确定其计数初值为:定其计数初值为: 初值初值=65536-5000=60536=0EC78H 所以(所以(TH1)=0ECH,(TL1)=78H(2)控制程序)控制程序 参考程序如下:参考程序

78、如下: ORG 0000H AJMP MAIN ORG 001BH AJMP COUNT ORG 0100H块醒税宏传棉梅姿黑便是店捉奋拳锐假辅几案邦霹裁云滤嘻腰她嗓怕棕伏第4部分中断系统和定时计数器第4部分中断系统和定时计数器 MAIN: MOV TMOD,#50H ;设置;设置T1为计数器,工作于方式为计数器,工作于方式1 MOV TH1,#0ECH ;设定计数初值;设定计数初值 MOV TL1,#78H MOV SP,#60H ;设堆栈指针;设堆栈指针 SETB ET1 ;开;开T1中断中断 SETB EA ;CPU开中断开中断 CLR F0 ;用户标志;用户标志F0清清0WAIT: M

79、OV C,P1.1;等待启动;等待启动 JC WAIT;P1.1=1,等待,等待 CLR P1.0;启动设备;启动设备 SETB TR0;T1开始计数开始计数梳赌命散院彼逮俏坊存翼抱蔫型墩镊泉掳雁胆峭钧蛇乱济塑篱攫施义栋蚜第4部分中断系统和定时计数器第4部分中断系统和定时计数器LOOP: JNB F0,$ ;等待计数;等待计数5000中断中断 SETB P1.0;绕线机停止工作;绕线机停止工作 CLR TR0 ;T1停止计数停止计数 CLR F0 ;清;清0 SJMP WAIT;等待重新启动;等待重新启动 ORG 0200H;T1中断服务程序起始地址中断服务程序起始地址COUNT:MOV TH

80、1,#0ECH;重新设定计数初值;重新设定计数初值 MOV TL1,#78H SETB F0;用户标志置;用户标志置1 RETI ;中断返回;中断返回 END瞳选派晌盯赌搂礼换鹅音酿唾逆移陨散冈刑罪痛门三控漱留哎民渠葫怎设第4部分中断系统和定时计数器第4部分中断系统和定时计数器.4.4课题与实训课题与实训8 简易方波发生器简易方波发生器一一.实训目的实训目的 掌握定时器初值的计算方法掌握定时器初值的计算方法 学习定时器的使用及定时中断程序的设计方法学习定时器的使用及定时中断程序的设计方法 掌握方波信号发生器的设计方法掌握方波信号发生器的设计方法二二.课题要求课题要求 1基本要求:基本要求: 利

81、用定时利用定时/计数器计数器T1,工作于方式,工作于方式0,采用查询方式,采用查询方式,在在P1.0引脚输出频率为引脚输出频率为500Hz的方波,并用示波器进行观的方波,并用示波器进行观察(晶振采用察(晶振采用12MHz)。)。 2较高要求:较高要求: 利用定时利用定时/计数器计数器T1,工作于方式,工作于方式0,采用中断方式,采用中断方式,在在P1.0引脚输出频率为引脚输出频率为500Hz的方波,并用示波器进行观的方波,并用示波器进行观察(晶振采用察(晶振采用12MHz)。)。村褪殷表换策阔硅给柴栅霖怕枕弗诸卿霍国完周卿朱廖蜗威验效化酉斩雀第4部分中断系统和定时计数器第4部分中断系统和定时计

82、数器三三.背景知识背景知识 1方波产生原理方波产生原理 使使P1.0引脚的输出状态定时翻转,则该端口能输出一定频引脚的输出状态定时翻转,则该端口能输出一定频率的方波。率的方波。 2方式方式0的时间常数初值的时间常数初值 定时定时/计数器工作于方式计数器工作于方式0状态下,定时状态下,定时/计数的长度是计数的长度是13位。应用前面给出的时间常数初值的计算公式位。应用前面给出的时间常数初值的计算公式 X=8192-t(fosc/12) 我们可以很方便地计算出时间常数初值,但在将其装入定我们可以很方便地计算出时间常数初值,但在将其装入定时时/计数器的计数器的TH、TL寄存器时,寄存器时,必须要注意:

83、将计算结果的必须要注意:将计算结果的高高8位装入位装入TH1(或(或TH0)、低)、低5位装入位装入TL1(或(或TL0),这一),这一环节是非常容易出错的。环节是非常容易出错的。 几斥牙鸥坊跃零孺蕴便见办缘迁卜义傲垮嚏噬滞杏蚁韶虐峭扶章辜馅退氟第4部分中断系统和定时计数器第4部分中断系统和定时计数器 以该实训以该实训T1方式方式0产生产生500Hz的方波(周期是的方波(周期是2ms)为例,需要进行)为例,需要进行1ms的定时,时间常数初值的定时,时间常数初值 X=8192-110-3(12106/12)=8192- 1000=7192=1C18H=0001110000011000B 以以13

84、位二进制数表示,是位二进制数表示,是11100000 11000B, 则则(TL1)=00011000B=18H,(TH1)=11100000B=0E0H 定义定义TMOD=00000000B密倔滨丁入甜硬腾离钒据翱远粱剔号烧潦阿驹昏兢吼刺鉴粘立锐龋猪麦基第4部分中断系统和定时计数器第4部分中断系统和定时计数器四四.硬件电路硬件电路该实训硬件电路十分简单,见图该实训硬件电路十分简单,见图4-17。图图4-17 简易方波发生器的硬件电路简易方波发生器的硬件电路帘哗剪隘雄惋短涨恰捧誓奴坤萌芝诵火瘁酚恨瞪手订戈九版约鸡刹嘶蕾烽第4部分中断系统和定时计数器第4部分中断系统和定时计数器五五.参考程序参考

85、程序(1) P1.0输出输出500Hz方波方波查询方式查询方式 ORG 0000H LJMP MAIN ;跳至主程序;跳至主程序 ORG 0100H MAIN:MOV TMOD,#00H;置;置T1工作于方式工作于方式0 MOV TH1,#0E0H;装入时间常数初值;装入时间常数初值 MOV TL1,#18H SETB TR1 ;启动;启动T1LOOP:JNB TF1,LOOP ;查询等待;查询等待 CLR TF1 ;清;清TF1 CPL P1.0 ;P1.0取反取反 斩凭靖甫汪蔚厅湛砚仓冰渠钮薄隐乖刽渗鹏廓符挨浓睫孤龄嫩妄烧尉赋锋第4部分中断系统和定时计数器第4部分中断系统和定时计数器 MO

86、V TH1,#0E0H;重新装入时间常数初值;重新装入时间常数初值 MOV TL1,#18H AJMP LOOP ;继续生成波形;继续生成波形 END木缚秃绕垒淤积钵袋株台周召妖舱城氯您呻庭家坞耽欺尊宋匝甘局经鳞掘第4部分中断系统和定时计数器第4部分中断系统和定时计数器 (2) P1.0输出输出500Hz方波方波中断方式中断方式 ORG 0000H LJMP MAIN ;跳至主程序;跳至主程序 ORG 001BH ;T1的中断入口地址的中断入口地址 LJMP FANGBO;转至中断服务程序;转至中断服务程序 ORG 0100H MAIN:MOV TMOD,#00H;置;置T1工作于方式工作于方

87、式0 MOV TH1,#0E0H;装入时间常数初值;装入时间常数初值 MOV TL1,#18H SETB ET1 ;允许;允许T1中断中断 SETB EA ;CPU开中断开中断 SETB TR1 ;启动;启动T1 纱钻舰嚣稽咖赵绿膛蜗乓摆遁积氮育魏靠囱级切猎灌博醇软菱番访抒挽斜第4部分中断系统和定时计数器第4部分中断系统和定时计数器 SJMP $ ;等待中断;等待中断FANGBO:CPL P1.0 ;P1.0取反取反 MOV TH1,#0E0H;重新装入时间常数初值;重新装入时间常数初值 MOV TL1,#18H RETI ;中断返回;中断返回 END六六.总结与提高总结与提高 1总结总结 本

88、实训利用定时器本实训利用定时器T1的定时功能,以两种形式输出频率的定时功能,以两种形式输出频率为为500Hz方波。在实际应用中,方波的频率可能要根据现场方波。在实际应用中,方波的频率可能要根据现场测量参数、给定参数或按照某种函数关系而变化。因此输出测量参数、给定参数或按照某种函数关系而变化。因此输出波形的频率在编程时还是未知的。波形的频率在编程时还是未知的。仆雕陋量棍虏集螟暗隘屹名阀千镭肉孵惯鱼刁旅埂菠荡彩炊瘸苞庄势穆暂第4部分中断系统和定时计数器第4部分中断系统和定时计数器2提高提高 定时定时/计数器的计时范围有限,当晶振采用计数器的计时范围有限,当晶振采用12MHz时,时,方式方式1的计时

89、时间最长,也只有的计时时间最长,也只有65.536ms。当需要定时的。当需要定时的时间超出了定时时间超出了定时/计数器的计数范围,如需定时计数器的计数范围,如需定时2秒,这时秒,这时可以采用以下两种方法来处理:可以采用以下两种方法来处理: 定时器定时器+软件计数的方法软件计数的方法 思路是:思路是:利用定时利用定时/计数器计数器T1,工作于方式,工作于方式1,实现,实现50 ms/次的定时,只要定时次的定时,只要定时40次即可实现次即可实现2s定时。定时。可以算出定时可以算出定时/计数器计数器T1工作于方式工作于方式1时,时间常数初值为时,时间常数初值为 X=65536-t(fosc/12)=

90、65536-5010-3(12106/12) =15536=3CB0H 于是(于是(TH1)=3CH ,(,(TL1)=0B0H。城贿冬境吃预程客遣绎猫僻埠垫奄藐斯马颗正涨腕习卞撞丛拯塔曳囚棕就第4部分中断系统和定时计数器第4部分中断系统和定时计数器 定义定义TMOD=00010000B,此处只给出延时,此处只给出延时2s的查询方的查询方式子程序。式子程序。DELAY:MOV R3,#40 ;设置定时器溢出次数;设置定时器溢出次数 SETB TR1 ;启动;启动T1开始计时开始计时 D1: MOV TH1,#3CH ;装入时间常数初值;装入时间常数初值 MOV TL1,#0B0HD2:JBC

91、TF1,D3;TF1为为1否否?是则跳至是则跳至D3,并清,并清TF1, AJMP D2 ;否,则跳至;否,则跳至D2 D3:DJNZ R3,D1;R3=0?不是,跳到?不是,跳到D1 CLR TR1 ;是,则停止计数;是,则停止计数 RET伯斤子创后冤洁祸骨屋鸣唁峭之夕准补熊谐颓橱互藏杀蔗勺忆撰悔貉塞莱第4部分中断系统和定时计数器第4部分中断系统和定时计数器采用两个定时器串联的方法采用两个定时器串联的方法 思路是:思路是: 将两个定时器中的一个(如将两个定时器中的一个(如T0)设置为定时方式,另)设置为定时方式,另一个(一个(T1)设置成计数方式;将定时器)设置成计数方式;将定时器T0计满产

92、生的输计满产生的输出,通过一根出,通过一根I/O口线(如口线(如P1.0)连接到计数器)连接到计数器T1的计数的计数脉冲输入端脉冲输入端P3.5,从而实现更长时间的定时。,从而实现更长时间的定时。迂暴肄偿肆胖呻漱央藩狼亮恒酱盏协莫锻普交秦砸度滦止隧尉贤夺挟襟刺第4部分中断系统和定时计数器第4部分中断系统和定时计数器.5.5中断与定时计数器综合应用举例中断与定时计数器综合应用举例 4.5.1 4.5.1 概述概述 定时定时/计数功能与中断一样,都是单片机的常用功能。计数功能与中断一样,都是单片机的常用功能。两者常常同时使用。如实训两者常常同时使用。如实训7就是简单的中断、定时综合就是简单的中断、

93、定时综合应用实例。在这类程序的编制过程中,要注意这样几个应用实例。在这类程序的编制过程中,要注意这样几个问题:问题:l 选择合适的中断和定时选择合适的中断和定时/ /计数方式。计数方式。 如外部中断是采用电平触发还是脉冲下降沿触发;定如外部中断是采用电平触发还是脉冲下降沿触发;定时时/计数是用自动重装方式还是每次定时结束后用软件重计数是用自动重装方式还是每次定时结束后用软件重装。装。徘苍杀梁脉捻镊佛诡贯宁砍坚简筒咒檬卒诀译讶抉悬址凝酉扇赵彬国艺藕第4部分中断系统和定时计数器第4部分中断系统和定时计数器l 确定定时结束的判别方法,用中断还是查询确定定时结束的判别方法,用中断还是查询。 如采用中断

94、,与其它中断的优先级如何确定,是否会影如采用中断,与其它中断的优先级如何确定,是否会影响系统功能。响系统功能。l 正确初始化。正确初始化。l 合理分配控制功能。合理分配控制功能。 .5.2课题与实训课题与实训9 音乐门铃音乐门铃一一.实训目的实训目的 1. 掌握中断与定时掌握中断与定时/计数综合程序的设计方法计数综合程序的设计方法 2.学习音乐门铃的设计过程学习音乐门铃的设计过程二二.课题要求课题要求 在单片机在单片机P1.0引脚外接扬声器,唱出祝你生日快乐歌。引脚外接扬声器,唱出祝你生日快乐歌。蛛鸡杖每痔要梢苛泰剧惶厂纳滔琐蘸莹寓肾缉淖疟骑匝敏硅戈滋谈菩塔丧第4部分中断系统和定时计数器第4部

95、分中断系统和定时计数器三三.背景知识背景知识 1.音频脉冲的产生音频脉冲的产生 声音的频谱范围约在几十到几千赫兹,若能利用程序来控制声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的单片机某个口线的“高高”电平或电平或“低低”电平,则在该口线上就电平,则在该口线上就能产生一定频率的方波,接上喇叭就能发出一定频率的声音,能产生一定频率的方波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制若再利用延时程序控制“高高”“低低”电平的持续时间,就能改电平的持续时间,就能改变输出频率,从而改变音调。变输出频率,从而改变音调。 例如,例如,要产生中音要产生中音1。从表。从表4-5可

96、知,中音可知,中音1的频率为的频率为523Hz,周期,周期T=1/523=1912s,其半周期为,其半周期为1912/2=956s,因此只,因此只要在要在P1.0引脚产生半周期为引脚产生半周期为956s的方波,即可听到持续的的方波,即可听到持续的1音。音。C调各音符频率与计数初值的对应表如下:调各音符频率与计数初值的对应表如下:淖刚饶天瞎恒增眠糯办时搏城寂届啃瘴漱攘营肥佐暮齐熙滋钻苛莫麓簿慢第4部分中断系统和定时计数器第4部分中断系统和定时计数器注:不发音的简谱码用注:不发音的简谱码用“0”表示表示溢问盒北槛榷翻穷蜒墒絮努唇醚俞彬座碴沫鸥异鼎钒赌妮菊恕尔篙晋币卉第4部分中断系统和定时计数器第4

97、部分中断系统和定时计数器 2音乐节拍的生成音乐节拍的生成 要唱出一首歌,只产生出音频脉冲还不够,还要考虑节要唱出一首歌,只产生出音频脉冲还不够,还要考虑节拍。拍。 定义:每个音符占用一个字节,字节的高定义:每个音符占用一个字节,字节的高4位代表音符的位代表音符的高低,低高低,低4位表示该音符的节拍,位表示该音符的节拍,如果一拍为如果一拍为0.4秒,则秒,则1/4拍拍是是0.1秒,只要设定延迟时间就可获得节拍的时间。我们也可秒,只要设定延迟时间就可获得节拍的时间。我们也可以设以设1/4拍为拍为1个个DELAY,则则1拍应该是拍应该是4个个DELAY,只要求得,只要求得1/4拍的拍的DELAY时间

98、,其余的节拍就是它的倍数。见表时间,其余的节拍就是它的倍数。见表 表表4-6 节拍与节拍码对照表节拍与节拍码对照表隅钩岔笺酌牵吞赠氮椎纪俘血乞县咐脑妒喳笺睫羌喇圭唐续纽既聘钧故耘第4部分中断系统和定时计数器第4部分中断系统和定时计数器 3.建立音乐的步骤:建立音乐的步骤:l 先把谱的音符找出,然后由上表建立时间常数初值先把谱的音符找出,然后由上表建立时间常数初值T的顺序的顺序表,标号为表,标号为TABLE1。l 建立音符和节拍表,标号为建立音符和节拍表,标号为TABLE,将构成发音符的计数,将构成发音符的计数值放在其中。值放在其中。l TABLE表的结构为:表的结构为:简谱码(代表音符)为高简

99、谱码(代表音符)为高4位,位,节拍节拍码(表示节拍数)为低码(表示节拍数)为低4位,位,在唱歌程序中对每一个有节拍的在唱歌程序中对每一个有节拍的音符能通过设计共同生成音符节拍码,本程序的音符节拍码表音符能通过设计共同生成音符节拍码,本程序的音符节拍码表见表见表4-5。陡牟晃安匣赃吁漆翼镀霞惺圭舆锹卖统幢去路扣捣遁胚酸词谎润哩钟橇巧第4部分中断系统和定时计数器第4部分中断系统和定时计数器(1)1/4拍的延迟时间拍的延迟时间=187毫秒毫秒DELAY:MOV R5,#02 D1:MOV R4,#187 D2:MOV R3,#248 DJNZ R3,$ DJNZ R4,D2 DJNZ R5,D1 D

100、JNZ R6,DELAY RET (2)歌谱)歌谱 生日快乐歌生日快乐歌 C3/45 . 5 6 5 7 -5 . 5 6 5 -祝祝 你生日你生日 快快 乐乐 祝祝 你你 生生 日日 快快 乐乐5 . 5 7 6-我我 们高声们高声 歌歌 唱唱 祝祝 你生日你生日 快快 乐乐 艰扒灶本箔讼疚园漳包媚滁踊虽辨粳沦思板桓侩段男认盒颅均而胜能悼豪第4部分中断系统和定时计数器第4部分中断系统和定时计数器四四.硬件电路硬件电路图图4-18 音乐的应用音乐的应用 电路电路 小遭夏岔诀鞍抵回傅嘱海榷欠驮傣桑变蜡田泳燃趁檬婉厦寄酷缝棱从梢淌第4部分中断系统和定时计数器第4部分中断系统和定时计数器五五.参考程

101、序参考程序 ORG 0000H LJMP MAIN ;跳至主程序;跳至主程序 ORG 001BH ;T1的中断入口地址的中断入口地址 LJMP TIM1 ;转至中断服务程序;转至中断服务程序 ORG 0100H MAIN:MOV TMOD,#10H ;置;置T1工作于方式工作于方式1 SETB ET1 ;开;开T1中断中断 SETB EA ;CPU开中断开中断 MAIN1: MOV 60H,#00H ;取简谱码指针;取简谱码指针 NEXT: MOV A,60H ;简谱码指针装入;简谱码指针装入A MOV DPTR,#TABLE ;指向简谱码;指向简谱码TABLE表地址表地址 MOVC A,A+

102、DPTR ;简谱码存入;简谱码存入A MOV R1,A ;简谱码暂存;简谱码暂存R1 JZ STOP ;是否取到结束码;是否取到结束码00? 箕瞪董夷睫畸斩彤捏捂枪柿炮停吐拴禽承冀剔涅插康冶蛀辫吸眩诫釉匡牲第4部分中断系统和定时计数器第4部分中断系统和定时计数器 ANL A,#0FH ;没有,则取低;没有,则取低4位的节拍码位的节拍码 MOV R6,A ;取到的节拍码存入;取到的节拍码存入R6 MOV A, R1 ;将取到的简谱码再装入;将取到的简谱码再装入A SWAP A ;高低;高低4位交换位交换 ANL A,#0FH ;取低;取低4位的音符码位的音符码 JNZ SING ;取到的音符码是

103、否为;取到的音符码是否为0? CLR TR1 ;是,则不发音;是,则不发音 AJMP DT ;转至;转至DTSING: DEC A ;对取到的非;对取到的非0音符码减音符码减1 MOV 22H,A ;音符码暂存;音符码暂存22H RL A;乘;乘2 MOV DPTR,#TABLE1 ;至;至TABLE1取与高字节相取与高字节相 ;对应的频率初值;对应的频率初值 握辩馅荡崇漆官屡瞬略欢涡灵升高揣蓬帖吗剔靖辟就帅乾怔义灿嫌迹庄叭第4部分中断系统和定时计数器第4部分中断系统和定时计数器 MOVC A,A+DPTR ; MOV TH1,A ;取到的高字节存入;取到的高字节存入TH1 MOV 21H,A

104、 ;取到的高字节存入;取到的高字节存入21H MOV A, 22H ;重装取到的音符码;重装取到的音符码 RL A;乘;乘2 INC A;加;加1 MOVC A,A+DPTR ;至;至TABLE1取与低字节相对取与低字节相对 ;应的频率初值;应的频率初值 MOV TL1,A ;取到的低字节存入;取到的低字节存入TL1 MOV 20H,A ;取到的低字节存入;取到的低字节存入20H SETB TR1 ;启动;启动T1,开始计时,开始计时DT: LCALL DELAY ;1/4拍的基本单位时间拍的基本单位时间187毫秒毫秒 INC 60H ;将简谱码指针加;将简谱码指针加1 执炯刀汛藩馆各志沃查谨

105、稼惜缎蜡哼花尾阎卞搭沁痛腥炎项误丧予莽怖息第4部分中断系统和定时计数器第4部分中断系统和定时计数器 AJMP NEXT ;取下一个码;取下一个码STOP: CLR TR1 ;计时停止;计时停止 AJMP MAIN1 ;重复循环;重复循环 TIM1: PUSH ACC ;保护;保护A值值 PUSH PSW ;保护;保护PSW MOV TH1,21H ;重装入时间常数初值;重装入时间常数初值 MOV TL1,20H ;重装入时间常数初值;重装入时间常数初值 CPL P1.0 ;P1.0取反,发声取反,发声 POP PSW ;恢复;恢复PSW POP ACC ;恢复;恢复A RETIDELAY: M

106、OV R5,#2 ;187毫秒子程序,决定音乐节拍毫秒子程序,决定音乐节拍 D2: MOV R4,#187 ;阎浆惰虏趴市竭迂烘暑旧尤菱缉滁书闭邪意龚蹿皇腑痰阴欣它嗜树送履凑第4部分中断系统和定时计数器第4部分中断系统和定时计数器 D3: MOV R3,#248; DJNZ R3,$; DJNZ R4,D3; DJNZ R5,D2; DJNZ R6,DELAY; RETTABLE1: DW 64260,64400,64524,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217 TABL

107、E: ;1 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H,04H 属藐忆驮米惕邓附砖副犊肠耘鸣伴孺腻慰戍警豆雪乎坏堂妹恩懒先姨轨佩第4部分中断系统和定时计数器第4部分中断系统和定时计数器DB 0E2H,01H,0E1H,0D4H,0B4HDB 0C4H,0B4H,04HDB 00END六六.总结与提高总结与提高制作音乐门铃的关键就是对乐谱建表,包括制作音乐门铃的关键就是对乐谱建表,包括T值表和简值表和简码表。码表。以表以表4-5的的T值表为例,对于简单的乐谱,只需再增加高值表为例,对于简单

108、的乐谱,只需再增加高音区和低音区的几个音符,其余部分不变;而简码表则不然,音区和低音区的几个音符,其余部分不变;而简码表则不然,它要随着每个音的音符和节拍而定,因曲目而异。它要随着每个音的音符和节拍而定,因曲目而异。;2 DB 82H,01H,81H,0F4H,0D4H DB 0B4H,0A4H,94H蛀骨梭圣挺磅谩息春馆还亲缴哦蝉彰酮导审蓬淌瑟匝谊锐菌启骡窟掣饺纂第4部分中断系统和定时计数器第4部分中断系统和定时计数器 下面给出两只老虎的乐谱,你能制作出它的音乐门下面给出两只老虎的乐谱,你能制作出它的音乐门铃吗?铃吗? 两只老虎两只老虎 4/4 1 2 3 11 2 3 13 4 53 4

109、5 两只老虎两只老虎 两只老虎两只老虎 跑得快跑得快跑得快跑得快 5 6 5 4 3 15 6 5 4 3 11 5 11 5 1 一只没有耳朵一只没有耳朵 一只没有尾巴一只没有尾巴 真奇怪真奇怪 真奇怪真奇怪 缔杜倚痉推诊晌隧氰却劈橡适札辖眉码指教袁毛贡众掺赘首虚化揖腿悄辽第4部分中断系统和定时计数器第4部分中断系统和定时计数器4.64.6外部中断源的扩展外部中断源的扩展 在单片机控制系统中,外部中断的使用非常重要,通过在单片机控制系统中,外部中断的使用非常重要,通过它可以中断它可以中断CPU的运行,转去处理更为紧迫的外部事务,如的运行,转去处理更为紧迫的外部事务,如报警、电源掉电保护等。报

110、警、电源掉电保护等。 80C51单片机仅提供了两个外部中断源,在实际控制系单片机仅提供了两个外部中断源,在实际控制系统中可能出现多个外部中断,因此有必要对外部中断源进行统中可能出现多个外部中断,因此有必要对外部中断源进行扩展。扩展。4.6.14.6.1利用定时器溢出中断扩展外部中断源利用定时器溢出中断扩展外部中断源 即把内部不使用的定时即把内部不使用的定时/计数器出借给外部中断使用,计数器出借给外部中断使用,方法如下:方法如下: 将将80C51单片机闲置的定时单片机闲置的定时/计数器的初值设为全计数器的初值设为全1,只,只要从计数引脚(要从计数引脚(T0/T1)输入一个脉冲就可以使其引起中断。

111、)输入一个脉冲就可以使其引起中断。攒筐纳卢盐躺哇婴郡仔肾免妙浚托奴熟壕沟菊显涂柴栏棱痹况稀夺解笔坷第4部分中断系统和定时计数器第4部分中断系统和定时计数器可以采用下面的程序初始化可以采用下面的程序初始化T1: MOV TMOD,#60H ;T1工作于方式工作于方式2 MOV TL1,#0FFH;设为全;设为全1 MOV TH1,#0FFH SETB TR1 ;启动;启动T1 SETB ET1 ;开;开T1中断中断 SETB EA ;CPU开中断开中断 中断服务程序中断服务程序 RETI召晰咀媳噬桐动奢喇龋漫烷肮墩亦穆肚克此羽玉愈躲选便货衙寅引诈婪箭第4部分中断系统和定时计数器第4部分中断系统和

112、定时计数器4.6.24.6.2利用中断与查询相结合的方式扩展利用中断与查询相结合的方式扩展 电路如图电路如图419所示,当所示,当CPU检测到检测到 的中断请求信的中断请求信号时,由号时,由P1口查询判断中断源,点亮相应的发光二极管。口查询判断中断源,点亮相应的发光二极管。 源程序如下:源程序如下: ORG 0000H AJMP MAIN ;设主程序入口设主程序入口 ORG 0003H ; 中断入口中断入口 AJMP LL ;转中断服务程序转中断服务程序 ORG 0100H ;主程序起始地址主程序起始地址 MAIN:ORL P1,#0FFH ;P1口置输入口置输入 SETB IT0 ;设;设

113、边沿触发边沿触发SETB EX0 ;允许;允许 中断中断SETB EA ;开中断;开中断AJMP $ ;等待中断;等待中断耘砧尾劈归第搓燃蜡陌累烹派谦撵擂契标熄柜督师构穴哭屎铜羌耶咐热率第4部分中断系统和定时计数器第4部分中断系统和定时计数器ORG 0200H LL: JNB P1.0, LED1 ;IN0没中断,再判断下一没中断,再判断下一 个个 CLR P1.4 ;IN0中断,灯中断,灯L0亮亮LED1: JNB P1.1, LED2 ;IN1未中断未中断 CLR P1.5 ;IN1中断,中断,L1亮亮LED2: JNB P1.2, LED3 ;IN2未中断未中断 CLR P1.6 ;IN

114、2中断,中断,L2亮亮LED3 :JNB P1.3, END0 ;IN3未中断未中断 CLR P1.7 ;IN3中断,中断,L3亮亮END0 :RETI ;返回;返回 END 除此之外,还可以采用串行口方式和中断控制芯片除此之外,还可以采用串行口方式和中断控制芯片82598259来扩展。来扩展。 酵贝晤睦赃砖滞苹切宛弹丈兼暂阴圭训惕杠皆道睛滴脚区酮僳汲袍英泽垄第4部分中断系统和定时计数器第4部分中断系统和定时计数器本章小结本章小结 中断系统及定时中断系统及定时/计数器是单片机的重要组成部分。计数器是单片机的重要组成部分。利用中断技术能够更好地发挥单片机系统的处理能力,利用中断技术能够更好地发挥

115、单片机系统的处理能力,有效地解决慢速工作的外设与快速工作的有效地解决慢速工作的外设与快速工作的CPU之间的矛之间的矛盾,从而提高了盾,从而提高了CPU的工作效率,增强了它的实时处理的工作效率,增强了它的实时处理能力。能力。 中断处理一般包括中断请求、中断响应、中断服务、中断处理一般包括中断请求、中断响应、中断服务、中断返回四个环节。中断返回四个环节。 80C51单片机中断系统有单片机中断系统有5个中断源,即外部中断个中断源,即外部中断0和外部中断和外部中断1,定时,定时/计数器计数器T0和和T1的溢出中断,串行口的溢出中断,串行口的发送和接收中断。这的发送和接收中断。这5个中断源可以分成两个中

116、断优先个中断源可以分成两个中断优先级,由用户对中断优先级寄存器级,由用户对中断优先级寄存器IP赋值来实现。赋值来实现。 栏虹戊产恫天向伙坑缠弹驳匝肛途晒依婶肛砷译韵孕苦渐让杏夜伐逊峭格第4部分中断系统和定时计数器第4部分中断系统和定时计数器CPU对所有中断源以及某个中断源的开放和禁止是由中断对所有中断源以及某个中断源的开放和禁止是由中断允许寄存器允许寄存器IE管理的;管理的;5个中断源的中断请求是借用定时个中断源的中断请求是借用定时/计计数器的控制寄存器数器的控制寄存器TCON和串行控制寄存器和串行控制寄存器SCON中的有关中的有关位作为标志,由位作为标志,由CPU在每个机器周期自动进行查询的

117、方式在每个机器周期自动进行查询的方式实现的。实现的。80C51内部有两个内部有两个16位的定时位的定时/计数器计数器T0和和T1,它们均可以,它们均可以工作于定时或计数模式(但工作于定时或计数模式(但T0或或T1不能同时工作于这两种不能同时工作于这两种模式下)。不论是作定时器,还是计数器,它们都有模式下)。不论是作定时器,还是计数器,它们都有4种工种工作方式,由作方式,由TMOD中的中的M1M0来设定。来设定。 定时定时/计数器的启、停由计数器的启、停由TMOD中的中的GATE位和位和TCON中中的的TR0、TR1位控制(软件控制),或由位控制(软件控制),或由 、 引脚输入的外部信号控制(硬

118、件控制)。引脚输入的外部信号控制(硬件控制)。茫图究苔嘱励寐欢候课徊湛巳撩唤馋束寂幼根努试铰巢厂授岔技橙腮恿芜第4部分中断系统和定时计数器第4部分中断系统和定时计数器 思考题与习题思考题与习题 180C51有几个中断源?有几个中断标志?这些中断标有几个中断源?有几个中断标志?这些中断标 志如何置位、复位?志如何置位、复位? 280C51在响应中断的过程中,在响应中断的过程中,PC值如何变化?值如何变化? 3设系统有两个中断源,分别是外部中断设系统有两个中断源,分别是外部中断0和串行口中和串行口中 断,要求串行口中断优先级高,试编制它们的初始化断,要求串行口中断优先级高,试编制它们的初始化 程序

119、。程序。 4设在单片机的设在单片机的P1.0引脚接一个开关,用引脚接一个开关,用P1.1控制一个控制一个 发光二极管。要求当开关按下时发光二极管。要求当开关按下时P1.1能输出低电平,能输出低电平, 控制发光二极管发亮,请设计相关电路,并编写一个控制发光二极管发亮,请设计相关电路,并编写一个 查询方式的控制程序。如果开关改接在(查询方式的控制程序。如果开关改接在(P3.3脚)改脚)改 用中断方式,编写一个控制程序。用中断方式,编写一个控制程序。 5某啤酒自动生产线上,需要每生产某啤酒自动生产线上,需要每生产10瓶执行自动装箱瓶执行自动装箱 操作(转至装箱操作程序入口即可),试编程实现之。操作(

120、转至装箱操作程序入口即可),试编程实现之。 潘仗盖褥约猜怪记匆衡撕晾屡吮闻杜千质气瞒另乱卵臂蜕揣秆逗摆帮躺惭第4部分中断系统和定时计数器第4部分中断系统和定时计数器图图4-20 习题习题6图图 7 当定时当定时/计数器计数器T0用作方式用作方式3时,定时时,定时/计数器计数器T1可以可以 工作在何种方式下?如何控制工作在何种方式下?如何控制T1的开启和关闭?的开启和关闭?6已知晶振为已知晶振为12MHz,试编程实现在,试编程实现在P1.0输出如下波形。输出如下波形。8按下列要求分别设置相关控制位。按下列要求分别设置相关控制位。 为边沿触发方式为边沿触发方式; 为电平触发方式;为电平触发方式;

121、T1启动运行启动运行 ; T0停止运行。停止运行。9用一条指令分别实现下列要求:用一条指令分别实现下列要求: 、T0开中断,其余禁止中断;开中断,其余禁止中断; T0、串行口开中断,其余禁止中断;、串行口开中断,其余禁止中断; 全部开中断;全部开中断; 全部禁止中断;全部禁止中断;垂叼抹肝沧屠唇熊咐阁底挨膛唬颧菱嗽锡帝寝选破嘱猿盂酮拭加供惮铣隐第4部分中断系统和定时计数器第4部分中断系统和定时计数器 、T1开中断,其余位保持不变;开中断,其余位保持不变; 、T0禁止中断,其余位允许中断;禁止中断,其余位允许中断;10已知已知TMOD的值,试分析的值,试分析T0、T1的工作状态。的工作状态。 T

122、MOD=68H TMOD=52H TMOD=0CBH TMOD=93H11按下列要求设置定时初值,并设置按下列要求设置定时初值,并设置TH和和TL的初值。的初值。 fosc=12MHz、T0方式方式1,定时,定时50ms; fosc=6MHz、T1方式方式2,定时,定时300s; fosc=12MHz、T1方式方式1,定时,定时15ms。12设计一个比赛抢答器,电路如图设计一个比赛抢答器,电路如图4-21所示,所示,P1.0 P1.3分别接按钮分别接按钮S1S4,当其中任何一个按钮按下,当其中任何一个按钮按下 时,都能立即从时,都能立即从P3.3发出铃声信号,并点亮相应的发出铃声信号,并点亮相

123、应的 发光二极管。即发光二极管。即S1点亮点亮VL1,S2点亮点亮VL2,S3点亮点亮 VL3,S4点亮点亮VL4。脆习闰巡怖呼绪寅晶晾邯阀脏龙折浮晰狸万膀蛆最购陋庭密揍耿你葫留顾第4部分中断系统和定时计数器第4部分中断系统和定时计数器13编程实现编程实现80C51单片机单步工作。电路如图单片机单步工作。电路如图4-22,要求,要求利用外部中断来实现每按一次按键执行一条指令。利用外部中断来实现每按一次按键执行一条指令。 图图4-21 习题习题12电路电路图图4-22 习题习题13电路电路顶烧棚呢握杯摆察茅叠娇翱沟庭锰逸抵棍毫师串精奖能崩摄豺暑笨伎乘醇第4部分中断系统和定时计数器第4部分中断系统和定时计数器

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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