打印

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

[复制链接]
5734|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yrg1127|  楼主 | 2010-7-25 12:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yrg1127 于 2010-7-25 16:10 编辑



一、汇编源程序


题目要求是:P1.0按键按下P2.0的LED亮,P1.1的按键按下P2.1的的LED亮,同理,P2.7的按键按下,P2.7的LED亮。如果没有按键按下则LED都不亮。

现在的问题是:在这个程序控制下,如果按键按下LED不是一直亮的,而是在闪烁。这个跟程序控制思想有不同哦。我要解决这个问题,只能在仿真上。不能用其他的程序。(该问题只针对单片机初学者)


       ORG 0
       JMP START
START:   MOV P2,#0FFH
       JNB P1.0,XX1
       JNB P1.1,XX2
       JNB P1.2,XX3
       JNB P1.3,XX4
       JNB P1.4,XX5
       JNB P1.5,XX6
       JNB P1.6,XX7
       JNB P1.7,XX8
       SJMP START
XX1:       CLR P2.0
       SJMP START
XX2:       CLR P2.1
       SJMP START
XX3:       CLR P2.2
       SJMP START
XX4:       CLR P2.3
       SJMP START
XX5:       CLR P2.4
       SJMP START
XX6:       CLR P2.5
       SJMP START
XX7:       CLR P2.6
       SJMP START
XX8:       CLR P2.7
       SJMP START
       END

原理图.JPG (35.79 KB )

原理图.JPG

相关帖子

沙发
huwen415| | 2010-7-25 12:40 | 只看该作者
这么简单的问题还值得发帖。

使用特权

评论回复
板凳
diweo| | 2010-7-25 12:43 | 只看该作者
..

使用特权

评论回复
地板
zq1987731| | 2010-7-25 12:56 | 只看该作者
这个问题问得很有水品???

使用特权

评论回复
5
yczhang| | 2010-7-25 12:59 | 只看该作者
不就是因为多了"MOV P2,#0FFH"这一行程序的原因吗?

使用特权

评论回复
6
kooshare| | 2010-7-25 13:08 | 只看该作者
:L

使用特权

评论回复
7
yrg1127|  楼主 | 2010-7-25 13:43 | 只看该作者
2# huwen415

楼上的说话很不负责任。。

使用特权

评论回复
8
yrg1127|  楼主 | 2010-7-25 13:43 | 只看该作者
5# yczhang
楼上的说话很不负责任。。

使用特权

评论回复
9
yrg1127|  楼主 | 2010-7-25 13:43 | 只看该作者
4# zq1987731

楼上的说话很不负责任。。

使用特权

评论回复
10
yrg1127|  楼主 | 2010-7-25 13:51 | 只看该作者
本帖最后由 yrg1127 于 2010-7-25 16:10 编辑

http://v.youku.com/v_playlist/f4 ... t/f4402195o1p3.html

无人驾驶模拟公交系统

http://v.youku.com/v_show/id_XMTg2MzIxMjYw.html

无线环境测控系统
http://v.youku.com/v_show/id_XMTg2MzI0OTc2.html

护眼直被台灯
http://v.youku.com/v_show/id_XMTg2MzI3MDIw.html

语音识别智能小车

http://v.youku.com/v_show/id_XMTg2MzI3ODA4.html


还有一个视频 就是我讲解的关于中断的视频。。可以看下哦。。。单片机的中断可是难点哦。
http://v.youku.com/v_show/id_XMTg2NTAyNTA4.html

使用特权

评论回复
11
yrg1127|  楼主 | 2010-7-25 13:52 | 只看该作者
这么简单的问题还值得发帖。
huwen415 发表于 2010-7-25 12:40


悲哀

使用特权

评论回复
12
zq1987731| | 2010-7-25 13:54 | 只看该作者
不负责任?这么个程序这里一眼能看出的人多得是,都懒得打字而已
ORG 0
       JMP START
START:   MOV P2,#0FFH      ;这句话开始及其之后的那些完全处在中断向量区,不出问题就见鬼了,用ORG XXX避开即可
       JNB P1.0,XX1
       JNB P1.1,XX2
       JNB P1.2,XX3
       JNB P1.3,XX4
       JNB P1.4,XX5
       JNB P1.5,XX6
       JNB P1.6,XX7
       JNB P1.7,XX8
       SJMP START
XX1:       CLR P2.0
       SJMP START
XX2:       CLR P2.1
       SJMP START
XX3:       CLR P2.2
       SJMP START
XX4:       CLR P2.3
       SJMP START
XX5:       CLR P2.4
       SJMP START
XX6:       CLR P2.5
       SJMP START
XX7:       CLR P2.6
       SJMP START
XX8:       CLR P2.7
       SJMP START
       END

使用特权

评论回复
13
zjswuyunbo| | 2010-7-25 14:01 | 只看该作者
晕…本来就是一直闪烁的…说有深度是否可笑?要么我哪里没看懂?加个延时或者加个临时变量。楼主刚开始学?

