找回密码
 立即注册
查看: 80|回复: 4

Ai8H-20250724,ADC汇编自己修改,不知道是否写错及其他问题?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-31 10:40:07
已绑定手机

2

主题

6

回帖

24

积分

新手上路

积分
24
发表于 2025-7-31 10:40:07 | 显示全部楼层 |阅读模式

程序截图

程序截图

STCAD1:      ORL    0BAH,#80H             MOV    094H,#00H
             MOV    093H,#00H
             MOV    092H,#00H
             MOV    091H,#00H
             MOV    096H,#00H
             MOV    095H,#00H
             MOV    092H,#00H
             MOV    091H,#00H
             MOV    0B2H,#00H
             MOV    0B1H,#00H
             MOV    0CAH,#00H
             MOV    0C9H,#00H

             MOV    092H,#00H
             MOV    091H,#00H
             MOV     DPTR,#0FEA8H
             MOV     A,#3FH
             MOVX    @DPTR,A
             MOV    0DEH,#0FH
             MOV    0BCH,#80H

             ORL     0BCH,#40H
             NOP
             NOP
             MOV      A,0BCH
             JNB      ACC.5,$-2
             ANL     0BCH,#11011111B                                     ;?????与  指令,表示把(累加器A)的数做与运算。(全1出1  有0为0)

             MOV     0DEH,#00H
             MOV     A,0BDH
             MOV     B,0BEH
             RET


回复

使用道具 举报 送花

3

主题

2077

回帖

1002

积分

等待验证会员

积分
1002
发表于 2025-7-31 10:43:00 | 显示全部楼层
STC8H-20250724 ADC汇编代码分析与建议

针对您提供的STC8H系列单片机ADC相关汇编代码,现进行专业分析并提出改进建议:

1. 代码结构问题
当前代码存在多处重复指令:
MOV 092H,#00H 和 MOV 091H,#00H 重复出现两次
部分寄存器地址(如0B2H、0B1H)未明确用途,建议添加注释说明

2. ADC配置异常
0BAH寄存器设置为#80H,可能影响ADC通道选择,建议确认是否符合数据手册要求
0FEA8H地址对应ADC控制寄存器,写入3FH可能导致配置错误,需核对ADC初始化参数

3. 时序问题
ORL 0BCH,#40H 后缺少必要的延时操作,建议添加至少2个NOP指令确保配置生效
MOV A,0BCH 指令后无状态检查,建议增加判断逻辑确保ADC已准备好

4. 建议改进方案
(1) 优化初始化流程:
MOV 0BAH,#80H       ; 设置ADC通道
MOV 094H,#00H       ; 清除结果寄存器
MOV 093H,#00H
MOV 092H,#00H
MOV 091H,#00H
MOV 096H,#00H
MOV 095H,#00H
MOV 0B2H,#00H
MOV 0B1H,#00H
MOV 0CAH,#00H
MOV 0C9H,#00H

(2) 正确配置ADC:
MOV DPTR,#0FEA8H   ; ADC控制寄存器地址
MOV A,#3FH         ; 根据需求设置ADC参数
MOVX @DPTR,A       ; 写入配置
MOV 0DEH,#0FH      ; 设置采样时间
MOV 0BCH,#80H      ; 初始化控制寄存器

(3) 增加延时和状态检查:
ORL 0BCH,#40H      ; 启动ADC转换
NOP
NOP
MOV A,0BCH         ; 读取状态寄存器
JNB ACC.7,$        ; 等待转换完成

5. 注意事项
确保ADC参考电压配置正确
检查ADC通道选择是否与实际硬件连接一致
建议在ADC转换前后添加中断处理逻辑
对关键寄存器操作建议添加注释说明功能

以上分析基于STC8H系列单片机ADC模块的规范要求,具体实现需结合实际硬件设计。建议使用官方开发工具进行代码验证,并参考数据手册中的ADC章节进行详细配置。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-07-31 10:40:07
已绑定手机

2

主题

6

回帖

24

积分

