- 打卡等级:初来乍到
- 打卡总天数:8
- 最近打卡:2025-08-23 11:14:05
已绑定手机
注册会员
- 积分
- 67
|
#include <STC8G.H>
#include <intrins.h>
#include "adc.h"
void AdcSetRate(void) //100KSPS@12.000MHz
{
ADCCFG &= ~0x0f;
ADCCFG |= 0x01; //SPEED(1)
ADCTIM = 0x2e; //CSSETUP(0), CSHOLD(1), SMPDUTY(14)
}
void ADC_Init(void)
{
P3M0 &= ~0x08; P3M1 |= 0x08; //配置P3.3为高阻输入
AdcSetRate(); //初始化ADC速度
ADCCFG |= 0x20; //对齐模式
ADCCFG |= 0x80; //打开ADC电源
}
uint ADC_Read(void)
{
uint adcvalue = 0;
ADC_CONTR &= 0xf0; //清除低四位
ADC_CONTR |= 0x03; //配置ADC3,即P3.3
ADC_CONTR |= 0x40; //启动ADC转换
_nop_();
_nop_();
while(!(ADC_CONTR & 0x20)); //等待标志位
ADC_CONTR &= ~0x20; //清除标准位
adcvalue = ((uint)ADC_RES << 8) | ADC_RESL; //读取ADC的值
return adcvalue;
}
芯片为stc8g1k08a,debug时一直卡在while(!(ADC_CONTR & 0x20));
|
|