使用特权

评论回复
14
此心向学| | 2010-7-25 14:09 | 只看该作者
做广告的。。。。

使用特权

评论回复
15
icecut| | 2010-7-25 14:14 | 只看该作者
单片机的中断默认打开的?胡扯吧。在中断向量区又何妨呢?

这个东西闪烁与不闪烁,看你单片机晶振。

你这程序严重的逻辑错误。与闪烁无关。

大学老师怎么了,照样鄙视之。。。。。

使用特权

评论回复
16
yczhang| | 2010-7-25 15:52 | 只看该作者
同意楼上的!

使用特权

评论回复
17
流行音乐| | 2010-7-25 15:53 | 只看该作者
这个问题很简单,不过上面的人都没有给出正确的答案。正确的程序如下:
      ORG 0
       MOV B,#0FFH
       JMP START
START:
       MOV P2,B
       MOV B,#0FFH
       JNB P1.0,XX1
       JNB P1.1,XX2
       JNB P1.2,XX3
       JNB P1.3,XX4
       JNB P1.4,XX5
       JNB P1.5,XX6
       JNB P1.6,XX7
       JNB P1.7,XX8
       SJMP START
XX1:       CLR B.0
       SJMP START
XX2:       CLR B.1
       SJMP START
XX3:       CLR B.2
       SJMP START
XX4:       CLR B.3
       SJMP START
XX5:       CLR B.4
       SJMP START
XX6:       CLR B.5
       SJMP START
XX7:       CLR B.6
       SJMP START
XX8:       CLR B.7
       SJMP START
       END
既然楼主说了“该问题只针对单片机初学者”,我们就不要指责这个问题太简单了。
这个程序其实还有需要改进的地方,例如同时按下多个键时,目前的程序并不能保证多个LED亮。

使用特权

评论回复
18
yrg1127|  楼主 | 2010-7-25 16:08 | 只看该作者
现在讨论的问题是为什么在仿真的时候。一个指令在不同的位置会有不同的结果(要求是按键下的时候相应的LED亮,按键释放的时候LED都是熄灭的哦)。
  
ORG 00H
START:   MOV P2,#0FFH   
       JNB P1.0,XX1
       JNB P1.1,XX2
       JNB P1.2,XX3
       JNB P1.3,XX4
       JNB P1.4,XX5
       JNB P1.5,XX6
       JNB P1.6,XX7
       JNB P1.7,XX8
       SJMP START

这种情况按键按下LED是闪烁的。。

但是

ORG 00H
START:   
       JNB P1.0,XX1
       JNB P1.1,XX2
       JNB P1.2,XX3
       JNB P1.3,XX4
       JNB P1.4,XX5
       JNB P1.5,XX6
       JNB P1.6,XX7
       JNB P1.7,XX8
MOV P2,#0FFH
       SJMP START
这样修改后,,LED却是真正的按键按下一直亮,按键释放就熄灭。

还有哦。。不管是那种情况下载到实物中都是正常的。。


呵呵。。

其实这个问题不是广告。。也不是什么想引起什么争论啊。。当然了学术的争论意义是很大的。。为这个题目,我跟学生都讨论了好久。。

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

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

通过这个列子,,作为教学,引导入门者来说,是一个非常好的实例,说明了以上的问题,并引导初学者在单片机入门的时候要结合实际情况说明问题。

使用特权

评论回复
19
jianguoid| | 2010-7-25 16:15 | 只看该作者
几个按键同时按,只能一个亮;既然只有一个亮,就在跳转里在判断下按键是否松开,再跳转到START;

使用特权

评论回复
20
jianguoid| | 2010-7-25 16:25 | 只看该作者
写程序我也是个新手,这样对不对?欢迎批评指正
ORG 0
       JMP START
START:   ;;;;;;;;;;;;;;;;;MOV P2,#0FFH去掉
       JNB P1.0,XX1       ; 是51的话还要先置位再判断
       SETB  P2.0   
START2: JNB P1.1,XX2
        SETB  P2.1
START3:JNB P1.2,XX3
        SETB  P2.2
START4:JNB P1.3,XX4
       SETB  P2.3
START5:JNB P1.4,XX5
       SETB  P2.4
START6:JNB P1.5,XX6
       SETB  P2.5
START7:JNB P1.6,XX7
       SETB  P2.6
START8:JNB P1.7,XX8
       SETB  P2.7
       SJMP START
XX1:       CLR P2.0
       SJMP START2
XX2:       CLR P2.1
       SJMP START3
XX3:       CLR P2.2
       SJMP START4
XX4:       CLR P2.3
       SJMP START5
XX5:       CLR P2.4
       SJMP START6
XX6:       CLR P2.5
       SJMP START7
XX7:       CLR P2.6
       SJMP START8
XX8:       CLR P2.7
       SJMP START
       END

使用特权

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

本版积分规则

0

主题

15

帖子

1

粉丝