标题: 请指点下这个中断程序哪里错了? [打印本页]

作者: zjhldg    时间: 2013-11-17 22:00
标题: 请指点下这个中断程序哪里错了?
目的:计划用INT1中断发生时,P1.5输出约高电平,延时约0.5秒后,P1.5 输出低电平,P1.6再输出高电平,载延时约0.5秒后,P1.6输出低电平;
程序如下:
但实测后发现奇怪的现象:用示波器接到P1.5,  P1.6,中断发生时,居然出现了2次上述过程,即 P1.5输出约高电平,延时约0.5秒后,P1.5 输出低电平,P1.6再输出高电平,载延时约0.5秒后,P1.6输出低电平 ;       按道理到此应该结束了,但事实上紧接着 又出现了P1.5输出约高电平,延时约0.5秒后,P1.5 输出低电平,P1.6再输出高电平,载延时约0.5秒后,P1.6输出低电平 ;
想了半天想不出为什么,请指点下哪里错了?多谢

org  0000h
          ljmp start        
          org  0013h
          ljmp ext1
          org  0030h
start:                     ; 主程序开始

          setb  ea         ; cpu开中断
          setb  ex1        ; 允许外部中断1,P3.3引脚,即INT1
          setb  it1        ; 设置外部中断1触发方式为跳变触发
          lcall dis_0      ; 调用初始输出状态子程序
          ajmp $           ; 等待按键发出中断申请
ext1:    clr   ea           ; 进入中断,先关闭中断
         lcall dis_key   ; 调用输出子程序
pass:    setb  ea           ; 返回主程序之前先开中断
         reti               ; 中断返回指令,

dis_0:   clr   p1.5       ; 初始输出子程序
         clr   p1.6  
         ret
dis_key: lcall D_100MS
         SETB  p1.5            ; 中断后输出子程序
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         CLR  p1.5
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         SETB  p1.6
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         lcall D_100MS
         CLR  p1.6

next:    ret


D_100MS:    MOV R3,#100
             CALL D_1ms
             RET
  D_1MS:     MOV R1,#10   
    DL1:     MOV R0,#50     
             DJNZ R0,$     
             DJNZ R1,DL1
             DJNZ R3,D_1MS        
             RET
end


作者: zjhldg    时间: 2013-11-18 10:46
希望的脉冲示意图和实际运行结果示意图

未标题-2 复制.jpg (43.73 KB, 下载次数: 177)

未标题-2 复制.jpg

作者: ahshmj    时间: 2013-11-19 10:13
试了一下,程序是对的。
中断触发信号是不是用类似按键的或开关类的产生的?如果是,会不会产生误动作或抖动?需要和按键一样的去除抖动和误动作。
其次,电源有没有干扰毛刺等?


作者: ahshmj    时间: 2013-11-19 10:13
试了一下,程序是对的。
中断触发信号是不是用类似按键的或开关类的产生的?如果是,会不会产生误动作或抖动?需要和按键一样的去除抖动和误动作。
其次,电源有没有干扰毛刺等?






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1