51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序

实验内容:

        某单片机控制系统,P1口接有8发光二极管,P3.0P3.1P3.2P3.3接有4个开关K1K2K3K4,试画出接口电路,并编程使得当K1按下时8个发光二极管全亮;当K2按下时8个发光二极管全灭;当K3按下时8个发光二极管由左向右点亮;当K4按下时8个发光二极管由右向左点亮。通过汇编语言实现。

实验环境:

     Keil软件、 51单片机开发板

实验电路:

        独立按键电路连接:

        

LED模块电路连接(共阳极连接方式): 

 

 实验效果图:

k1:(LED全部点亮)

 k2:(LED全部熄灭)

k3:(LED向右点亮)

 

 k4:(LED向左点亮)

 

实现代码:

MOV B,#0FEH 	;用于等下流水灯的左移、右移
MOV P0,#00H   ;熄灭开发板上的数码管
UP2:   MOV   A,P3          
       ANL   A,#0FH        
       CJNE  A,#0FH,NEXT1 ;比较立即数与寄存器,不相等则转移 
       SJMP  UP2          
NEXT1: 
		LCALL D10ms        ;延时消抖
		MOV   A,P3         
        ANL   A,#0FH	
        CJNE  A,#0FH,NEXT2	;消抖后的重新检测 (一次检测4个按键)
        SJMP  UP2
NEXT2:						;接下来具体检测是哪一按键被按下
		JB  P3.0,NEXT3   ;不是P3.0按下 转移检测下一个按键
        LCALL K1         ;是P3.0按下,转移到K1按键功能子函数 
NEXT3:  
		JB  P3.1,NEXT4   ;JB是判断位变量的转移指令,如果P3.1是1 那么就转移到NEXT4(说明没有被按下)
        LCALL K2          ;上面不转移,则说明按键P3.1被按下,那么就转移到K2的按键功能子函数 
NEXT4:  
		JB  P3.2,NEXT5   
        LCALL K3           
NEXT5: 
		JB   P3.3,UP2     
        LCALL K4           
        LJMP  UP2

K1: MOV   P2,#0FFH      ;LED全亮
    RET
K2: MOV   P2,#00H    	;LED全灭
    RET
K3: MOV   P2,B			;按一次LED灯向右移动一位 
    LCALL DELAY		;按住不松手就是流水灯	
    MOV   A,B
    RL    A           	;循环左移 
    MOV   B,A
    RET
K4: MOV   P2,B			;按一次LED灯向左移动一位 
    LCALL DELAY		;按住不松手就是流水灯	
    MOV   A,B
    RR    A             ;循环右移移
    MOV   B,A
    RET

D10ms:			;延时函数 用于按键消抖@11.0592MHz
	PUSH 30H
	PUSH 31H
	MOV 30H,#18
	MOV 31H,#230
NEXT6:
	DJNZ 31H,NEXT6
	DJNZ 30H,NEXT6
	POP 31H
	POP 30H
	RET

DELAY:				;将上面的延时函数进行改造
	MOV	R7,#50		;修改立即数,就可以调节流水灯的快慢,当前为50,延时时间为500ms
D1:
	PUSH 30H
	PUSH 31H
	MOV 30H,#18
	MOV 31H,#230
NEXT:
	DJNZ 31H,NEXT
	DJNZ 30H,NEXT
	POP 31H
	POP 30H	
	DJNZ R7,D1
	RET

END

 

### IntelliJ IDEA 中通义灵码 AI 功能介绍 IntelliJ IDEA 提供了一系列强大的工具来增强开发体验,其中包括与通义灵码 AI 相关的功能。这些功能可以帮助开发者更高效地编写代码并提高生产力。 #### 安装通义灵码插件 为了使用通义灵码的相关特性,在 IntelliJ IDEA 中需要先安装对应的插件: 1. 打开 **Settings/Preferences** 对话框 (Ctrl+Alt+S 或 Cmd+, on macOS)。 2. 导航到 `Plugins` 页面[^1]。 3. 在 Marketplace 中搜索 "通义灵码" 并点击安装按钮。 4. 完成安装后重启 IDE 使更改生效。 #### 配置通义灵码服务 成功安装插件之后,还需要配置通义灵码的服务连接信息以便正常使用其提供的各项能力: - 进入设置中的 `Tools | Qwen Coding Assistant` 菜单项[^2]。 - 填写 API Key 和其他必要的认证参数。 - 测试连接以确认配置无误。 #### 使用通义灵码辅助编程 一旦完成上述准备工作,就可以利用通义灵码来进行智能编码支持了。具体操作如下所示: ##### 自动补全代码片段 当输入部分语句时,IDE 将自动提示可能的后续逻辑,并允许一键插入完整的实现方案[^3]。 ```java // 输入 while 循环条件前半部分... while (!list.isEmpty()) { // 激活建议列表选择合适的循环体内容 } ``` ##### 解释现有代码含义 选中某段复杂的表达式或函数调用,右键菜单里会有选项可以请求通义灵码解析这段代码的作用以及优化意见。 ##### 生产测试案例 对于已有的业务逻辑模块,借助于通义灵码能够快速生成单元测试框架及初始断言集,减少手动构建的成本。 ```python def test_addition(): result = add(2, 3) assert result == 5, f"Expected 5 but got {result}" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值