1.中断方式编程
单片机的工作因为要求处理突发事件需暂时被打断,这样主程序和中断服务程序应做好功能层次设计,其编程步骤为:主程序确定程序入口,设置SP指针、中断优先级,控制中断源的操作(如中断触发方式、定时器方式),允许中断,开放中断和等待中断等;中断服务子程序完成中断功能。
【例6-5】 使用外部中断0编程,当INT0发生中断请求时,把R2的内容左移一位送P1口。
在中断方式下,单片机一直在执行主程序,当发生INT0中断时,立即响应中断,暂停主程序,转到INP0开始执行中断子程序,中断子程序执行完成后,又返回主程序工作,可提高单片机执行效率。
2.查询中断方式编程
采用查询方式处理中断事件,应在主程序中设置好中断标志。这种方式编程比较简单,但会浪费CPU的时间,适合于单片机工作任务少、其全部时间都可以用于等待中断发生的情况。
【例6-6】 使用外部中断1作信号输入,并以查询方式编程,当INT1发生中断请求信号时,把R2的内容左移一位送P2口。
在查询方式下,单片机的CPU应不断查询标志位是否被置位,当没有中断发生时,需要一直等待中断的发生,在此期间不能处理其他工作或事件,占用CPU大量时间,无法实现并行工作处理,CPU运行效率很低。
3.中断应用编程
中断服务程序是具有特定功能的独立程序段,它以中断源的特定任务或要求编写程序,最后要以RETI指令返回结束中断。在CPU中断响应过程中,断点的保护由硬件电路来实现,用户只需考虑现场的保护和恢复。在具有多级中断和允许中断嵌套的系统中,为了能可靠地做好现场的保护和恢复,可以在此时关闭中断,以免CPU响应更高级中断而破坏现场。待现场保护好后再开放中断。
【例6-7】 使用外部中断2、外部中断3产生外部中断输入信号,分别作为一个地铁站入口和出口的每天乘客进出量统计,每进去1人产生中断一次计数加1,每出去1人产生中断一次计数加1。(www.xing528.com)
根据题意要求,程序设计如下:
程序结构:程序采用中断结构编程。依据要求,程序只要包括主程序、外部中断2中断服务程序、外部中断3中断服务程序和显示子程序。程序功能分配如下:
1)主程序负责中断允许设置、计数单元初始化,接着反复调用显示子程序。
2)外部中断2中断服务程序入口地址为0053H,主要完成地铁站入口乘客统计,每进入一个人触发中断一次,完成双字节的计数单元加1后,中断返回。
3)外部中断3中断服务程序入口地址为005BH,主要完成地铁站出口乘客统计,每走出一个人触发中断一次,完成双字节的计数单元加1后,中断返回。
4)显示子程序负责完成进站和出站乘客数的显示位分离、查表送数码管显示。
算法思路:外部中断2设在地铁站入口作每个乘客进站时触发中断请求信号,用双字节R3-R2作计数器,记录每天的进站人流量,每发生一次中断,对R3-R2寄存器内容按BCD码加1;外部中断3设在地铁出口作乘客出站时触发中断请求信号,用双字节R5-R4作计数器记录每天的出站人流量,每发生一次中断,对R5-R4寄存器内容按BCD码加1(如有需要可按四字节BCD码加法)。显示采用8位数码管显示,进站人数显示4位、出站人数显示4位。先对计数器BCD码按个、十、百、千位分离,再根据电路连接关系设计出显示笔形码形成数据表格放在程序后面,然后通过查表找出要显示数字的笔形码,依次送驱动数码管显示。
【例6-8】 由INT4作按键输入产生中断请求,每当响应中断后将R3按BCD码加1,加到60清0。
在实际编程应用时,还需要增加按键去抖动处理和按键、松键处理,以防止一次键、多次连加现象的发生。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。