中级会员
- 积分
- 318
- 金钱
- 318
- 注册时间
- 2014-6-20
- 在线时间
- 27 小时
|
楼主 |
发表于 2014-9-23 15:08:04
|
显示全部楼层
回复【4楼】Badu_Space:
---------------------------------
#include"12.h"
#include"intrins.h"
#define uint8 unsigned char
#define uint16 unsigned int
uint8 datah0=0;
uint8 datah1=0;
uint8 datah2=0;
uint8 datah3=0;
uint8 tab[4];
void StartUART( void );
void R_S_Byte(uint8 R_Byte);
void ADC_Init0(void)
{
P1ASF=0x0F;//P1.0,P1.1,P1.2,P1.3口作为模拟功能AD使用。
ADC_CONTR=0X80;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD转换控制位初始化为0,选择P1.0作为AD输入来用。
EA=1;
EADC=1;//中断允许控制为
AUXR1=0X00;//低两位存放在ADCRESL低两位中,高八位存放在ADCRES中
// PADC=0;
}
void ADC_Init1(void)
{
ADC_CONTR=0X81;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD转换控制位初始化为0,选择P1.1作为AD输入来用。
}
void ADC_Init2(void)
{
ADC_CONTR=0X82;
}
void ADC_Init3(void)
{
ADC_CONTR=0X83;
}
void display(uint8 num)
{
uint8 hundred,ten,one;
float a;
int b;
a=(num+0.005)/51;
a=a*100;
b=a;
hundred=b/100;
ten=b%100/10;
one=b%10;
}
void main()
{
uint8 i;
StartUART();
ADC_Init0();
ADC_Init1();
ADC_Init2();
ADC_Init3();
while(1)
{
ADC_CONTR=0X88;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD开始转换,选择P1.0作为AD输入来用。
_nop_();
_nop_();
_nop_();
_nop_();/*以上是四个时钟延时*/
// R_S_Byte(datah0);
tab[0]=datah0;
ADC_CONTR=0X89;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD开始转换,选择P1.1作为AD输入来用。
_nop_();
_nop_();
_nop_();
_nop_();
/*以上是四个时钟延时*/
// R_S_Byte(datah1);
tab[1]=datah1;
ADC_CONTR=0X8A;
_nop_();
_nop_();
_nop_();
_nop_();
// R_S_Byte(datah2);
tab[2]=datah2;
ADC_CONTR=0X8B;
_nop_();
_nop_();
_nop_();
_nop_();
// R_S_Byte(datah3);
tab[3]=datah3;
R_S_Byte('#');
for(i=0;i<4;i++)
{
R_S_Byte(tab);
}
R_S_Byte('@');
}
}
void adc_isr() interrupt 5
{
ADC_CONTR=0X80;
_nop_();
_nop_();
_nop_();
_nop_();
datah0=ADC_RES;
/***************************/
ADC_CONTR=0X81;
_nop_();
_nop_();
_nop_();
_nop_();
datah1=ADC_RES;
ADC_CONTR=0X82;
_nop_();
_nop_();
_nop_();
_nop_();
datah2=ADC_RES;
ADC_CONTR=0X83;
_nop_();
_nop_();
_nop_();
_nop_();
datah3=ADC_RES;
}
void StartUART( void )
{
//波特率9600
SCON = 0x50;
TMOD = 0x20;
TH1 = 0xFD;
TL1 = 0xFD;
 CON = 0x00;
TR1 = 1;
}
//************************************通过串口将接收到数据发送给PC端**************************************
void R_S_Byte(uint8 R_Byte)
{
SBUF = R_Byte;
while( TI == 0 ); //查询法
TI = 0;
}
这样写。。。。。。。。。。。数值都一样。。。。。。。。。。。。。。。。。。。
如果// R_S_Byte(datah0);
// R_S_Byte(datah1);
// R_S_Byte(datah2);
// R_S_Byte(datah3);不注释掉。。。。。。。。。各通道数值就不会影响 |
|