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

关于51单片机通过串口发送数据的问题我没有用循环发送但是连上电脑后单片机就不断的向pc机发送数据不管怎么改都不行请大家帮帮忙看能不能解决哈谢各位高手了下面是部分程序voi... 关于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);
}
展开
 我来答
seuzhouww
2011-03-06 · TA获得超过1386个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:306万
展开全部
呵呵,您使用的是C8051F系列单片机。因此,初始化时应当禁用WDT。
在初始化里增加以下语句:
PCA0MD &= ~0x40;
PCA0MD = 0x00;
这样,单片机就不会不停地复位了。
百度网友53d5f6d29
2011-03-05 · TA获得超过6184个赞
知道大有可为答主
回答量:3991
采纳率:28%
帮助的人:1508万
展开全部
主程序后加停止,或者设置一个触发条件。
由于我对C不很了解,只能给这个建议了。熟悉C的继续补充。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tibawa
2011-03-05 · TA获得超过246个赞
知道答主
回答量:383
采纳率:0%
帮助的人:0
展开全部
,不用自己写那么麻烦啊,上网下载一个“串口调试助手”就可以解决你的问题了。
如果你是工作需要的,可以用组态软件,也可以自己写,用VB会方便很多,用VC也行,用这两个网上会有很多的资料和教程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式