📄 stc_ad.c
字号:
#include "Reg51.H"
#include "stc12c.h"
sfr AUXR=0x8e;
sfr WDT_CONTR = 0XE1;
sfr ADC_CONTR = 0XC5;
sfr ADC_DATA = 0XC6;
sfr ADC_Channel_2_Result=0xc6;
//#define ADC_Channel_2_Result 0X32
void Initial_uart( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFF ; //Baud:9600 fosc=11.0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
//AUXR&=0XBF;
TR1 = 1 ;
EX0=1; // timer 1 run // TI=1; }
EA=1;
}
void Serial_send(unsigned char send_data)
{
SBUF=send_data;
while(TI==0);
TI=0;
}
void delay(unsigned char i)
{
unsigned char j,k;
for (j=0;j<i;j++)
for (k=0;k<100;k++);
}
void main(void)
{
int i;
int count=1;
unsigned char str[5], *p;
unsigned char rdata;
p = str;
WDT_CONTR=0X00;
P3M0=0X00;
P3M1=0X00;
//P1=0xdc;
ADC_DATA =0X00;
ADC_CONTR=0X00; //关闭ADC电源
Initial_uart();
P1M0=0X04;
P1M1=0X04; //设置P1.2为开漏模式
ADC_CONTR=0X80; //开ADC电源
delay(100);
ADC_CONTR=0XE2; //P1.2作为AD转换通道
delay(100);
ADC_CONTR=0XEA; //启动AD转换
delay(200);
//*p = ADC_Channel_2_Result; //保存AD转换结果
//*p=0x03;
//*p++;
//i=p;
//ADC_Channel_2_Result=0x05;
// for(i=0;i<5;i++)
while(1)
{
//delay(10000);
while(ADC_CONTR&0x10==0x10)
{
//delay(100);
}
ADC_CONTR=0xE2;//清ADC_FLAG,ADC_START位,停止ADC转换
//P1M0=0X00; //设置p1口为准双向口
//P1M1=0X00;
rdata=ADC_Channel_2_Result;
Serial_send(0xbf);
//delay(200);
Serial_send(rdata);
// delay(200);
Serial_send(0xff);
};
while(1)
{};
for(i=0;i<5;i++)
{
delay(100);
while(ADC_CONTR&0x10==0)
{
delay(100);
}
// ADC_CONTR=0xE2;//清ADC_FLAG,ADC_START位,停止ADC转换
// *p = ADC_Channel_2_Result; //保存AD转换结果
// *p++;
//count++;
//ADC_CONTR=0X00; //关闭ADC电源
// P1M0=0X00; //设置p1口为准双向口
// P1M1=0X00;
//P1=ADC_Channel_2_Result;
Serial_send(0xbf);
delay(200);
Serial_send(P1);
delay(200);
Serial_send(0xff);
}
}
/*
if(count==5)
{
Serial_send(0xbf);
delay(200);
Serial_send(count);
delay(200);
Serial_send(0xff);
while(1)
{};
/*
for(i = 0, p = str; i <5; i++)
{
delay(200);
Serial_send(0xbf);
delay(200);
Serial_send(str[i]);
Serial_send(count);
delay(200);
Serial_send(0xff);
delay(200);
}
*/
/* }
else
{
Serial_send(0xee);
break;
}
P1M0=0X00; //设置p1口为准双向口
P1M1=0X00;
P1=ADC_Channel_2_Result;
delay(200);
}
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -