#include <STC12C5A60S2.h>
#include "intrins.h"
#define FOSC 12000000L
#define BAUD 2400
#define uchar unsigned char
#define uint unsigned int
void SendData(uchar dat);
void Delay(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void AD_Init()
{ P1ASF=0x01; //ÉèÖÃP1.0ͨµÀ
AUXR1&=0x00; //ÉèADRJ=0
P1M0=0x00; //ÉèP1.0Ϊ¸ß×èģʽ
P1M1=0x0f;
ADC_CONTR=0xe0; //¿ªÆôADCµçÔ´£¬90¸öʱÖÓÖÜÆÚת»»Ò»´Î
Delay(100);
}
int GetAD()
{
unsigned char AD_finished=0;
int result;
ADC_CONTR|=0x00; //P1.0ͨµÀ
ADC_CONTR|=0x08; //¿ªÆôADCת»»
Delay(10);
while(AD_finished==0) //µÈ´ýADCת»»Íê³É
{
AD_finished=(ADC_CONTR&0x10);
}
result=(ADC_RES<<2)+ADC_RESL; //¶Á×ßת»»½á¹û
SendData(ADC_RES);
SendData(ADC_RESL);
SendData(result);
ADC_CONTR&=0xef; //ADCת»»½áÊø±ê־λÇåÁã
return(result); //·µ»Ø×ª»»½á¹û
}
// float Ad_AV()
// {
// float Val_Av=0;
// uchar num;
// for(num=10;num>0;num--);
// {
// Val_Av+=GetAD();
// }
// Val_Av/=10.0;
// Val_Av=Val_Av*5000/1024;
// return(Val_Av);
// }
void InitUart()
{
SCON = 0x5a; //8 bit data ,no parity bit
TMOD = 0x20; //T1 as 8-bit auto reload
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set Uart baudrate
TR1 = 1; //T1 start running
}
void SendData(uchar dat)
{
while (!TI); //Wait for the previous data is sent
TI = 0; //Clear TI flag
SBUF = dat; //Send current data
}
int main()
{
float ad1;
InitUart();
AD_Init();
IE=0xA0;
while(1)
{
ad1=GetAD();
SendData(ad1);
}
}
不好意思,忘记附程序了
|