1.ASM1_KEY: 按鍵控制LED亮滅,3種情況
KEY.jpg (352.84 KB, 下載次數: 44)
下載附件
2019-12-13 20:15 上傳
- /**
- ******************************************************************************
- * @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)
2019-12-13 20:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|