当前位置:首页 > 单片机 > 单片机
[导读]在进入中断服务子程序期间,只有返回地址PC的数值被自动压入堆栈,其他的一些寄存器的内容就得按照程序的需要由我们自己想办法了。PIC单片机汇编语言没有象51系列单片机那样的PUSH POP指令,所以我们要用一段程序来实

在进入中断服务子程序期间,只有返回地址PC的数值被自动压入堆栈,其他的一些寄存器的内容就得按照程序的需要由我们自己想办法了。PIC单片机汇编语言没有象51系列单片机那样的PUSH POP指令,所以我们要用一段程序来实现类似的功能。

因为是用一段程序来实现现场的保护,这样就可能影响到W和STATUS寄存器,所以我们要在保护现场的时候先把这两个寄存器给保护了。这些现场保护不是将数据保存在芯片的堆栈中。而是将其放到RAM中进行保存。个人认为将这些数据保存在与体选址无关的RAM中,也就是说PIC一般有四个体,无论目前在哪个体里改变其RAM的数据,都可以映射到其他体中,本人认为这样在程序上比较方便,避免了一些弊端和麻烦。我也是刚接触PIC,如果有说的不对的地方,还请大家提出,我们共同探讨。先谢了:)

下面引用一段厂家提供的中断现场保护的样例程序:将W,STATUS,和PCLATH寄存器内的内容保存到临时备分寄存器中

(1) MOVWF W_TEMP 复制W到它的临时寄存器W_TEMP中

(2) SWAPF STATUS,W 将STATUS中的高低四位交换后放入W

(3) CLRF STATUS 不管目前在哪个体,都设置成体0为当前体

(4) MOVWF STATUS_TEMP 保存STATUS到体0上的临时寄存器

(5) MOVF PCLATH,W 把寄存器PCLATH中的内容复制到W中

(6) MOVWF PCLATH_TEMP 保存PCLATH到临时寄存器里

(7) CLRF PCLATH 不管当前处在哪页,都把PCLATH设置成0

............(中断服务子程序的核心部分)

(8) MOVF PCLATH_TEMP,W 经过W转移

(9) MOVWF PCLATH 恢复PCLATH

(10)SWAPF STATUS_TEMP,W 交换后放回W

(11)MOVWF STATUS

(12)SWAPF W_TEMP,1

(13)SWAPF W_TEMP,0

我们来看前面的程序 有一点需要声明的是,PIC的一部分汇编语句在运行的过程中会改变STATUS寄存器的数据,所以在保护好STATUS之前禁止使用能够改变STATUS的语句

语句1用来保护W寄存器,因为MOVWF语句不改变STATUS所以可以直接使用PIC数据的传递基本都是通过W来转的,所以保护一上来先将W中的数据保护到临时备分中,在中断返回的时候再将其恢复.

语句2:用来保护STATUS,由于MOVF指令改变了STATUS所以在这里不能直接使用

MOVF STATUS,W语句,而使用了SWAPF 指令,在这里我们没有应用他的高低半字节交换的功能,而是应用了这条语句的执行对STATUS寄存器没有影响,所以在中断恢复的时候我们仍然要使用SWAPF将高低半字节颠倒过来:)

语句3 和4:这个时候我们已经将STATUS的内容低位与高位颠倒后放入W寄存器中,所以这个时候我们就可以放心的改变STATUS的内容了 ,此两句是将STATUS的内容放到临时寄存器中。另外还有一点就是在恢复STATUS之前我们就不介意使用改变STATUS内容的指令了,一但恢复后,仍然不能使用改变STATUS的指令,直到中断返回到主程序中.

语句5、6和7 是对PCLATH的保护,其实对于一些小的程序这个是不用保护的,但怎么说呢,为了程序的规范性,以及防止因为某些因素而让PCLATH变成一个不可预料的数据,我们还是在这里对它进行一下保护吧。因为我们的中断服务程序在体0中,所以保护完后就将PCLATH清0

语句8、9是恢复PCLATH的指令在这里也就不多说了

语句10、11,我们前面已经说了在中断返回的时候恢复STATUS的数值需要将高低位颠倒过来,然后放入STATUS寄存器中,这两个语句都不改变状态位,所以可以放心使用

语句12、13 由于此前已经恢复了STATUS所以这个时候我们在恢复W的时候要非常注意不要影响STATUS,所以在这里使用了两个SWAPF语句,字节交换上负负为正,还没有影响到状态位,呵呵。

今天就说到这里了。欢迎朋友们给提出一些看法和意见。

扩展阅读:从定时器开始说中断

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

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 信息技术
关闭
关闭