串口通信问题
时间:10-02
整理:3721RD
点击:
问题描述:在用串口调试工具调试时 发送一个数据6,单片机收到并发送,串口调试助手收到的是 -189,请问大家知道其中哪出问题了吗?代码如下
#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,a;
void delay(uint x)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init(void)//初始化
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void comm(char *parr)//发送数据
{
do
{
SBUF=*parr++;
while(!TI);
TI=0;
}while(*parr);
}
void main(void)
{
uchar buff[4];
init();
while(1)
{
if(flag==1)
{
ES=0;
sprintf(buff,"%d",a);
delay(1);
comm(buff);
ES=1;
flag=0;
}
}
}
void sp(void) interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
#include <reg52.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,a;
void delay(uint x)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init(void)//初始化
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void comm(char *parr)//发送数据
{
do
{
SBUF=*parr++;
while(!TI);
TI=0;
}while(*parr);
}
void main(void)
{
uchar buff[4];
init();
while(1)
{
if(flag==1)
{
ES=0;
sprintf(buff,"%d",a);
delay(1);
comm(buff);
ES=1;
flag=0;
}
}
}
void sp(void) interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
波特率对吗?发送接收都使用hex方式
谢谢您了 问题已经找到了