你的程序有缺陷,给你改了一下,你试试。
- #include <STC12C5A60S2.H>
- #include <intrins.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- sbit LED=P0^4;
- void main ()
- {
- uint i;
- P1M1 = 0xFF; P1M0 = 0x00; //设置P1端口全部为高阻
- P0=0XFF;
- LED=0;
- P1ASF=0Xff; //所有通道设为模拟输入
- ADC_RES = 0; //AD数据寄存器高8位清空
- ADC_RESL= 0; //AD数据寄存器低2位清空
- ADC_CONTR=0X81; //打开电源, 设置频道
- for(i=0;i<20000;i++); //延时
- CLK_DIV=0X00; //用来配置CPU主频,默认值为0x00,不分频 //这句没有设置作用
- ADC_CONTR=0X89; //打开电源, 设置频道P1.1 //启动ad转换,置1为起动,转换结束后自动置0
- AUXR1|=0x04; //AUXR1/ ADRJ=1 时 ADC_RESL是低位,高2位在ADC_RES上,
- EADC=1; //开ADC中断。
- EA=1; //开总中断。
- while(1);
- }
- void adc_zd() interrupt 5
- {
- ADC_CONTR=0X81;
- P3=~((ADC_RES&0x03)<<6);
- P2=~ADC_RESL;
- ADC_CONTR=0X89;
- }
复制代码 |