C51单片机汇编语言

当程序执行到:sjmp $ ;这一句时,程序是不是相当于“死机”了?该怎样让程序执行其它语句?除了复位和关机重来外,还有其它方法吗?比如是否可以在它的前面或后面写一些什么命令之类的?或者是中断等方法,可以吗?
谢谢 ATF144X了,不过怎样使用中断呢?能否帮我把中断程序写出来(用汇编写)?顺便把注释也写上。如果正确再追加50分

sjmp $ 是死循环,常用于调试中断服务程序,用它来模拟主程序,等待中断信号,中断后可以运行中断服务程序。可以在这条指令前写指令,也可以在它后面写指令,但是要运行后面的指令,除非后面的指令有程序头而且在中断服务程序里面有跳转指令这样才会调用到。

中断有很多种,外中断,定时器中断和串行口中断
我写一个定时器中断的吧
定时器T0中断
ORG 0000H;复位后主程序入口地址
LJMP MAIN;长跳转到主程序
ORG 000BH;T0定时器中断入口地址
LJMP CTC0;长跳转到中断服务程序
ORG 100H;主程序地址
MAIN:
MOV TL0,#156;赋T0定时器初值
MOV TL1,#156;重装初值
MOV TMOD,#00000100B;设置T0运作在8位制动重装模式
SETB ET0;允许T0溢出中断
SETB EA;开中断
SETB TR0;启动T0
SJMP $;循环等待,模拟主程序等待中断
CTC0:;中断服务程序
CPL P1.0;将P1.0脚取反
RETI;返回中断点

上面的程序是使T0定时,每逢100个机器周期中断一次,没中断一次将P1.0取反,使P1.0产生周期是200us的方波
楼主可以看看我回答过的问题,很多是中断的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-06
sjmp $的意思是“死循环”,即原地踏步,可以认为是“死机”了,如果要跳出这个死循环,除了复位之外就是使用中断程序了,其他办法暂时还没找到。
第2个回答  2008-11-06
中断