8051汇编 8个按键分别控制8个LED

前段时间一直用的C语言编写8051程序,但要更深入的了解单片机的底层原理,还是得使用汇编

以下是我写的练习,8个按键分别控制8个LED

LED是高电平点亮,接在P1口

按键是低电平表示触发,接在P0口


		ORG 0000H
			JMP INIT
		ORG 0030H
INIT:		MOV P1, #00H	;初始化LED IO,高电平有效
			MOV P0, #0FFH	;初始化按键IO,低电平有效
			MOV A, #01H		
MAIN:		MOV R0, A 		;保存A的状态
			ADD A, P0		;将A的值与P0相加
			CJNE A, #0FFH, NO_PRESS ;如果相加后的结果不为FFH,跳转
            ACALL DELAY     ;调用延时,防抖
            MOV A, R0
            ADD A, P0
            CJNE A, #0FFH, NO_PRESS
			MOV P1, R0		;如果相加后的结果为FFH,设置LED
NO_PRESS:	MOV A, R0		;还原A的状态
			RL A			;A向左位移
			JMP MAIN		;跳转到MAIN,循环执行
            
DELAY:      MOV R7, #26H    ;10ms延时
LOOP1:      MOV R6, #82H
            DJNZ R6, $
            DJNZ R7, LOOP1
			RET
            
		END




  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值