当前位置:首页 > 单片机 > 单片机
[导读]在进入中断服务子程序期间,只有返回地址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语句,字节交换上负负为正,还没有影响到状态位,呵呵。

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

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

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

北京2025年8月15日 /美通社/ -- 今日,以"破局者 • 智行合璧"为主题的2025戴尔科技峰会在北京中国大饭店盛大启幕。作为戴尔科技大中华区极具战略意义的年度旗舰活动,本届峰会吸引逾千名行业...

关键字: 戴尔 全栈 PC ALIENWARE

北京2025年7月31日 /美通社/ -- 近日,权威咨询机构德本咨询重磅发布"2025中国信创PC市场影响力品牌TOP 10"榜单。软通计算机凭借其迅猛的发展势头、领先的技术整合能力及显著的市场表现...

关键字: 计算机 TOP PC PC市场

控制寄存器(Control Register)是中央处理器(CPU)中用于管理系统级操作的特殊寄存器,它为操作系统和硬件提供对处理器行为的精细控制。本文从计算机体系结构角度系统阐述控制寄存器的设计原理、功能分类、操作机制...

关键字: 寄存器 处理器

在十年间,3D深度感知市场规模将实现超过2倍的增长,而我们正处于这场变革之中。据Yole数据,2020年这3D深度感知市场规模为67亿美金,2024年为95亿美金,而2030年将达到176亿美金。整个3D深感市场出现了爆...

关键字: AI PC HPC 人体检测 ToF VL53L8CP

6月23日消息,根据IDC最新发布的《中国PC显示器市场季度跟踪报告》,2025年一季度中国PC 显示器市场总出货量707万台,同比增长14.0%。

关键字: PC DDR4 显示器

德国汉堡 2025年6月10日 /美通社/ -- 作为专业的服务器设计与制造商,神达控股股份有限公司(股票代号:3706)旗下子公司神雲科技股份有限公司(MiTAC Computing Technology Corpo...

关键字: MIT 高性能计算 PC HP

6月5日消息,据TrendForce集邦咨询最新报道,受多重因素影响,2025年第二季度PC DDR4模组合约价格预计将上涨13%-18%,涨幅较此前预计的3%-8%明显扩大,而Server DDR4模组价格预计季增18...

关键字: PC DDR4

在嵌入式系统开发中,硬件抽象层(Hardware Abstraction Layer,HAL)起着至关重要的作用。它为上层软件提供了统一的硬件访问接口,隐藏了底层硬件的细节,使得软件具有更好的可移植性和可维护性。C++作...

关键字: 嵌入式C++ HAL 寄存器 封装

采用51单片机最小开发板,由8位自制独立按键控制。单片机芯片为STC89C52RC,晶振为@12.000 mhz。8X8LED点阵屏模块由MAX7219驱动,MAX7219包含一个自动扫描电路。你只需要把要显示的数据发送...

关键字: 51单片机 MAX7219 寄存器

电源管理集成电路(PMIC)有益于简化最终应用并缩小其尺寸,也因此备受青睐。然而,当默认启动时序和输出电压与应用要求不符时,就需要定制上电设置。大多数情况下,电路没有可以存储这些设置的非易失性存储器(NVM)。对此,低功...

关键字: 电源管理 集成电路 寄存器
关闭