中断好像进不去

gjwtz 2008-07-16 11:43:08
ORG 0000H
LJMP MAIN
ORG 0013H ;INT1中断入口
LJMP PD ;转向中断服务程序
W1 EQU 50H
W2 EQU 51H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0030H
MAIN: MOV P1,#0FFH ;P1设置为输入
CLR P3.7
SETB EA
SETB EX1
CLR IT1
LOOP: SJMP $
MOV R0,W1
MOV R1,W2
CJNE R0,#0,BJ ;判断R0,为1转BJ,否P3.7为0即停止或不报警
LJMP K2
BJ: CJNE R1,#1,K2 ;判断R1,R1为0停止或不报警,为1报警
SETB P3.7
LCALL DELAY ;调用延时
MOV R1,#0
K2: CLR P3.7
LJMP LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PD: MOV A,P1 ;读取P1的值
ANL A,#0F0H ;屏蔽P1口低4位
PD_A: CJNE A,#10H,PD_B ;判断DCBA是否为0001,否转PD_B,是置W1为1
MOV W1,#1
LJMP FH
PD_B: CJNE A,#20H,PD_C ;判断DCBA是否为0010,否转PD_C,是置W1为0
MOV W1,#0
LJMP FH
PD_C: CJNE A,#40H,K1 ;判断DCBA是否为0100,否W2置0,是W2置1
MOV W2,#1
FH: RETI ;中断返回
K1: MOV W2,#0
LJMP FH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY: MOV R2,#60
MOV R5,#50
DEL0: MOV R6,#91
DEL1: MOV R7,#100
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DEL0
DJNZ R2,DELAY
RET


功能是能遥控设防和撤防,且具有报警功能
2272的ABCD为状态的编码
当ABCD为1000为设防状态 ,为0100时为撤防状态,无论设防还是撤防有人经过为0010
在设防状态下如果有人经过就报警
在撤防状态有人经过不报警
2272的VT端是解码有效确认,,输出端(长低) 解码有效变为高电平(瞬态)
2272的ABCD具有锁存。
VT变为高时,检测ABCD的值

报警延时一分种



现在出现的问题是似乎进不去中断,,高手帮看看怎么修改
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dfwygseu 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 gjwtz 的帖子:]
ORG 0000H
LJMP MAIN
ORG 0013H ;INT1中断入口
LJMP PD ;转向中断服务程序
W1 EQU 50H
W2 EQU 51H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0030H
MAIN: MOV P1,#0FFH ;P1设置为输入
CLR P3.7
SETB EA
SETB EX1
CLR IT1
LOOP: SJMP $
MOV R0,W1
MOV R1,W2
CJNE R0,#0,BJ …
[/Quote]

稍微看了一下,我看问题估计出在:
LOOP:SJMP $这一句。
这一句是无限等待,也就是说等待中断发生,假如发生中断,跳出中断之后还在该处循环。而没能往下接着执行主程序。
解决方法是:你可以在中断里面设置一个标志位,比如R7,执行中断后SETB一下,然后,退出中断后,判断R7,以决定程序的流向。

一点肤浅认识,不知道能否解决你的问题?大家一起讨论提高~~~
gjwtz 2008-07-16
  • 打赏
  • 举报
回复
什么意思啊
jxc25 2008-07-16
  • 打赏
  • 举报
回复
我也进一批过来搞搞.
听说很赚钱的.
jxc25 2008-07-16
  • 打赏
  • 举报
回复
你的51能批量生产吗?
什么牌子的.

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