按鍵控制LED的亮滅
匯編程序:
- ; ====================按鍵控制LED====================
- ; 外設端口切換寄存器 2 的地址
- P_SW2 DATA 0BAH
- ; 端口模式配置寄存器的地址
- P1M0 DATA 092H
- P1M1 DATA 091H
- P3M0 DATA 0B2H
- P3M1 DATA 0B1H
- ORG 0000H ; 設置程序的起始地址為 0000H,即程序的入口點
- LJMP MAIN ; 通過長跳轉指令 (LJMP) 跳轉到 MAIN 主程序的地址
- ORG 0100H ; 設置程序的重定位地址為 0100H,用于存放中斷向量等信息
- ; 主程序:
- MAIN:
- MOV SP, #5FH ; 設置堆棧指針
-
- ORL P_SW2, #80H ; 使能訪問 XFR
-
- MOV P1M0, #00H ; 清空 P1M0 寄存器
- MOV P1M1, #00H ; 清空 P1M1 寄存器
- MOV P3M0, #00H ; 清空 P3M0 寄存器
- MOV P3M1, #00H ; 清空 P3M1 寄存器
-
- MOV P1M0, #0FFH ;設置 P1 為推挽輸出模式。#0FFH 中的 0 不能省略
- MOV P1M1, #00H
- MOV P3M0, #00H ;設置 P3.2、P3.3、P3.4、P3.5 為高阻輸入模式。
- MOV P3M1, #3CH
-
- MOV P1, #0FFH ; 將 0xFF 賦值給 P1 寄存器,即將端口 P1 的所有引腳設為高電平,熄滅小燈
-
- LJMP LOOP ; 跳轉到循環體
- ; 循環體
- LOOP:
- MOV A, P3 ; 將 P3 寄存器的值移動到累加器 A
- MOV P1, A ; 將累加器 A 的值移動到端口 P1,實現 P1 輸出與 P3 寄存器相同的值
- LJMP LOOP ; 無條件跳轉到循環體,實現持續循環
- END
- ; ================================================================
復制代碼 硬件連接:
51hei.png (185.89 KB, 下載次數: 181)
下載附件
2024-1-7 22:19 上傳
Proteus 8 Professional 仿真結果:
1. 4 個按鍵都沒有按下
51hei1.png (188.05 KB, 下載次數: 183)
下載附件
2024-1-7 22:20 上傳
2. 按鍵 K1、K2、K3、K4 分別單獨按下
51hei2.png (444.17 KB, 下載次數: 187)
下載附件
2024-1-7 22:20 上傳
3. 同時按下按鍵 K1、K2、K3、K4 中的兩個
51hei3.png (693.22 KB, 下載次數: 179)
下載附件
2024-1-7 22:20 上傳
3. 同時按下按鍵 K1、K2、K3、K4 中的三個
51hei4.png (428.08 KB, 下載次數: 154)
下載附件
2024-1-7 22:20 上傳
3. 同時按下按鍵 K1、K2、K3、K4 中的四個
51hei5.png (187.66 KB, 下載次數: 166)
下載附件
2024-1-7 22:20 上傳
|