#include "STC12C5A.h"
#include "string.h"
#include "intrins.h"
#define NOP _nop_()
#define u32 unsigned long
#define u8 unsigned char
///************初始化时串口1的设置**************////
void UART_Init(void)
{
TMOD = 0x20;
TH1 = 0xFA;
TL1 = 0xFA;
SCON = 0x50;
PCON = 0x00;
EA = 0;
ES = 0;
TR1 = 1;
AUXR=0x40;
}
void UART_Send_Byte(unsigned char mydata)
{
ES=0;
TI=0;
SBUF=mydata;
while(!TI);
TI=0;
ES=0;
}
static void Delay(unsigned int t)
{
unsigned int j;
while(t--)
{
for(j = 0; j < 120; j++);
}
}
u8 ADconversion()
{
ADC_CONTR=0x00;
Delay(1);
ADC_RES=0; //清除结果
P1ASF=0x01; //选择P1.0口作为AD转换通道
Delay(1000);
P1M1 |= 0x01; //P1.7~P1.0:0000 0001(高阻)//注意:更改ADC通道时须同时将对应的IO接口修改为高阻输入。
P1M0 |= 0x01;
AUXR1=AUXR1&0xFB; //设置模数转换的结果,取ADC_RES中的8位
ADC_CONTR |=0xE0; //开启AD转换电源,并设置最高的转换速度
Delay(1000); //延时1ms
ADC_CONTR|=0x08; //启动AD转换
NOP;
NOP;
NOP;
NOP;
while(!(ADC_CONTR&0x10)); //等待AD转换结束
ADC_CONTR&=0xEF; //清标志位ADC_FLAG
P1M0&=0xfe;
P1M1&=0xfe; //设置普通IO
return ADC_RES; //返回AD转换结果(8位)
}
void main()
{
UART_Init();
while(1)
{
ADconversion();
UART_Send_Byte(ADC_RES);
if(ADC_RES>=0x99) P0=P0&0xFD; //P0.1=0 ,D8灯亮
else P0=P0&0xFE; //P0.0=0 ,D9灯亮
}
}
我的程序运行的结果总是输出:FF
请教高手,是哪里出了问题? |