1.ASM1_KEY: 按键控制LED亮灭,3种情况
- /**
- ******************************************************************************
- * @file asm.asm
- * @author Alex——小白
- * @version V1.0
- * @date 2019.9.1
- * @brief 3种方法实现KEY to LED
- ******************************************************************************
- * @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,[ DISCUZ_CODE_1 ]nbsp; ;长按检测,若有则一直死循环
- ; 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,[ DISCUZ_CODE_1 ]nbsp; ;长按检测,若有则一直死循环
- ; CPL P1.0 ;若有按键,则LED状态翻转
- ; Next:
- ; JB P0.1,Over ;判断P0.1按键是否检测到,若无跳到Over
- ; LCALL Delay ;若有,延时消抖
- ; JB P0.1,Over ;再次判断按键是否检测到
- ; JNB P0.1,[ DISCUZ_CODE_1 ]nbsp; ;长按检测,若有则一直死循环
- ; 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
复制代码
ASM1_KEY.zip
(65.37 KB, 下载次数: 15)
|