当前位置:编程学习 > 汇编语言 >>

单片机编程高手,麻烦您帮我看看独立键盘对吗?我怎么就又不了?

DLJP:MOV P3,#0FFH;P3口赋值高电平 MOV A,#0FFH;A也为高电平P3比较做准备 ABC1:CJNE A,P3,ABC2;比较有键盘输入吗? AJMP ABC1;重新扫描 ABC2:LCALL YSSS;延时防抖 MOV B,P3;把p3口数据放入一个地方 CJNE A,P3,$;等待放键 ABC3:MOV A,#11111110B;送人动态扫描条件 MOV R0,#00H;记录那个键按下? ABC5:CJNE A,B,ABC4;比较 XCH A,R0;交换条件 RET ABC4:INC R0;记录再次扫描 RL A;左一次 CJNE R0,#08,ABC5;判断r0大于8 吗? AJMP ABC3;如果大于8重新赋值
答案:这段程序我看了一半,就发现缺不少东西,尤其是延时和读P3口
在第7行    CJNE A,P3,$;   循环的读取P3,等待放键    之前,
每一次读P3口状态,必须MOV P3,# 0FFH
所以至少应该这样:
LOOP:MOV P3,# 0FFH
             CJNE A,P3,LOOP
而且在键盘程序中,延时消抖是非常重要的,判断按键是否确实松开也很重要
建议你找本讲51汇编的书看看相关部分,理解一下
就算是P3口的8个按键程序,也要比这长的多
 
天上1云间 
我想问一下,楼主为什么用汇编编写单片机程序呀,C51不是更方便吗。 
 
回答一下,按键程序的本身,C和汇编其实差不了多少,都比较麻烦。
其他:LCALL YSSS;延时防抖
这个延时程序 也贴出来 我想问一下,楼主为什么用汇编编写单片机程序呀,C51不是更方便吗。 

上一个:东芝单片机
下一个:这段汇编语言是什么意思?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,