前段时间一直用的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