1.ASM1_KEY: 按键控制LED亮灭,3种情况
/**
******************************************************************************
* @file asm.asm
* @author Alex——小白
* @version V1.0
* @date 2019.9.1
* @brief 3种方法实现KEY to LED
* @store 有家Proteus仿真店子
* @Link https://shop484534014.taobao.com/
* @Email [email protected]
******************************************************************************
* @attention All Rights Reserved
**/
ORG 0030H ;程序执行的起始地址
LJMP Main ;跳转到main函数
ORG 0100H ;程序跳转到0100H开始执行
;方法1:
Main: ;最简单的按键赋值(8个按键)
MOV P1,P0 ;将P0状态赋给P1
SJMP Main ;跳转到main,死循环
;方法2:
; Main: ;P0.0按键控制P1.0的LED(1个按键)
; JB P0.0,Over ;判断按键是否检测到,若无跳到Main
; LCALL Delay ;若有,延时消抖
; JB P0.0,Over ;再次判断按键是否检测到
; JNB P0.0,$ ;长按检测,若有则一直死循环
; CPL P1.0 ;若有按键,则LED状态翻转(CPL表示去反)
; Over:
; SJMP Main ;跳转到main,死循环
;方法3:
; Main: ;P0.0-1按键控制P1.0-1的LED(2个按键)
; JB P0.0,Next ;判断P0.0按键是否检测到,若无跳到Next
; LCALL Delay ;若有,延时消抖
; JB P0.0,Next ;再次判断按键是否检测到
; JNB P0.0,$ ;长按检测,若有则一直死循环
; CPL P1.0 ;若有按键,则LED状态翻转
; Next:
; JB P0.1,Over ;判断P0.1按键是否检测到,若无跳到Over
; LCALL Delay ;若有,延时消抖
; JB P0.1,Over ;再次判断按键是否检测到
; JNB P0.1,$ ;长按检测,若有则一直死循环
; CPL P1.1 ;若有按键,则LED状态翻转
; Over:
; SJMP Main ;跳转到main,死循环
Delay: ;t=t1*20=10ms,修改R6的值即可更改时间(不精准)
MOV R6, #014H ;014H=20
D1:
MOV R7, #0FAH ;t1=250*2=500
D2:
DJNZ R7, D2 ;R7=250自减,直到为0跳出循环,双周期
DJNZ R6, D1 ;R6=020自减,直到为0跳出循环,双周期
RET
END
如需其他代码,请联系QQ844545015