标题: [求助]各位前辈麻烦看一下吧 [打印本页]

作者: 劲弩骑士    时间: 2013-4-13 13:20
标题: [求助]各位前辈麻烦看一下吧

程序如下:

           ORG 1000H

START:MOV TMOD,#01H

           MOV TH0,#3CH

           MOV TL0,#0B0H

           MOV IE,#82H

           SETB TR0

           MOV R0,#90H

LOOP:  SJMP $

           ORG 000BH

           AJMP BTR0

           ORG 0080H

BTR0:  DJNZ R0,NEXT

           CPL P2.0

           MOV R0,#90H

NEXT:  MOV TH0,#3CH

           MOV TL0,#0B0H

           RETI

           END

这段程序就是让P2.0闪呀闪,很简单

我用的是STC 12C5A60S2,写入程序以后,一切正常,P2.0确实闪呀闪的

可是断掉电,然后重新启动,P2.0就变成昏暗的常亮了。这是怎么回事呢~?

[此贴子已经被作者于2013-4-13 18:51:06编辑过]

作者: ahshmj    时间: 2013-4-13 22:18
          ORG 1000H

START:MOV TMOD,#01H

           MOV TH0,#3CH

           MOV TL0,#0B0H

           MOV IE,#82H

           SETB TR0

           MOV R0,#90H

LOOP:  SJMP $

           ORG 000BH

           AJMP BTR0

           ORG 0080H

BTR0:  DJNZ R0,NEXT

           CPL P2.0

           MOV R0,#90H

NEXT:  MOV TH0,#3CH

           MOV TL0,#0B0H

           RETI

           END

 

你这个程序,上面红字段运行不到的。

 

单片机上电、复位以后自动从code的0000h处开始执行。由于从0003h~009bh,是中断向量的分布段(绝大部分是预留的),所以一般是从0100处开始写初始化程序。又由于0000h~0003h(不含0003h)只有3个字节,所以一般在这里安排一句跳转指令,常用模式:

        org    0000h

        jmp   main

;        org    0003h         ;若果不用外部中断0,可以不用本句

;        jmp   ......

        org   000bh

 

 

而你的程序,org  1000h既不是复位入口地址,也不是中断入口,有没有语句向这里跳转,当让就执行不到了。

也许,由于你的程序没有循环,所以会从0000h一直顺序执行到000bh跳转......,但这样就不是你想要的结果了。

 

       

[此贴子已经被作者于2013-4-13 22:25:19编辑过]

作者: 劲弩骑士    时间: 2013-4-14 11:58

啊,果然,我只加了下面一小段,这个问题就解决了~! T^T

  ORG    0000H
  LJMP    START
  ORG    0003H

多谢版主大人的帮助~!






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