You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EMU8086多级水位与雨量传感器代码故障修复请求

EMU8086 多级水位/雨量传感器代码故障修复

1. 修复80cm水位无法触发Yellow LED的问题

问题原因:水位区间判断逻辑错误,例如将80cm错误划分至Red LED触发区间,或条件判断遗漏了等于80的情况。
修复方案:明确水位区间划分逻辑,确保50-80cm区间触发Yellow LED:

; 假设转换后的水位数值存储在AX寄存器中
CMP AX, 50
JL GREEN_LED   ; 水位<50cm,触发Green LED
CMP AX, 80
JG RED_LED     ; 水位>80cm,触发Red LED
JMP YELLOW_LED ; 50cm≤水位≤80cm,触发Yellow LED

GREEN_LED:
; Green LED点亮执行代码
JMP END_CHECK

YELLOW_LED:
; Yellow LED点亮执行代码
JMP END_CHECK

RED_LED:
; Red LED点亮执行代码
END_CHECK:

2. 修复蜂鸣器错误关联雨量状态的问题

问题原因:蜂鸣器触发逻辑绑定了雨量传感器状态,未遵循仅Red LED激活时开启的需求。
修复方案:将蜂鸣器触发代码移至Red LED的激活分支内,其余状态下关闭蜂鸣器:

RED_LED:
; Red LED点亮执行代码
MOV AL, 01H   ; 假设蜂鸣器控制端口为01H,输出高电平触发蜂鸣
OUT 01H, AL
JMP END_CHECK

YELLOW_LED:
; Yellow LED点亮执行代码
MOV AL, 00H   ; 关闭蜂鸣器
OUT 01H, AL
JMP END_CHECK

GREEN_LED:
; Green LED点亮执行代码
MOV AL, 00H   ; 关闭蜂鸣器
OUT 01H, AL
JMP END_CHECK

3. 修复水位输入读取异常(输入80显示为0)的问题

问题原因:输入读取代码未正确将ASCII字符转换为十进制数值,例如仅读取单个字符、未处理多位数的十位/个位计算。
修复方案:实现多位数ASCII转十进制的逻辑,正确解析输入的水位值:

; 读取2位十进制水位输入并转换为数值
MOV CX, 2     ; 设定输入位数为2
MOV BX, 0     ; BX存储转换后的最终数值

INPUT_LOOP:
MOV AH, 01H   ; DOS中断01H读取单个输入字符
INT 21H
SUB AL, 30H   ; ASCII码转十进制数字
MOV AH, 0
XCHG AX, BX
MOV DX, 10
MUL DX        ; 现有数值×10,处理十位
ADD BX, AX    ; 加上当前个位数字
LOOP INPUT_LOOP

MOV AX, BX    ; AX中存储转换完成的水位数值(如输入80则AX=80)

内容的提问来源于stack exchange,提问作者NUR AQILAH BINTI ISHAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:25:56