本帖最后由 yourenzou 于 2010-10-8 15:45 编辑
我采用的是12C5A16S2单片机 晶振32MHz 波特率设置为1200
调整助手的波特率后还是没有接收到数据,
发送数据出去通过串口助手接收数据
接受到的数据有时候是乱码,有时候又有错误
请教各位帮助了
着急啊
#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
sfr S2CON = 0x9A;
//sfr SCON = 0x98;
sfr IE2 = 0xAF;
sfr S2BUF = 0x9B;
sfr AUXR = 0x8e;
sfr BRT = 0x9c;
sfr IAP_CONTR = 0xC7;
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CL = 0xE9;
sfr CH = 0xF9;
sfr CCAP0L = 0xEA;
sfr CCAP0H = 0xFA;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sbit CR = 0xDE;
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_RESL = 0xBE;
sfr P1ASF = 0x9D;
//sfr SBUF = 0x99;
//sfr TL0 = 0x8A;
//sfr TL1 = 0x8B;
//sfr TH0 = 0x8C;
//sfr TH1 = 0x8D;
//sfr PCON = 0x87;
//sfr TCON= 0x88;
//sfr TMOD= 0x89;
//sbit TI=SCON^1;
//sbit RI=SCON^0;
//sbit TR1=TCON^6;
// 晶振 32.MHz
char t=0;
char temp[20];
char temp1[20];
void delay(char k)
{
int i,j;
for (i=0;i<k;i++)
{
for (j=0;j<1;j++)
{
;
}
}
}
void sendchar(char k) //串口发送单字符
{
SBUF=k;
while(!TI)
{
;
}
TI=0;
}
void sendstr() //串口发送字符串
{char i=0;
while(1)
{
sendchar(temp);
i++;
if(temp=='\0')
{
break;
}
}
}
void AD_init()
{
P1ASF=0x01;
ADC_RES = 0;
ADC_CONTR=0xe0;
delay(20);
}
void getADresult( )
{
ADC_CONTR = 0xe8; //开启ad转换 设置最高速度,P1.0口为转换口
_nop_(); //Must wait before inquiry
_nop_();
_nop_();
_nop_();
while (ADC_CONTR==0xF8);//当转换完成
ADC_CONTR =0x08; //关闭AD
//return ADC_RES; //返回结果
}
void main()
{double Vin,result,ADresult;
char j,i,h;
char shiwei,gewei,xiaoshu1,xiaoshu2,xiaoshu3;
// char i,j;
// temp[2]='.';
//temp[6]=' ';
TMOD=0x22; // 定时器T1工作在方式2 ,8位自动重装
TL1=0XB9; // 装载值 波特率设置为1200
TH1=0XB9;
TR1=1;
SCON=0X50; // 8位数据位,无奇偶校验位
PCON=0X00; // SMOD=0.波特率不加倍
AD_init();
while(1)
{
/* getADresult(); 从P1.0口取电压值
ADresult=ADC_RES*4+ADC_RESL;
Vin=5.0*ADresult/256;
result=2.5*Vin;
i=result; 数据处理,按位显示
shiwei=i/10;
gewei=i%10;
result=(result-i)*1000;
j=result;
xiaoshu1=j/100;
xiaoshu3=j%10;
xiaoshu2=(j%100-xiaoshu3)/10;
temp1[0]=shiwei;
temp1[1]=gewei;
temp1[3]=xiaoshu1;
temp1[4]=xiaoshu2;
temp1[5]=xiaoshu3;
for(h=0;h<6;h++)
{
temp[h]=temp1[h]+32;
}
*/
/*****************测试串口情况,试图发送数012345**************/
temp[0]=48;
temp[1]=49;
temp[2]=50;
temp[3]=51;
temp[4]=52;
temp[5]=55;
sendstr();
}
}
串口助手如下所示
万分感谢 |