搜索

请教一下PICC如何中断不保护Z标志咋办?

[复制链接]
1943|12
 楼主 | 2011-8-1 23:05 | 显示全部楼层 |阅读模式
使用PICC多年了,从8.05到9.60,对于PICC中断保护的问题总是不明白。
那就是,如果我在主程序中有判断语句,比如

IF(cTest==0)
{
  ......
}
这样的语句出现的话,他汇编后会利用STATUS中的Z标志来判断,具体是1:先把cTest赋值给W,2:而后利用BTFSS STATUS,Z,来判断,但是有可能在赋值后判断前发生了中断,进入中断程序,而中断程序中在保存STATUS过程中需要把STATUS赋值给W,而此语句影响Z标志,这样的话保存的STATUS值可能Z就变化了,当退出中断后,下面的判断语句就利用错误的Z来判断了。。。。

请教各位,有没有遇到这种情况?是不是我哪里犯了错误?总不能先关中断,判断完毕后再开中断吧?

我在网上搜了搜没有找到别人提出这样的问题,是不是我哪里不对?多些指教!
| 2011-8-2 08:32 | 显示全部楼层
1、如果你用汇编写过PIC的应用程序的话,那么你不会出现这样的问题。
2、请查阅相关资料中用ASM时,状态寄存器是如何保存的?
3、推荐看张明峰先生那本《PIC单片机入门与实战》一书,那本书上用汇编的方式把中断相关的问题说的很清晰。
4、如果你已经用PIC多年,而且还是从8,05版本开始用起的,那么你用PIC的时间至少超过5年了,俺实在很奇怪,你是怎么会如此糊涂这么多年的?

;P,如果是跟着俺干的工程师,肯定被俺打屁股。

使用特权

评论回复
 楼主 | 2011-8-2 08:44 | 显示全部楼层
本帖最后由 秋雨 于 2011-8-2 08:53 编辑

楼上的老大,用PIC的确不下5年,有10年了?估计。
汇编用过,但都是针对16C5X的芯片,没有中断。。。
手头不少PIC的书,但是没有你说的那本。
查了查手头的书,汇编中断保护W和STATUS的代码如下:
1:MOVWF W_STK
2:MOVF STATUS,W
3:CLRF STATUS
4:MOVWF STATUS_STK
这个和PICC的中断入口保护是一样的,第2条语句会改变Z,请l老大明示。

使用特权

评论回复
| 2011-8-2 08:54 | 显示全部楼层
手头不少PIC的书,但是没有你说的那本。
秋雨 发表于 2011-8-2 08:44

实际上你只需要张明锋那一本
PICC的中断保护入口不是这样写的

使用特权

评论回复
 楼主 | 2011-8-2 09:05 | 显示全部楼层
不会吧,我以前查过,难道它用了高低字节交换拿个?请问如何查看中断入口的汇编?我咋在汇编中找不到。。。

使用特权

评论回复
| 2011-8-2 09:39 | 显示全部楼层
不会吧,我以前查过,难道它用了高低字节交换拿个?请问如何查看中断入口的汇编?我咋在汇编中找不到。。。
秋雨 发表于 2011-8-2 09:05


恢复时需要用交换指令,进入时用MOVF STATUS,W虽然会改变STATUS,但在发生变化前其内容已经被送到了W。

使用特权

评论回复
 楼主 | 2011-8-2 09:41 | 显示全部楼层
老大,存的就是错误的,你看看这个帖子。。
http://www.eefocus.com/cocoa/blog/07-11/77020_ad0d0.html

使用特权

评论回复
| 2011-8-2 10:11 | 显示全部楼层
没看到你给出链接中有什么错误。


费那么多时间,自己到网络上去买本《PIC单片机入门与实战》看看就明白了。

使用特权

评论回复
| 2011-8-3 12:43 | 显示全部楼层
MOVF STATUS,W
指令执行前 Z是不会改变的, 指令执行时 把Z保存在WORK中了. 指令执行后 Z有可能改变了.
所以中断发生前的Z 被保存起来了: MOVWF STATUS_STK.

如果连Z都没保护起来的话,PIC早就 必死了

使用特权

评论回复
 楼主 | 2011-8-5 10:58 | 显示全部楼层
谢谢各位。。。。

使用特权

评论回复
 楼主 | 2011-8-5 11:00 | 显示全部楼层
咋没法给各位评分?说24小时评分超过限制。。

使用特权

评论回复
| 2011-8-5 11:09 | 显示全部楼层
你评分的总分不能超过悬赏分的数值,你本贴悬赏20分,所以不能超出20分,但也不能少于20分,必须正好是20分。

使用特权

评论回复
 楼主 | 2011-8-5 11:25 | 显示全部楼层
试了,还是显示  24 小时评分数超过限制,请修改

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表