标题: 单片机伪指令ORG的问题 [打印本页]

作者: liuleen    时间: 2020-5-18 02:17
标题: 单片机伪指令ORG的问题

在做题的时候,师傅给的单片机程序开始地址是0100H,在我实际操作过后,发现如果从0100H开始,LED灯会一直亮着,不会有任何反应
但是如果从0000H开始,则会正常执行。我百度了一很多,但是还是没想明白为什么。但是很想知道其中的原理

作者: aking991    时间: 2020-5-18 08:16
在汇编里,用ORG 100H即程序从此处运行,即把相应的中断函数处口和堆栈给避开,如果你改为ORG 00H,可能在执行中断等相应程序时会出现不正常,如果是用C语言,软件会自动分配就不用考虑这么多了
作者: Y_G_G    时间: 2020-5-18 08:49
正确的是这样子的:
                                ORG                0000H                                                        ;
                                LJMP         STAR                                                        ;                               
                                ORG                100H
STAR:                        MOV                0BAH,#80H
作者: 随风飘远    时间: 2020-5-18 10:30
是代码要改一下,要考虑中断函数入口
作者: liuleen    时间: 2020-5-18 10:55
aking991 发表于 2020-5-18 08:16
在汇编里,用ORG 100H即程序从此处运行,即把相应的中断函数处口和堆栈给避开,如果你改为ORG 00H,可能 ...

理论上是这样的,我能理解~。但是问题是100H开始的话,灯会一直亮。程序非正常,我不会在ISIS7 里面下断点,所以不太明白这个错误是怎么形容的
作者: liuleen    时间: 2020-5-18 11:10
Y_G_G 发表于 2020-5-18 08:49
正确的是这样子的:
                                ORG                0000H                                                        ;
                                LJMP         STAR                                                        ;                               

现在意思是0100H有问题~还有我在CRYSTAL频率,我设置6Mhz和12Mhz 感觉没有区别,这个是个啥情况
作者: Y_G_G    时间: 2020-5-18 11:33
liuleen 发表于 2020-5-18 11:10
现在意思是0100H有问题~还有我在CRYSTAL频率,我设置6Mhz和12Mhz 感觉没有区别,这个是个啥情况

仿真无意义,我只管实际结果
12MHZ的时钟和6MHZ的时钟它一定是有区别的,在下载器选项那设定好下载看一下就知道了




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