找回密码
 立即注册
查看: 291|回复: 11

求救 ADC13通道跟内部1.19v基准比较 没有结果

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:319
  • 最近打卡:2025-04-30 08:16:39
已绑定手机

3

主题

35

回帖

987

积分

高级会员

积分
987
发表于 2025-1-14 16:40:40 | 显示全部楼层 |阅读模式
结果再p60 LED显示  adc13通道是可调电压的  跟内部1.19基准比较  中断没结果 求救



#include "stc8h.h"       //包含此头文件后,不需要再包含"reg51.h"头文件
#include "intrins.h"


void CMP_Isr() interrupt 21
{
    CMPCR1 &= ~0x40;                         //清中断标志
//   P47 = CMPCR1 & 0x01;                     //中断方式读取比较器比较结果
                P60 = CMPCR1 & 0x01;                     //中断方式读取比较器比较结果
}

void main()
{
    P_SW2 |= 0x80;  //扩展寄存器(XFR)访问使能

    P0M1 = 0x00;   P0M0 = 0xFF;   //设置P0为高阻输入模式
        //        P0M1 = 0x30;   P0M0 = 0x30;   //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P1M1 = 0x30;   P1M0 = 0x30;   //设置P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P2M1 = 0x3c;   P2M0 = 0x3c;   //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P3M1 = 0x50;   P3M0 = 0x50;   //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
    P4M1 = 0x3c;   P4M0 = 0x3c;   //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P5M1 = 0x0c;   P5M0 = 0x0c;   //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
    P6M1 = 0xff;   P6M0 = 0xff;   //设置为漏极开路(实验箱加了上拉电阻到3.3V)
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
               
                P40 = 0 ;
                P61 = 0 ;
               

    ADCTIM = 0x3f;                              //设置ADC内部时序
    P_SW2 &= 0x7f;
    ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16
    ADC_CONTR = 0x8d;                           //使能ADC模块 并设置为13通道

    CMPEXCFG = 0x00;
//  CMPEXCFG |= 0x40;                           //比较器DC迟滞输入选择,0:0mV; 0x40:10mV; 0x80:20mV; 0xc0:30mV

//  CMPEXCFG &= ~0x04;                          //P3.6为CMP-输入脚
    CMPEXCFG |= 0x04;                           //内部1.19V参考电压为CMP-输入脚

//    CMPEXCFG &= ~0x03;                          //P3.7为CMP+输入脚
//  CMPEXCFG |= 0x01;                           //P5.0为CMP+输入脚
//  CMPEXCFG |= 0x02;                           //P5.1为CMP+输入脚
    CMPEXCFG |= 0x03;                           //ADC输入脚为CMP+输入脚
               
               


    CMPCR2 = 0x00;
    CMPCR2 &= ~0x80;                            //比较器正向输出
//  CMPCR2 |= 0x80;                             //比较器反向输出
    CMPCR2 &= ~0x40;                            //使能0.1us滤波
//  CMPCR2 |= 0x40;                             //禁止0.1us滤波
//  CMPCR2 &= ~0x3f;                            //比较器结果直接输出
    CMPCR2 |= 0x10;                             //比较器结果经过16个去抖时钟后输出

    CMPCR1 = 0x00;
    CMPCR1 |= 0x30;                             //使能比较器边沿中断
//  CMPCR1 &= ~0x20;                            //禁止比较器上升沿中断
//  CMPCR1 |= 0x20;                             //使能比较器上升沿中断
//  CMPCR1 &= ~0x10;                            //禁止比较器下降沿中断
//  CMPCR1 |= 0x10;                             //使能比较器下降沿中断

//  CMPCR1 &= ~0x02;                            //禁止比较器输出
    CMPCR1 |= 0x02;                             //使能比较器输出

    P_SW2 &= ~0x08;                             //选择P3.4作为比较器输出脚
//  P_SW2 |= 0x08;                              //选择P4.1作为比较器输出脚
    CMPCR1 |= 0x80;                             //使能比较器模块

    EA = 1;

    while (1)
    {
//      P50 = CMPCR1 & 0x01;  //查询方式读取比较器比较结果
    }
}


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-1-14 17:03:00 | 显示全部楼层
什么型号,比较器是新版还是旧版
截图202501141700495769.jpg

截图202501141701596792.jpg

DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-01 03:26:07

16

主题

702

回帖

2470

积分

金牌会员

积分
2470
发表于 2025-1-14 17:13:44 | 显示全部楼层
先用官方例程测试一下比较器,看看结果是否正确
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-01 03:26:07

16

主题

702

回帖

2470

积分

金牌会员

积分
2470
发表于 2025-1-14 17:15:27 | 显示全部楼层
直接使用ISP软件里边的例程,修改一下IO口
截图202501141714324760.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:319
  • 最近打卡:2025-04-30 08:16:39
已绑定手机

3

主题

35

回帖

987

积分

高级会员

积分
987
发表于 2025-1-15 08:21:44 | 显示全部楼层
小*** 发表于 2025-1-14 17:15
直接使用ISP软件里边的例程,修改一下IO口

我就是再实验性里的程序修改 搞不懂哪里出错  ai8051U 正常 ai8h不正常

点评

试试我的例子:  详情 回复 发表于 2025-1-15 10:34
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1835

积分

金牌会员

积分
1835
发表于 2025-1-15 09:49:47 | 显示全部楼层
pro*** 发表于 2025-1-15 08:21
我就是再实验性里的程序修改 搞不懂哪里出错  ai8051U 正常 ai8h不正常

所以你用的8H是啥型号啥封装的?
回复 支持 反对

使用道具 举报 送花

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

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2025-1-15 10:34:22 | 显示全部楼层
pro*** 发表于 2025-1-15 08:21
我就是再实验性里的程序修改 搞不懂哪里出错  ai8051U 正常 ai8h不正常

试试我的例子:

STC8H系列-ADC相关程序.rar (1.18 MB, 下载次数: 35)

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:319
  • 最近打卡:2025-04-30 08:16:39
已绑定手机

3

主题

35

回帖

987

积分

高级会员

积分
987
发表于 2025-1-15 15:03:07 | 显示全部楼层
Lkck*** 发表于 2025-1-15 09:49
所以你用的8H是啥型号啥封装的?

8h8k_64
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:319
  • 最近打卡:2025-04-30 08:16:39
已绑定手机

3

主题

35

回帖

987

积分

高级会员

积分
987
发表于 2025-1-15 15:06:50 | 显示全部楼层
梁*** 发表于 2025-1-15 10:34
试试我的例子:

梁总的例子里面没有ADC通道跟基准1.19V比较的

点评

有全部通道的,你要比较,属于数据处理,你拿结果比较一下不就可以了。我实际的数据处理要比你的简单比较要复杂得多。  详情 回复 发表于 2025-1-15 21:38
回复 支持 反对

使用道具 举报 送花

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

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2025-1-15 21:38:50 | 显示全部楼层
pro*** 发表于 2025-1-15 15:06
梁总的例子里面没有ADC通道跟基准1.19V比较的

有全部通道的,你要比较,属于数据处理,你拿结果比较一下不就可以了。我实际的数据处理要比你的简单比较要复杂得多。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:12 , Processed in 0.143223 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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