关于51单片机通过串口发送数据的问题 我没有用循环发送 但是连上电脑后单片机就不断的向pc机发送数据

关于51单片机通过串口发送数据的问题 我没有用循环发送 但是连上电脑后单片机就不断的向pc机发送数据 不管怎么改都不行 请大家帮帮忙 看能不能解决哈 谢各位高手了
下面是部分程序
void all_Init()
{ int i = 0; //振荡时钟初始化
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
OSCICN = 0x08;
CKCON = 0x20 ; //定时器2使用系统时钟
SCON0 = 0x50 ; //uart0 方式1,8位uart,可变波特率;允许接收
T2CON = 0x34 ; //定时器2作为接收和发送时钟,允许
RCAP2L = 0xFA ; //定时器2自动重载的初值低字节
RCAP2H = 0xFF ; //高字节
P0MDOUT = 0xFF;
P1MDOUT = 0xFF;
XBR0 = 0x04; //UART0的TX连到P0.0,RX连到P0.1
XBR1 = 0x00;
XBR2 = 0x40; //交叉开关使能
IE = 0x90; //EA=1,允许RI0标志位或TI0标志位产生的中断
IP = 0x10; //中断优先级寄存器,uart0为高优先级
}
//void Uart0_TX(unsigned char dat);
//void Uart0_trans(unsigned char len,unsigned char transdata[]);

void delay1ms(unsigned char j)
{
unsigned int i,k,l;
for(k=0;k<j;k++)
for(i=0;i<0xe1;i++)
for(l=0;l<0x07;l++);
}

void Uart0_TX(unsigned char dat)
{
TI0=0;
SBUF0=dat;
while(!TI0);
TI0=0;
}
void Uart0_trans(unsigned char len,unsigned char transdata[])
{
unsigned char i,rctemp;
TI0=0;
RI0=0;
//ES0=0;
rctemp = 0;
for(i=0;i<len-1;i++)
{
Uart0_TX(transdata[i]); //按顺序发送读出的时间数据到SBUF0 通过串口发出
rctemp += transdata[i];
}
Uart0_TX(rctemp);
//ES0=1;
}
main()
{ all_Init();
Uart0_trans(12,temp1);
while(1);
}

呵呵,您使用的是C8051F系列单片机。因此,初始化时应当禁用WDT。
在初始化里增加以下语句:
PCA0MD &= ~0x40;
PCA0MD = 0x00;
这样,单片机就不会不停地复位了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-05
主程序后加停止,或者设置一个触发条件。
由于我对C不很了解,只能给这个建议了。熟悉C的继续补充。
第2个回答  2011-03-05
,不用自己写那么麻烦啊,上网下载一个“串口调试助手”就可以解决你的问题了。
如果你是工作需要的,可以用组态软件,也可以自己写,用VB会方便很多,用VC也行,用这两个网上会有很多的资料和教程。
相似回答