STC12C5A60S2内置AD的C语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:49:56
自己写了一个,发现返回的10位全是1,实在搞不定了,希望用过的大侠发一个好用的程序上来参考一下。最好能说一下那个P1M1.P1MO.还有P1SF是干吗得。下面是我自己写的:
void AD_init(uchar AD_port_sel ) //ADC初始化
{
ADC_CONTR|=0x80; //开ADC电源

switch(AD_port_sel) //选择作为ADC的端口
{
case 0:
P1M0=0x01;
P1M1=0x00;
P1ASF=0x01;
ADC_CONTR&=0xf8;

break;

case 1:
P1M0=0x02;
P1M1=0x00;
P1ASF=0x02;

ADC_CONTR&=0xf8;
ADC_CONTR|=0x01;
break;

case 2:
P1M0=0x04;
P1M1=0x00;
P1ASF=0x04;

ADC_CONTR&=0xf8;
ADC_CONTR|=0x02;
break;

case 3:
P1M0=0x08;
P1M1=0x10;
P1ASF=0x08;
ADC_CONTR&=0xf8;
ADC_CONTR|=0x03;
break;

case 4:
P1M0=0x10;
P1M1=0x00;
P1ASF=0x10;

ADC_CONTR&=0xf8;
ADC_CONTR|=0x03;
break;

case 5:
P1M0=0x20;
P1M1=0x00;
P1ASF=0x20;
ADC_

返回值是3FF,你的参考电压怎么设置的?进入AD的电压幅值是多少?
还有AD的触发方式怎么设置的,ADclk多少,完成AD的中断函数里面都写了什么

ps:建议不要用goto,大型的程序里面goto多了就是飞檐走壁,看不清到哪里了