按键控制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
- ; ================================================================
复制代码 硬件连接:
Proteus 8 Professional 仿真结果:
1. 4 个按键都没有按下
2. 按键 K1、K2、K3、K4 分别单独按下
3. 同时按下按键 K1、K2、K3、K4 中的两个
3. 同时按下按键 K1、K2、K3、K4 中的三个
3. 同时按下按键 K1、K2、K3、K4 中的四个
|