ahshmj 发表于 2013-8-30 08:31 谢谢提示,我试试行不行,这是我移植c程序里面的内容再写的。现在学着发现手头能参考的只有c程序了。所以现在慢慢转去用c写。 |
ahshmj 发表于 2013-8-30 08:24 不会,因为程序一直都在做跳转循环,没有按下比它更高级别的优先时候,程序一直都在做循环,松手也一直在run |
你应该在中断程序里面仅仅做标记,退出中断后,根据标记来执行动作。 K3: SETB F0 RETI K4: CLR F0 RETI HERE: ;你原来的标号 JB F0, XXXX ...... SJMP HERE |
你这样改了以后是不是手一放开按键就停止了? |
终于找出原因来了,是delay那里出了问题,将ret改成reti就可以。 我想应该是中断程序中的子程序也需要加入reti,一旦发现中断就可以跳出,然后再跳到中断程序,最后再跳到优先级别高的中断程序。 否则就不会跳出子程序,一直在做延时后,跳回原程序。 |