关于c51的一个小程序问一下大侠!

[复制链接]
2424|6
 楼主| zhaigch 发表于 2009-10-17 22:55 | 显示全部楼层 |阅读模式
org 0030h
mov p2,#5ah
mov r0,p1
mov p2,r0
end


在51单片机中,想通过P1口接开关,但是程序运行时点那个开关都能使led亮,按理说不是这样的呀,“图示如下”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
九天牧歌 发表于 2009-10-17 23:14 | 显示全部楼层
程序的思路是对的,采集按键然后将按键状态发给输出端,但是作为程序你需要做一个基本的大循环,即while(1)这样的语句来营造一个可以一直循环的运行环境.
可以写成
org 0030h
mov p2,#5ah
a:
mov A,p1
必要的延时放置抖动
mov p2,A
jump a

end
真是很久很久没有用汇编了,不知道jump语法写对没有,用这个思路走才能检测出程序有没有按照你的思路来运行.
用C来写
while(1)
{
      A = P1;
      IF(A != B)   按键计数 = 按键计数+1;
     ELSE  按键计数 = 0;
      IF(按键计数>10) {
          B = A;
         按键计数 = 0;
     }
    P2 = B;
}
 楼主| zhaigch 发表于 2009-10-17 23:21 | 显示全部楼层
谢谢指教呀!
但是我这样为什么在proteus中仿真时,也可以达到目的呢!不是程序运行到mov p2,r0
后就不知道运行到那里了么?循环指令是jmp
 楼主| zhaigch 发表于 2009-10-17 23:23 | 显示全部楼层
我是一个初学者,c 我们还不学的
IC_99 发表于 2009-10-18 00:54 | 显示全部楼层
学C比较容易上手,汇编比较难
红金龙吸味 发表于 2009-10-18 09:15 | 显示全部楼层
ORG 0030H
            MOV P1, #0FFH
MAIN: MOV R0,  P1
             MOV P2, R0
             JMP MAIN
             END
试试看
 楼主| zhaigch 发表于 2009-10-18 12:15 | 显示全部楼层
谢谢!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

158

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部