欢迎来到天天文库
浏览记录
ID:46869596
大小:519.50 KB
页数:45页
时间:2019-11-28
《片机内部资源的编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章单片机内部资源的编程教学要求理解中断的概念及中断系统功能;掌握外部中断的应用、外部中断的扩展以及编写外部中断服务程序的方法;熟悉定时器/计数器的结构与工作方式;掌握定时器/计数器的应用及编写定时器/计数器中断服务程序的方法;掌握相关的特殊功能寄存器在外部中断、定时器/计数器中断中的应用。1.单片机应用系统使用中断技术的优点(1)能实现单片机与多个外围设备并行工作,提高了单片机的利用率及数据的输入/输出效率。(2)能对单片机运行过程中某个事件的出现或突然发生的故障做到及时发现并进行自动处理,即实现实时处理。(3)能使我们通过键盘发出请求,随时对运行中的计算机进行干预,即可以实现人机
2、联系。(4)能实现多道程序的切换运行。(5)能在多机系统中实现各处理机之间的信息交换和任务切换。2.中断的概念所谓中断就是当单片机执行主程序时,系统中出现某些急需处理的异常情况或特殊请求(中断请求),单片机暂时中止现行的程序,而转去对随机发生的更紧迫的事件进行处理(中断响应),在处理完毕后,单片机又自动返回(中断返回)原来的主程序继续运行,如图6.1所示。图6.1中断处理过程执行主程序主程序继续执行主程序断点中断请求中断响应执行中断处理程序中断返回3.中断处理流程CPU响应中断请求后,就立即转入执行中断服务程序。不同的中断源、不同的中断要求可能有不同的中断处理方法,但它们的处理流程一般
3、都如下所述。1)现场保护和现场恢复2)中断打开和中断关闭3)中断服务4)中断返回4.MCS-51的中断源8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。例题P3.2引脚接有按钮或开关,按下此按钮式开关P1.0引脚所接的LED点亮,再次按下后该LED熄灭,由此反复。参考程序:#includeSbitLED=P0^0;voidmain(){LED=1;EA=1;EX0=1;//IE=0X81;TCON=0
4、X01;//IT0=1;While(1);}//INT0中断函数voidexternal_interrupt_0()interrupt0{LED=!LED;}MCS-51的对中断的开放和屏蔽是由中断允许寄存器IE(A8H)控制来实现的,IE的结构格式如下。IED7D6D5D4D3D2D1D0EA--ESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8HEA:中断总控制位,EA=1,CPU开放中断。EA=0,CPU禁止所有中断。EX1:外中断1中断控制位,EX1=1,允许外中断1中断,EX1=0,禁止外中断1中断。EX0:外中断0中断控制位,EX0=1,允许外中断0中断,
5、EX0=0,禁止外中断0中断。TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88HTCON88HIE0:外部边沿触发中断0请求标志,其功能和操作类似于TF0。IT0:外部中断0类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。IT0=1,边沿触发。IT0=0是电平触发。IE1:外部边沿触发中断1请求标志,其功能和操作类似于IE0。IT1:外部中断1类型控制位,通过软件设置或清除,用于控制外中断的触发信号类型。其功能和操作类似于IE0。IPD7D6D5D4D3D2D1D0---PSPT1
6、PX1PT0PX0位地址BCHBBHBAHB9HB8HPX1:外中断1优先级控制位。PX1=1,声明外中断1为高优先级中断,PX1=0定义外中断1为低优先级中断。PX0:外中断0优先级控制位。PX0=1,声明外中断0为高优先级中断,PX0=0定义外中断0为低优先级中断。IPB8H怎样编制单片机中断程序?从上面的任务程序中,我们来体会以下中断服务程序的编制方法。(1)首先必须对中断系统进行初始化,包括:1)开中断,即设定IE寄存器。2)设定中断优先级,即设置IP寄存器。如上面程序中的PX0=1;设外中断0为高优先级3)如果是外部中断,还必须设定中断响应方式,即设定IT0、IT1位。中断服
7、务函数采用扩展属性的函数进行语法定义,格式:返回值函数名interruptn其中:n对应中断源的编号,其值0~4分别对应外中断0,定时器0中断,外中断1,定时器1中断和串行口中断课堂练习参考《单片机C语言程序设计实训100例》59页例3.24,编程实现以下功能:每按一下计数键,数码管显示数字加1,当按下清零键时,数码管显示清零。#include#defineucharunsignedchar#defineuintunsigne
此文档下载收益归作者所有