登录
首页 单片机论坛
回帖 发帖
正文

主题:初学者 P0口上开关控制P1口小灯亮灭

点击:2665 回复:6

[size=4]
这个是我照教材上画的图,程序也是书上写的,目的是向用开关控制小灯亮灭,但是现在发现不管开关什么状态,小灯在执行sjmp $后就一直亮着。由于我初学看不出来哪里有问题,是图的问题还是程序的问题,希望能帮我解决这个对我来说是大问题的问题,谢谢。附件有截图的原始dsn图。
程序:
LIGHT BIT P1.0
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:CLR LIGHT
    SJMP $
    END
附件:
[本地下载]
[/size]
http://b61.photo.store.qq.com/http_imgload.cgi?/rurl4_b=4bd53b5170a96268f00b969368f9cad58f59b6d5792743f36020bfcab13e4bc57124431944631c8a0d9012ad7ef4b081646e1d4c49c8d03c7f50c2d01d8677b05d0d21e45fb9c3830f969a250de8b33509773084&a=70&b=61
最后修改:2011/1/23 14:31:35
11-01-23 14:25
有人能帮帮忙吗?
11-01-23 14:32
开关在哪里呢?程序里没有啊?
11-01-25 11:09
程序的问题。主程序第一条语句执行后点亮挂在p1.0口的小灯,第二条语句SJMP $为死循环,即一直跳转到该语句本身。程序当中未看到有读p0口开关状态的指令,所以开关无法控制小灯的状态。
11-01-28 11:28
程序就这两句:
CLR LIGHT;将灯的电平(P1.0)转为低电平,现在的板子一般都是初值设为高电平而由单片机来控制低电平的,也就是说,当P1.0变成低电平后,就会的电流通过灯就亮了!
    SJMP $;按命令的理解,就是跳转到$这句,但$就是自己,也就是说不断地自己在这里转,也就是进入了S循环,
所以你的灯一亮了就关不了了。
11-01-29 13:31
跳转没有用好
在程序中点亮小灯和熄灭小灯的语句写一起,在两个语句后面都要加上延迟时间,最后在这几句之间循环就可以了
11-02-09 16:44
试试这个程序
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
    JB  P0.0,$ ;按下按键
    JNB  P0.0,$  ;松开按键
    CPL P1.0
    SJMP MAIN
    END
11-02-14 10:51

工控新闻

更多新闻资讯