/********************************************************************
AD轉換初始化程序
*********************************************************************/
void InitADC()
{
P1ASF = 0x80; //設置P1.7口AD轉換,必須加
P1M0=0X80;
P1M1=0X80; //設置P1.7口為開漏模式,使用AD功能
ADC_RES = 0; //AD數據寄存器清空
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打開AD電源,轉換周期210
_nop_(); //延時一個機器周期
_nop_();
_nop_(); //延時一個機器周期
}
/********************************************************************
AD轉換控制程序
*********************************************************************/
uchar ADCRead(uchar px) //轉換輸出的數據 (PX為通道口)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//開始轉換
_nop_(); //延時一個機器周期
_nop_(); //延時一個機器周期
_nop_(); //延時一個機器周期
_nop_(); //延時一個機器周期
while (!(ADC_CONTR & ADC_FLAG));//等待轉換結束
ADC_CONTR &= ~ADC_FLAG; //關閉AD轉換
return ADC_RES; //返回數據
}
if(ba==1){dat=((ADCRead(7)*51)/255);dat1=dat*2;ba=0;} //51是單片機的工作電壓,單片機的工作電壓是多少這個就是多少
// if(ba==1){dat=ADCRead(7);dat1=dat*100/249;ba=0;}
if((y==0)&&(z==0)){zs=1;led(dat1);} //zs標志位控制小數點
if(y==1){zs=0;led(s1);}
if(y==2){zs=0;led(s2);}
if(y==3){zs=1;z=0;led(s);}
if(dat1>s){out=0;}else{out=1;}
KeyRead(); //按鍵掃描
key_1();
key_2();
if(k==1)
{
Sector_Erase(0);
Byte_Program(0x0001,s1); //寫入扇區
Byte_Program(0x0002,(s2/10)); //寫入扇區
k=0;
}
|