| 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);
 
 
 }
 
 }
 |