新手上路

积分
24
发表于 2025-7-31 13:23:58 | 显示全部楼层
国芯人*** 发表于 2025-7-31 10:43
STC8H-20250724 ADC汇编代码分析与建议

针对您提供的STC8H系列单片机ADC相关汇编代码,现进行专业分析并提 ...

完成,感谢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:622
  • 最近打卡:2025-08-11 01:47:42

11

主题

1222

回帖

5842

积分

论坛元老

积分
5842
发表于 6 天前 | 显示全部楼层
  1. ;21.7.3 格式化 ADC 转换结果
  2. ;汇编代码
  3. ;测试工作频率为 11.0592MHz
  4. ADC_CONTR DATA 0BCH
  5. ADC_RES DATA   0BDH
  6. ADC_RESL DATA  0BEH
  7. ADCCFG DATA    0DEH
  8. P_SW2 DATA     0BAH
  9. ADCTIM XDATA   0FEA8H
  10. P1M1 DATA 091H
  11. P1M0 DATA 092H
  12. P0M1 DATA 093H
  13. P0M0 DATA 094H
  14. P2M1 DATA 095H
  15. P2M0 DATA 096H
  16. P3M1 DATA 0B1H
  17. P3M0 DATA 0B2H
  18. P4M1 DATA 0B3H
  19. P4M0 DATA 0B4H
  20. P5M1 DATA 0C9H
  21. P5M0 DATA 0CAH
  22.                 ORG  0000H
  23.                 LJMP START
  24.                 ORG  0100H
  25. START:
  26.                 MOV SP, #5FH
  27.                 ORL P_SW2,#80H ;使能访问 XFR,没有冲突不用关闭
  28.                 MOV P0M0, #00H
  29.                 MOV P0M1, #00H
  30.                 MOV P1M0, #00H
  31.                 MOV P1M1, #00H
  32.                 MOV P2M0, #00H
  33.                 MOV P2M1, #00H
  34.                 MOV P3M0, #00H
  35.                 MOV P3M1, #00H
  36.                 MOV P4M0, #00H
  37.                 MOV P4M1, #00H
  38.                 MOV P5M0, #00H
  39.                 MOV P5M1, #00H
  40.                 MOV P1M0, #00H ;设置 P1.0 为 ADC 口
  41.                 MOV P1M1, #01H
  42.                 MOV DPTR, #ADCTIM ;设置 ADC 内部时序
  43.                 MOV A,#3FH
  44.                 MOVX @DPTR,A
  45.                 MOV ADCCFG,#0FH ;设置 ADC 时钟为系统时钟/2/16
  46.                 MOV ADC_CONTR,#80H ;使能 ADC 模块
  47.                 ORL ADC_CONTR,#40H ;启动 AD 转换
  48.                 NOP
  49.                 NOP
  50.                 MOV A,ADC_CONTR ;查询 ADC 完成标志
  51.                 JNB ACC.5,$-2
  52.                 ANL ADC_CONTR,#NOT 20H ;清完成标志
  53.                 MOV ADCCFG,#00H ;设置结果左对齐
  54.                 MOV A,ADC_RES ;A 存储 ADC 的 10 位结果的高 8 位
  55.                 MOV B,ADC_RESL ;B[7:6]存储 ADC 的 10 位结果的低 2 位,B[5:0]为 0
  56.                 ; MOV ADCCFG,#20H ;设置结果右对齐
  57.                 ; MOV A,ADC_RES ;A[3:0]存储 ADC 的 10 位结果的高 2 位,A[7:2]为 0
  58.                 ; MOV B,ADC_RESL ;B 存储 ADC 的 10 位结果的低 8 位
  59.                 SJMP $
  60.                 END
复制代码

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:257
  • 最近打卡:2025-08-05 16:33:59

52

主题

171

回帖

2017

积分

金牌会员

积分
2017
发表于 6 天前 | 显示全部楼层
这个include对应系列mcu的头文件,就不用手写了
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-11 13:09 , Processed in 0.118089 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表