- 打卡等级:初来乍到
- 打卡总天数:1
- 最近打卡:2025-03-08 09:58:16
已绑定手机
新手上路
- 积分
- 21
|
我用15W4K48S4W设计的板子,由于要用串口高速通信,需要波特率稳定可靠,就外接了22.1184M的晶体,利用第9ADC通道获取内部电压基准的程序,就无法读取第9通道的ADC值了(ADC值为00),我把晶体2个脚短路,用片内振荡器,就能获得第9通道的ADC值了。
程序中短路外接晶体 VxH,VxL正常,使用外接晶体VxH=0x00, VxL=0x00
void ADCtr(void)
{
unsigned char i;
P1ASF = 0X00;
CLK_DIV |= 0X20; //高2位,低8位
ADC_CONTR = 0X80; //POWR = 0X80;
for(n =5000; n !=0; n--); //ADC上电延时
n=0;
for(i=16; i!=0; i--)
{
ADC_CONTR = 0X88; //POWR=0X80;START = 0X08;通道0X00;
_nop_();_nop_();_nop_();_nop_();
while(!(ADC_CONTR & 0X10));
while(ADC_CONTR & 0X08);
ADC_CONTR = 0X80;
n += ((ADC_RES<<8) | ADC_RESL);
}
n /= 16;
VrH = n>>8;
VrL = n;
/*************************************/
n=0;
P1ASF = 0X20; //ADC=P15
ADC_CONTR = 0X85; //POWR = 0X80;START=0X08;通道0X05(P15);
for(i=16; i!=0 ;i--)
{
ADC_CONTR=0X8D; //POWR = 0X80;START=0X08;通道0X05(P15);
_nop_();_nop_();_nop_();_nop_();
while(!(ADC_CONTR & 0X10));
while(ADC_CONTR & 0X08);
ADC_CONTR=0X85; //POWR = 0X80;START=0X08;通道0X05(P15);
n += ((ADC_RES<<8) | ADC_RESL);
}
n /= 16;
VxH = n>>8;
VxL = n;
}
|
|