打印

仿真软件有时候也出错哦(要仿真联系实际)

[复制链接]
楼主: yrg1127
手机看帖
扫描二维码
随时随地手机跟帖
21
流行音乐| | 2010-7-25 16:59 | 只看该作者 回帖奖励 |倒序浏览
现在讨论的问题是为什么在仿真的时候。一个指令在不同的位置会有不同的结果(要求是按键下的时候相应的LED亮,按键释放的时候LED都是熄灭的哦)。
  
ORG 00H
START:   MOV P2,#0FFH   
       JNB P1.0,XX1
        ...
yrg1127 发表于 2010-7-25 16:08


一个指令在不同的位置会有不同的结果,这一点都不奇怪。
对于本题,造成闪烁的原因是,不论是否有按键被按下,每次循环都熄灭了所有LED,所以造成闪烁。这个论坛的大多数人都能看出这个问题,楼主如果认为这有什么了不起就太小瞧别人了。
而楼主修改后的代码不闪烁的原因是仅当没有任何按键被按下的时候才熄灭LED。不过,楼主修改后的程序有另外一个问题:如果按下1号键和2号键并维持不变,然后松开1号键(2号键仍维持按下),这时1号和2号LED都会亮,而此时1号键并没有按下。
所以,程序设计时遇到的具体问题有很多,不是楼主提出的那个问题才是重都要的。

使用特权

评论回复
22
yczhang| | 2010-7-25 17:08 | 只看该作者
我就没看出仿真软件在这里错在哪儿?

使用特权

评论回复
23
lovewwy| | 2010-7-25 17:24 | 只看该作者
还能自己搞出那么多道理来,真有意思

使用特权

评论回复
24
流行音乐| | 2010-7-25 17:36 | 只看该作者
还有哦。。不管是那种情况下载到实物中都是正常的。。

从这个题目,最后得出的结论是:

仿真对于单片机初学人们非常容易,也非常方便,但是对于单片机初学者来说,仿真软件的使用也要适可而止,真正的开发设计还是需要实际动手设计电路。

yrg1127 发表于 2010-7-25 16:08

不管是那种情况下载到实物中都是正常的。。”正说明实物不能体现出程序存在的问题,倒是仿真能发现程序的问题。怎么就被你看成了仿真有问题呢?
仿真和实验都是开发的手段,你举的这个例子正是仿真能发挥作用的地方。

使用特权

评论回复
25
icecut| | 2010-7-25 18:43 | 只看该作者
“不管是那种情况下载到实物中都是正常的。。”正说明实物不能体现出程序存在的问题,倒是仿真能发现程序的问题。怎么就被你看成了仿真有问题呢?
仿真和实验都是开发的手段,你举的这个例子正是仿真能发挥作用的地 ...
流行音乐 发表于 2010-7-25 17:36



这个我给他回答了。看晶振。。。。

使用特权

评论回复
26
土憋ㄘ`| | 2010-7-25 19:43 | 只看该作者
用C吧,汇编淘汰了

使用特权

评论回复
27
wangwenjie123| | 2010-7-25 19:50 | 只看该作者
:)

使用特权

评论回复
28
linghua1100| | 2010-7-25 21:24 | 只看该作者
25楼说的对
我是这样理解的,造成在实物中你误认为是一直亮的应该是你的眼睛。它欺骗了你。
当闪烁的频率很快时你看起来就像是一直亮的-视觉暂留。

使用特权

评论回复
29
hgjinwei| | 2010-7-25 22:45 | 只看该作者
无语~~~~~~~~~~~~~~~

使用特权

评论回复
30
ElecFarmer| | 2010-7-25 23:11 | 只看该作者
对PROTEUS一直不太信任的

使用特权

评论回复
31
呆板书生| | 2010-7-26 06:03 | 只看该作者
楼主可以把proteus 中的led 换成 7SEG-MPX2-CA (或者 7SEG-MPX2-CC)再试一次,你会有新的发现

使用特权

评论回复
32
xuyiyi| | 2010-7-26 08:57 | 只看该作者
LS各位,程序搞的这么复杂干吗?
几条指令就能解决的事要那么多指令?
     ORG 0
START:
      MOV   A,P1
      CPL    A
      MOV   P2,A
      SJMP  START
      END

  
  
   
返回列表12下一页

使用特权

评论回复
33
t.jm| | 2010-7-26 09:27 | 只看该作者
哎!
其实LZ的程序逻辑上没什么“大问题”,闪烁只是源于仿真速度太慢了,
实际是不会闪烁的,只是亮度会“暗”一点。

因LZ是新手这个程序是有点怪怪的,先把所有的灯熄灭,哪个按键按下再点亮,再熄灭...
而且这些按键还搞出优先级....写得是不好,慢慢学吧,刚开始谁都这样。

使用特权

评论回复
34
yinxu951| | 2010-7-26 10:38 | 只看该作者
问题很明显....

使用特权

评论回复
35
jianguoid| | 2010-7-26 10:39 | 只看该作者
学习了,32楼的程序挺简洁的;这就是新手和高手的区别。怎样既能把功能实现了,又能把程序写的简洁明了,是我努力的方向。

使用特权

评论回复
36
xuyiyi| | 2010-7-26 12:19 | 只看该作者
jianguoid是个好孩子。
谦虚好学,性格像俺,收你做徒弟不错~~~~

使用特权

评论回复
37
yczhang| | 2010-7-26 12:40 | 只看该作者
本帖最后由 yczhang 于 2010-7-26 12:42 编辑

32# xuyiyi

你的程序错了,想把程序改简单应该这样写:
ORG 0
START: MOV P2,P1
            SJMP START
            END
只不过这不是讨论的重点,所以都没提.
毕竟实现这种功能,单片机都是不需要的.

使用特权

评论回复
38
不亦心| | 2010-7-26 14:51 | 只看该作者
哈哈,要收徒弟啊,要不你收下俺得了 36# xuyiyi

使用特权

评论回复
39
xuyiyi| | 2010-7-26 16:40 | 只看该作者
本帖最后由 xuyiyi 于 2010-7-26 17:15 编辑

:dizzy: :dizzy: :dizzy: :dizzy: :dizzy:

请看清LZ的硬件原理图,再回答。

使用特权

评论回复
40
xuyiyi| | 2010-7-26 16:44 | 只看该作者
哈哈,要收徒弟啊,要不你收下俺得了 36# xuyiyi
不亦心 发表于 2010-7-26 14:51


不亦心小友,好久不见,技术一定大有长进,人大概也长高0.01mm了~~~ ;P
可惜俺在上海,什么时候你来上海俺一定收你为徒,哈哈!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则