单片机AT89c51汇编程序高手请进,初学菜鸟遇到奇怪急手的问题

以AT89c51为例:
我写代码如下: mov a,#1H
L: mov p2,a
rr a
nop
ljmp l
end
这个程序在ISIS软件上模拟运行后,P2端不接负载以每1.2秒速度向右移,P2轮翻输出低电平 ,但是奇怪的事情发生了。。。。接上负载后,速度改变了,并且看不出它是足个脚依次流水的,。。空载时也很奇怪,我在NOP 后再加一NOP,这里流水速度并没有发生变慢,反而变快了,这是为什么啊。。我是菜鸟,可是我怎么觉得单片机不听使唤啊
请各大侠们指点迷精,我觉得很有意思,可是我不懂。。求解,谢谢。!

第1个回答  2013-04-28
mov a,#1H
L: mov p2,a ;1
rr a ;1
nop ;1
ljmp l ;2
end
可以看出,一次循环输出一个脉冲,12M晶振时,周期是5us,每秒中翻转20万次追问

哦。。

第2个回答  2013-04-28
你这个移动速度,不是1.2秒,而是在 1 秒内移动 几万次。
软件模拟运行时只显示了其中的几次。追问

软件和现实相差很远吗
那为什么接负载又不一样呢

追答

不是软件和现实相差很远,而是你的程序有问题
mov a,#1H ; 这样试试 加个 延时
L: mov p2,a
rr a
ACALL DELAY0
ljmp l

DELAY0: MOV R2, #5 ; 延时 1.2 S
DELAY1: MOV R1, #250 ; 延时 250 mS
DELAY2: MOV R0, #250 ; 延时 1 mS
DELAY8: NOP
NOP
DJNZ R0, DELAY8
DJNZ R1, DELAY2
DJNZ R2, DELAY1
RET
END

追问

还是太快了

追答

MOV R2, #10 ; 加大数值 试试

追问

OH YES,谢谢拉。。。大侠!!!

本回答被提问者采纳
第3个回答  2013-04-28
你看到的,并不一定是真实的。

因为,人的眼睛,是有错觉的。

模拟软件,更是会弄假成真。
相似回答
大家正在搜