0
回复
收藏
点赞
分享
发新帖
论坛首页
电源技术综合区
求解按键程序设计
求解按键程序设计
正在学习51的汇编,对按键扫描很是不了解.1.刚开机的时候扫描按键,但是在执行了按键的程序后,单片机转到其他地方去执行某条指令了,如何再对按键进行扫描? 2.比如按下一个键后,某一个灯亮了,如何又能通过按同一个键让它熄灭?相当于同一个键既要实现开机,又要实现关机,怎么处理呢?附件为扫描到键按下后,灯一直亮,如何通过按下同一个键让它熄灭?程序比较简单,现在也编不出来有实际意义的程序,只想得到对一个问题的解答.自学汇编的确很难,请高手们指点指点.
1161269170.txt
全部回复(4)
只看楼主
正序查看
倒序查看
现在还没有回复呢,说说你的想法
ytuan
LV.3
2
2006-10-21 18:30
我也是初学者,用C语言写啊,简单些啊.
#include 《at89X51.h》
bit k=0;
void scan(void)
{unsigned int i;
if(!P2_0)
{for(i=0;i<3000;i++);
if(!P2_0)k=~k;
}
}
void main(void)
{while(1)
{scan();
if(k)P0_0=0;
else P0_0=1;
}
}
0
回复
提示
abing
LV.8
3
2006-10-21 18:55
我看了一下你的程序根本不能工作.
不知你有没有学习开发工具,致少要有一片单片机和一个编程器.
编程器自己做的话只要几元,买别人的也只要20多元(当然可以考虑和我买,哈哈)
KEIL51软件会用了吗?要是不会最好找个了解一点的人指点一下
OK
按键检测不是用CLR,可以用JNB或JB
说一个简单的程序
//LED阴极接于P0.0口 阳极串接一个220欧电阻到+5V
org 0030H //一般简单的程序不用也行,0000H-002FH用于中断入口
clr P0 //初始化P0口
main: //主程序
SETB P0.0 //P0口输出高电平,LED灭
LJMP delay //廷时一段时间,要不然闪的太快根本看不出来.就算你是超人,由于LED本身有廷时,所以也看不出来.哈哈
CLR P0.0 //将P0.0口输出低电平,LED亮
LJMP delay //廷时
LJMP main //返回主程序
///////////////////////////////廷时程序
delay:
mov r5,#255 //
D1:mov r6,#255 //
D2:DJNZ r6,D2
DJNZ r5,D1
/////////////////////////////廷时时间和使用的晶振有关
END
执行这个程序你会看到LED不断的闪烁
给初学者一些提示:
1、一定要有很好的耐性,特别是没人指导时
mov r5,#255 以这句来说,有时用了不用输入法输入的“,”结果是不一样的.还有#255的“#”也不要忘了.
2、细心
很多初学都写的程序多多少少都会有点错的,我曾这样写过
RR P0//
这样是一个完全错误的语句,还有常反“0”与"o"搞错
如有不对之处请各位网友指点!!!!
0
回复
提示
choyse
LV.1
4
2006-10-21 19:07
@abing
我看了一下你的程序根本不能工作.不知你有没有学习开发工具,致少要有一片单片机和一个编程器.编程器自己做的话只要几元,买别人的也只要20多元(当然可以考虑和我买,哈哈)KEIL51软件会用了吗?要是不会最好找个了解一点的人指点一下OK按键检测不是用CLR,可以用JNB或JB说一个简单的程序//LED阴极接于P0.0口 阳极串接一个220欧电阻到+5Vorg 0030H //一般简单的程序不用也行,0000H-002FH用于中断入口clrP0 //初始化P0口main: //主程序SETBP0.0 //P0口输出高电平,LED灭LJMPdelay //廷时一段时间,要不然闪的太快根本看不出来.就算你是超人,由于LED本身有廷时,所以也看不出来.哈哈CLRP0.0 //将P0.0口输出低电平,LED亮LJMP delay //廷时LJMPmain //返回主程序///////////////////////////////廷时程序delay: movr5,#255 // D1:movr6,#255 // D2:DJNZr6,D2 DJNZr5,D1/////////////////////////////廷时时间和使用的晶振有关END执行这个程序你会看到LED不断的闪烁给初学者一些提示:1、一定要有很好的耐性,特别是没人指导时movr5,#255 以这句来说,有时用了不用输入法输入的“,”结果是不一样的.还有#255的“#”也不要忘了.2、细心很多初学都写的程序多多少少都会有点错的,我曾这样写过RRP0//这样是一个完全错误的语句,还有常反“0”与"o"搞错如有不对之处请各位网友指点!!!!
谢谢你给大家的提醒,呵呵.有机会也要帮帮我啊.
0
回复
提示
hotpower
LV.5
5
2006-10-22 17:20
http://blog.21ic.org/more.asp?name=hotpower&id=536
http://blog.21ic.org/more.asp?name=hotpower&id=117
0
回复
提示
工程师都在看
【 DigiKey DIY原创大赛】-基于STM32G030CBT6的GPS北斗双模授时终端
小小申
【 DigiKey DIY原创大赛】12自由度教育性四足机器狗
严己宽人111
【 DigiKey DIY原创大赛】自平衡莱罗三角形(三)- 电路模块组成
地瓜patch
【 DigiKey DIY原创大赛】在嵌入式终端上基于本地大模型实现的离线语音聊天机器人(1)
xiao__qiao
AD工程PCB文件导入LCEDA故障问题解决。
程序小白
精华推荐
换一换
立
即
发
帖