关于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);
} 展开
下面是部分程序
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);
} 展开
3个回答
展开全部
主程序后加停止,或者设置一个触发条件。
由于我对C不很了解,只能给这个建议了。熟悉C的继续补充。
由于我对C不很了解,只能给这个建议了。熟悉C的继续补充。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
,不用自己写那么麻烦啊,上网下载一个“串口调试助手”就可以解决你的问题了。
如果你是工作需要的,可以用组态软件,也可以自己写,用VB会方便很多,用VC也行,用这两个网上会有很多的资料和教程。
如果你是工作需要的,可以用组态软件,也可以自己写,用VB会方便很多,用VC也行,用这两个网上会有很多的资料和教程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询