51单片机 按键与led灯

按键的一端接到单片机的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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值