- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-08-26 17:44:19
已绑定手机
注册会员
- 积分
- 83
|
#include <STC8H.h>
#include "adc.h"
#include <intrins.h>
#include "delay.h"
#define start ADC_CONTR |= 0x40; // 启动转换
#define conversionFlag ADC_CONTR&0x20//转换完成标志
#define cleanConversionFlag ADC_CONTR &= ~0x20; //ADC完成标志位清零
float adc(char ch, float voltage)
{
int res;
switch (ch)
{
//p10
case 'r':
ADC_CONTR &=0xF0;
break;
//p36
case 'l':
ADC_CONTR &=0xF0;
ADC_CONTR |=0x0E;
break;
// //p33
// case 'v':
// ADC_CONTR |=0x0B;
// ADC_CONTR &=0xFB;//第三位清零
//P11
case 'v':
ADC_CONTR &=0XF0;
ADC_CONTR |=0X01;
break;
}
EA = 0;
start
_nop_(); _nop_(); // 等待硬件响应
while (!(conversionFlag));
cleanConversionFlag
EA = 1;
res=(ADC_RES << 8) | ADC_RESL; // 将ADC_ //读取ADC结果
return adcRes(res,voltage);
}
void adc_init()//300KSPS@30.000MHz
{
ADC_CONTR |= 0x80; // 开启ADC电源
Delay1ms(10); // 延时
ADCCFG &= ~0x0f; //SPEED(0)
ADCCFG |= 0x20; //RESFMT(1) 结果右对齐
ADCTIM = 0xff; //
ADCEXCFG = 0x04;
}
float adcRes(int num,float voltage )
{
float res;
res = voltage * (num / 1024.0f);
// ADC_CONTR &= 0X10;
return res;
}
|
-
这是定时执行
-
然后测量切换通道
-
先测l_temp 出现这种情况
-
先测r_temp 显示结果就是正常的
|