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

用STC8H1K08的P3.1口无法做ADC检测问题,已解决。

[复制链接]

1

主题

0

回帖

9

积分

新手上路

积分
9
发表于 2024-7-10 11:22:11 | 显示全部楼层 |阅读模式
本帖最后由 KittyYang 于 2024-7-11 11:19 编辑

我用P3.6口和P3.1口做两个温度传感器的检测

以下是我的部分代码

#define ADC_PowerENABLE() (ADC_CONTR |= 0x80)
#define ADC_PowerDISABLE() (ADC_CONTR &= 0x7F)

#define TEMPERATURE_AD_CH 14   // ADC14
#define TEMPERATURE2_AD_CH 9   //ADC9

void ADC_config(void)
{
    ADCCFG              = (ADCCFG & ~ADC_SPEED_2X16T) | ADC_SPEED_2X1T;
    ADC_CONTR           |= 0x80;
    ADCCFG              |= (1 << 5);               
    EADC                = 0;                        
    P_SW2               |= 0x80;
    ADCTIM              = (0 << 7) | (1 << 5) | (31);
    P_SW2               &= 0x7f;
    ADC_PowerENABLE();                             
}
u16        Get_ADC12bitResult(u8 channel)        //channel = 0~15
{
                ADC_RES = 0;
                ADC_RESL = 0;

    ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channel;    //启动 AD 转换
    _nop_();
    _nop_();
    _nop_();
    while((ADC_CONTR & 0x20) == 0);   //等待ADC结束
    ADC_CONTR &= ~0x20;     //清除ADC结束标志
    return (((u16)ADC_RES << 8) | ADC_RESL);
}

u16 get_adc_value(u8 chn)
{
                u16 adcBuff[5];
    u8 i;
    u8 varout, varin;
    u16 temp,average;

                Get_ADC12bitResult(chn);                //参数i=0~15,查询方式做一次ADC, 切换通道后第一次转换结果丢弃. 避免采样电容的残存电压影响.
                Get_ADC12bitResult(chn);                //参数i=0~15,查询方式做一次ADC, 切换通道后第二次转换结果丢弃. 避免采样电容的残存电压影响.

                for(i=0;i<5;i++)
                {
                                adcBuff = Get_ADC12bitResult(chn);
                }
                temp = adcBuff[1] + adcBuff[2] + adcBuff[3];
                average = temp/3;
    return average;
}

static void temperature_rise_limit(void)
{
    u16 result1,result2;

               
                result1 = get_adc_value(TEMPERATURE_AD_CH);
               
               
                P3M0 &= ~0x02;
                P3M1 |= 0x02;
               result2 = get_adc_value(TEMPERATURE2_AD_CH);
}

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:456
  • 最近打卡:2025-05-02 08:26:53
已绑定手机

27

主题

341

回帖

1691

积分

金牌会员

机长

积分
1691
发表于 2024-7-10 12:39:59 | 显示全部楼层
截图202407101239147852.jpg
看红字部分,是不是ADC电源启动之后等待时间不足?
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15626
发表于 2024-7-10 12:46:31 | 显示全部楼层

请将你实际原理图的高清PDF 发上来,大家帮你分析

截图202407101245214409.jpg

截图202407101245443458.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:365
  • 最近打卡:2025-05-02 00:20:03

6

主题

319

回帖

2206

积分

金牌会员

积分
2206
发表于 2024-7-10 14:43:05 | 显示全部楼层
P31默认上电是准双向,如果程序里没有重新配置为高阻,有可能影响ADC检测,具体要看外围电路.
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-7-10 14:51:00 | 显示全部楼层
有什么问题能描述一下吗?只说有问题,我难以猜测。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 15:37 , Processed in 0.127220 second(s), 81 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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