求救 ADC13通道跟内部1.19v基准比较 没有结果
结果再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;//查询方式读取比较器比较结果
}
}
什么型号,比较器是新版还是旧版
先用官方例程测试一下比较器,看看结果是否正确 直接使用ISP软件里边的例程,修改一下IO口 小飞侠 发表于 2025-1-14 17:15
直接使用ISP软件里边的例程,修改一下IO口
我就是再实验性里的程序修改 搞不懂哪里出错ai8051U 正常 ai8h不正常 proktv 发表于 2025-1-15 08:21
我就是再实验性里的程序修改 搞不懂哪里出错ai8051U 正常 ai8h不正常
所以你用的8H是啥型号啥封装的? proktv 发表于 2025-1-15 08:21
我就是再实验性里的程序修改 搞不懂哪里出错ai8051U 正常 ai8h不正常
试试我的例子:
Lkck8210 发表于 2025-1-15 09:49
所以你用的8H是啥型号啥封装的?
8h8k_64 梁工 发表于 2025-1-15 10:34
试试我的例子:
梁总的例子里面没有ADC通道跟基准1.19V比较的 proktv 发表于 2025-1-15 15:06
梁总的例子里面没有ADC通道跟基准1.19V比较的
有全部通道的,你要比较,属于数据处理,你拿结果比较一下不就可以了。我实际的数据处理要比你的简单比较要复杂得多。
页:
[1]
2