- 1、本文档共276页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
因为响应串口中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位来判定,然后才清除。所以串口中断请求撤销只能使用软件在中断服务程序中把串行口中断标志位TI、RI清0。6.8中断函数为直接使用C51编写中断服务程序,C51中定义了中断函数。由于C51编译器在编译时对声明为中断服务程序的函数自动添加相应现场保护、阻断其他中断、返回时自动恢复现场等处理的程序段,因而在编写中断函数时可不必考虑这些问题,减小编写中断服务程序烦琐程度。中断服务函数的一般形式为:函数类型函数名(形式参数表)interruptnusingn关键字interrupt后面的n是中断号,对于8051单片机,n的取值为0~4,编译器从8×n+3处产生中断向量。AT89S51中断源对应的中断号和中断向量见表6-3。AT89S51内部RAM中可使用4个工作寄存器区,每个工作寄存器区包含8个工作寄存器(R0~R7)。关键字using后面的n用来选择4个工作寄存器区。using是一选项,如不选,中断函数中的所有工作寄存器内容将被保存到堆栈中。表6-3AT89S51单片机的中断号和中断向量中断号n中断源中断向量(8*n+3)0外部中断00003H1定时/计数器T0000BH2外部中断10013H3定时/计数器T1001BH4串行口0023H其他值保留8*n+3关键字using对函数目标代码的影响如下:在中断函数的入口处将当前工作寄存器区内容保护到堆栈中,函数返回前将被保护的寄存器区内容从堆栈中恢复。使用using在函数中确定一个工作寄存器区须十分小心,要保证任何工作寄存器区的切换都只在指定的控制区域中发生,否则将产生不正确的函数结果。例如,外中断1()中断服务函数如下:voidint1()interrupt2using0 //中断号n=2,选择0区工作寄存器区中断调用与标准C的函数调用是不一样的,当中断事件发生后,对应的中断函数被自动调用,即没有参数,也没有返回值,会带来如下影响。(1)编译器会为中断函数自动生成中断向量。(2)退出中断函数时,所有保存在堆栈中的工作寄存器及特殊功能寄存器被恢复。(3)在必要时特殊功能寄存器Acc、B、DPH、DPL以及PSW的内容被保存到堆栈中。编写中断程序,应遵循以下规则:(1)中断函数没有返回值,如果定义一个返回值,将会得到不正确结果。建议将中断函数定义为void类型,明确说明无返回值。(2)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。(3)任何情况下都不能直接调用中断函数,否则会产生编译错误。因为中断函数的返回是由汇编语言指令RETI完成的。RETI指令会影响AT89S51硬件中断系统内的不可寻址的中断优先级寄存器的状态。如没有实际中断请求情况下,直接调用中断函数,也就不会执行RETI指令,其操作结果有可能产生一个致命错误。(4)如在中断函数中再调用其他函数,则被调用的函数所用的寄存器区必须与中断函数使用的寄存器区不同。6.9中断系统的应用本节通过几个例程介绍有关中断应用程序的编写。6.9.1单一外中断的应用【例6-1】在单片机P1口上接有8只LED。在外部中断0输入引脚(P3.2)接一只按钮开关K1。要求将外部中断0设置为电平触发。程序启动时,P1口上的8只LED全亮。每按一次按钮开关K1,使引脚接地,产生一个低电平触发的外中断请求,在中断服务程序中,让低4位的LED与高4位的LED交替闪烁5次。然后从中断返回,控制8只LED再次全亮。原理电路及仿真结果见图6-9。图6-9利用中断控制8只LED交替闪烁1次的电路参考程序如下:#includereg51.h#defineucharunsignedcharvoidDelay(unsignedinti) //延时函数Delay(),i形式参数,不能赋初值{ unsignedintj; for(;i0;i--) for(j=0;j333;j++)//晶振为12MHz,j选择与晶振频率有关 {;} //空函数}voidmain() //主函数{ EA=1; //总中断允许 EX0=1; //允许外部中断0中断 IT0=1; /
您可能关注的文档
- 单片机原理与应用设计(C51编程+Proteus仿真)(第4版)课件 张毅刚 第1章 单片机概述;第2章 内部硬件结构.ppt
- 单片机原理与应用设计(C51编程+Proteus仿真)(第4版)课件 张毅刚 第11章 DAC与ADC;第12章 应用系统设计.ppt
- 2010-2023历年河北省衡水市冀州中学高三上学期第一次月考政治试卷(带解析)版.docx
- [北京]2025年北京市大兴区教育委员会所属事业单位面向应届生招聘教师150人笔试历年参考题库附带答案详解.docx
- [南通]2024年江苏南通市崇川区区属国有公司招聘工作人员16人笔试历年参考题库附带答案详解.docx
- [南京]江苏南京市公安局六合分局警务辅助人员招聘25人笔试历年参考题库附带答案详解.docx
- [天津]2025年天津市医药科学研究所(天津市医药与健康研究中心)招聘笔试历年参考题库附带答案详解.docx
- 2010-2023历年江苏省高三化学一轮过关测试(7).docx
- [大连]2025年辽宁大连市甘井子区教育系统自主招聘应届生89人笔试历年参考题库附带答案详解.docx
- [内江]2024下半年四川内江市公安局招聘警务辅助人员41人笔试历年参考题库附带答案详解.docx
- [丽江]2025年云南丽江市第二人民医院招聘第一批编外工作人员20人笔试历年参考题库附带答案详解.docx
- [四川]2024下半年四川省高级人民法院下属事业单位招聘3人笔试历年参考题库附带答案详解.docx
- [中央]2025年国家电网有限公司客户服务中心高校毕业生招聘(第一批)笔试历年参考题库附带答案详解.docx
- [咸宁]2024年湖北咸宁市通山县第二批大学生乡村医生专项招聘4人笔试历年参考题库附带答案详解.docx
- 2010-2023历年河北馆陶一中高一下期期中考试政治卷(带解析)版.docx
- [哈尔滨]2024年黑龙江哈尔滨商业大学招聘33人笔试历年参考题库附带答案详解.docx
- ASTMB标准号中英文对照要点.pdf
- 高中生物学真实性任务布置与学生自我评价能力提升的方法初探.docx
- 谈反腐影视的人物塑造.docx
- [乌鲁木齐]2025年中国铁路乌鲁木齐局招聘本科及以上学历毕业生694人笔试历年参考题库附带答案详解.docx
最近下载
- lng接收站工艺培训计划.docx VIP
- 五懂五会五能员工必备安全技能手册.pdf
- 化妆品行业化妆品生产厂复工安全培训.pptx
- 2024年10月13日云南省税务系统遴选笔试真题及答案解析.doc VIP
- 2023年中考数学几何模型——动点最值之瓜豆模型(讲+练)(原卷版).pdf VIP
- (新统编版)语文四年级下册 第一单元集体备课指导 课件.pptx
- 四川省2023-2024学年 职教高考联合体第4次模拟考试-智能制造类应知+应会(含答案).pdf VIP
- 1危险化学品磷酸(正磷酸)的危险、有害特性表MSDS.docx
- 2《陈涉世家》精省公开课一等奖全国示范课微课金奖PPT课件.pptx
- 攀枝花学院2020-2021学年第1学期《高等数学(上)》期末考试试卷(A卷)及标准答案.pdf
文档评论(0)