xyz549040622 发表于 2014-3-12 21:18 
看代码是没有问题的,不知道你的其他部分,只能建议你先烧官网给的程序看看是否正确 ...
#include "STC15F2K60S2.H"
#include "intrins.h"
unsigned int ADC_Vaule=0;
void delay(unsigned char Count)
{
unsigned int Temp=5000;
while(Count--)
{
while(Temp--);
Temp=5000;
}
}
void InitAllPer()
{
EA=0; //屏蔽总中断
// CLK_DIV=0x02; //12MHz4分频 时钟频率3M
/* SCON = 0x53; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xB2; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1 */
ADC_CONTR=0;
ADC_CONTR|=0x80; //选择通道0,打开电源,
delay(2);
P1ASF=0x11; //P1口都不当成AD口
// ADC_CONTR|=0x60; //90个时钟转换一次
EADC=0; //禁止ADC中断
ADC_RES=0;
ADC_RESL=0;
}
void UsartSendChar(unsigned char Temp) //发字符
{
if(TI) //如若一帧数据发送结束
{
TI=0;
SBUF=Temp;
}
}
void UsartSendString(unsigned char *p) //发字符串
{
while(*p)
{
if(TI) UsartSendChar(*p++);
}
}
void SenorVotagleSample(void)
{
ADC_CONTR|=0x88; //启动ADC转换
delay(2);
while((ADC_CONTR&0x10)==0); //等转换结束
ADC_CONTR&=0x6F; //关闭AD转换
ADC_Vaule=(unsigned int)ADC_RES<<8+ADC_RESL; //取结?
}
void main()
{
// unsigned char i=8,string[]={1,2,3};
InitAllPer(); //初始化所有外设
while(1)
{
// UsartSendString(string);
SenorVotagleSample(); //三轴加速度输出采样
// UsartSendChar(ADC_Vaule);
// UsartSendChar(ADC_Vaule>>8);
}
}
|