当前位置:首页 > 单片机 > 单片机
[导读]中断服务处理子程序可简称为中断服务处理程序或中断程序,用于处理单片机的中断事件,只能被单片机硬件调用执行,而不能通过子程序调用指令(ACALL或LCALL)调用执行。中断服务处理程序只能通过RETI指令返回。

子程序是模块化程序设计的一种常用技巧,将完成某种特定任务的指令整合在一起,可以被重复使用,能提高编程效率。

子程序分为中断服务处理子程序和普通功能性子程序两种,其中:

(1)中断服务处理子程序

中断服务处理子程序可简称为中断服务处理程序或中断程序,用于处理单片机的中断事件,只能被单片机硬件调用执行,而不能通过子程序调用指令(ACALL或LCALL)调用执行。中断服务处理程序只能通过RETI指令返回。

(2)普通功能性子程序

普通功能性子程序必须通过子程序调用指令(ACALL或LCALL)调用执行,并且只能通过RET指令返回。

子程序设计过程中需要注意:

1)RET指令和RETI指令分别用于功能性子程序和中断服务处理程序的返回,不能相互替换使用。

2)子程序可能会与主程序共用一些资源(如寄存器和存储器等),这些资源通常被称为“现场”。为了不干扰主程序运行,子程序执行前后应保证“现场”不变。为此,进入子程序后需进行现场保护,子程序返回之前需进行现场恢复。现场保护的常用方法是通过堆栈操作指令PUSH将现场存入堆栈中,而恢复时用POP指令将现场从堆栈中取出。

3)主程序调用子程序时,需要将入口参数传递给子程序,而子程序返回前需要将出口参数(执行结果)传回主程序。

4)子程序的出口参数不能被当作现场进行保护。

5)子程序还可以调用其他子程序,即子程序嵌套。子程序嵌套时,同样也存在现场保护和参数传递的问题。

本节将通过实例介绍普通功能性子程序的设计方法,中断服务处理程序的设计方法将在下一章介绍。

1.延时类子程序

【例3-72】将例3-69中的延时程序改写为子程序,并进行一次调用。

解:参考程序如下,其中DEALAY为由例3-69延时程序改写的延时子程序。其中,RET指令的机器周期数为2,因此子程序DEALAY比例3-69程序的延时时间多两个机器周期,即2μs。另外,子程序DEALAY没有入口和出口参数。

2.数值计算类子程序

【例3-73】计算X2+Y2。要求:X和Y均为0~10的整数,并分别存放于片内RAM的40H和41H单元中,二次方和存于42H单元中;由子程序完成数据二次方的计算。

分析:本例的设计任务与例3-57基本一致,不同仅在于本例必须用子程序计算二次方;因此,本例的程序可以由例3-57的参考程序改编而得。

解:本例的参考程序及其说明如图3-12所示。子程序SQRT通过查表法计算数据的二次方,其入口和出口参数均为累加器A。通过累加器或特殊功能寄存器在主程序和子程序之间传递参数,是一种比较常用的参数传递方法,另外,也可以通过存储单元或堆栈进行参数传递。SQRT子程序中对DPTR进行了保护,以免干扰主程序中其他与DPTR有关的操作,

而累加器A作为出口参数不能被保护,否则子程序结束后累加器的值将恢复为进入子程序之前的值。另外,特别需要注意的是,利用堆栈进行现场保护时必须遵守堆栈“先入后出,后入先出”的使用原则,即先“PUSH”的数据应该后“POP”,反之亦然。

图3-12例3-73参考程序及说明

3.码制转换类子程序

单片机中常用的码制有ASCII码和BCD码,而单片机仅能识别和处理二进制数,因此需要进行二进制数与ASCII码和BCD码转换之间的转换。

【例3-74】编写将一位十六进制数转换成ASCII码的子程序,利用该子程序将字节型数09AH的高、低半字节转换为ASCII码,并分别存入片内RAM的31H和30H单元。

解:本例参考程序如下。在HASC子程序中,累加器A既是入口参数,也是出口参数,即该子程序执行后累加器A的值被改变。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