按键的一端接到单片机的IO口上,另一端与GND连接。当按键按下时,单片机的IO口与GND连接,端口电平被拉低。因此通过读取端口电平即可获知按键状态。就这么简单,仍然在P中,搜button即可。
LED搜LEDRED即可,红灯。
注意侧边栏,点击之后是列表会变的。
通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。即单片机在按键被按下的一瞬间检测到的信号是很多次的忽高忽低的电平信号,因此,我们需要使用按键消抖的算法使单片机获取到正常稳定的信号。常用的操作是延时,即当检测到低电平输入时,延时若干时间(常用20ms),再次采集信号,如果仍是低电平,则为按键被按下。
org 0000h
ajmp loop
org 0030h
mov a,#0h
call delay ; 先延时一下,不稳定
loop: jnb p1.0,tt ; JNB是位状态为0转移
jmp loop
tt: call delay ; 延时
jb P1.0,loop ; JB是位状态为1转移
mov p2,a ; 全不亮
cpl a
jmp loop
delay: mov r5,#50 ; 延时。
d1: mov r6,#40
d2: mov r7,#20
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
end