找回密码
 立即注册
查看: 198|回复: 5

8H1K08在keil仿真时没有进入ADC中断

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-21 09:54:15
已绑定手机

13

主题

21

回帖

157

积分

注册会员

积分
157
发表于 2025-2-17 14:40:22 | 显示全部楼层 |阅读模式
8H1K08在keil仿真时没有进入ADC中断,
或是用查询法时一直都卡在等待语句,
照着官方提供的例子也是遇到同样的问题,这有什么解决办法吗?


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-2-17 15:28:29 | 显示全部楼层
截图202502171528142234.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-2-17 15:29:12 | 显示全部楼层
#include "reg51.h"
#include "intrins.h"

sfr     ADC_CONTR   =   0xbc;
sfr     ADC_RES     =   0xbd;
sfr     ADC_RESL    =   0xbe;
sfr     ADCCFG      =   0xde;

sfr     P_SW2   =   0xba;
#define ADCTIM  (*(unsigned char volatile xdata *)0xfea8)

sbit    EADC    =   IE^5;

sfr     P0M1    =   0x93;
sfr     P0M0    =   0x94;
sfr     P1M1    =   0x91;
sfr     P1M0    =   0x92;
sfr     P2M1    =   0x95;
sfr     P2M0    =   0x96;
sfr     P3M1    =   0xb1;
sfr     P3M0    =   0xb2;
sfr     P4M1    =   0xb3;
sfr     P4M0    =   0xb4;
sfr     P5M1    =   0xc9;
sfr     P5M0    =   0xca;

void ADC_Isr() interrupt 5
{
    ADC_CONTR &= ~0x20;                         //清中断标志
    P2 = ADC_RES;                               //读取ADC结果
    ADC_CONTR |= 0x40;                          //继续AD转换
}

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;

    P1M0 = 0x00;                                //设置P1.0为ADC口
    P1M1 = 0x01;
    P_SW2 |= 0x80;
    ADCTIM = 0x3f;                              //设置ADC内部时序
    P_SW2 &= 0x7f;
    ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16
    ADC_CONTR = 0x80;                           //使能ADC模块
    EADC = 1;                                   //使能ADC中断
    EA = 1;
    ADC_CONTR |= 0x40;                          //启动AD转换

    while (1);
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2025-2-17 15:54:45 | 显示全部楼层
你是软仿那还是硬仿?硬件仿真才会有ADC和ADC中断。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-21 09:54:15
已绑定手机

13

主题

21

回帖

157

积分

注册会员

积分
157
发表于 2025-2-20 12:00:52 | 显示全部楼层
梁*** 发表于 2025-2-17 15:54
你是软仿那还是硬仿?硬件仿真才会有ADC和ADC中断。

这个中断问题解决了,现在发现AD口p30跟外界断开(有接104电容)后,读AD口数据还是有数据,这个怎么解决?目前AD脚p30已被割断,没有跟外界相连



点评

ADC输入口是高阻,必须接一个稳定的电压才有稳定读数,你输入口悬空,ADC读数就会飘忽不定。  详情 回复 发表于 2025-2-20 13:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2025-2-20 13:56:54 | 显示全部楼层
春去冬*** 发表于 2025-2-20 12:00
这个中断问题解决了,现在发现AD口p30跟外界断开(有接104电容)后,读AD口数据还是有数据,这个怎么解决 ...

ADC输入口是高阻,必须接一个稳定的电压才有稳定读数,你输入口悬空,ADC读数就会飘忽不定,你对地接一个下拉电阻就可以了。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 07:07 , Processed in 0.149741 second(s), 84 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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