|
STC8H8K64U,利用BGV1.19V反推VREF+电压,实际3.3V,测量值为4.6V,严重不准。
#define CPUIDBASE 0xfde0
#define VREE_ADDR (*(unsigned int volatile xdata *)(CPUIDBASE+0x07))
unsigned int VCCTest(void){
int BGV;
int res;
int vcc;
P0M0 = 0x00;
P0M1 = 0x00;
P_SW2 |= 0x80;
BGV = (int)VREE_ADDR;
ADCTIM = 0x3f;
P_SW2 &= 0x7f;
ADCCFG = 0x2f;
ADC_CONTR = 0x8f;
ADC_CONTR |= 0x40;
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20));
ADC_CONTR &= ~0x20;
res = (ADC_RES*256)+ADC_RESL;
printf("H=%d L=%d res=%d BGV=%d\r\n",(unsigned int)ADC_RES,(unsigned int)ADC_RESL,res,BGV);
vcc = (int)(4096L * BGV / res);
printf("VCC=%d\r\n",vcc);
return vcc;
}
|
|