单片机向串口调试助手发送数据 c语言 45
这是我在网上找到的程序,无论我把数组里面的数据改成十六进制,asii码还是十进制的,在串口调试助手里面都是这样的。。。。。声明我的波特率和串口调试助手的一样都是9600/...
这是我在网上找到的程序,无论我把数组里面的数据改成十六进制,asii码还是十进制的,在串口调试助手里面都是这样的。。。。。声明我的波特率和串口调试助手的一样都是9600
//例7-5:单片机向PC发送数据
#include<reg51.h> //包含单片机寄存器的头文件
unsigned char code Tab[ ]={1,2,3,4,5,6,7,8,9,0};
//0-9 A-F
/*****************************************************
函数功能:向PC发送一个字节数据
***************************************************/
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
/**************************************************************
函数功能:延时约150ms
**************************************************************/
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
/*****************************************************
函数功能:主函数
***************************************************/
void main(void)
{
unsigned char i;
TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式2
SCON=0x40; //SCON=0100 0000B,串口工作方式1
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; //根据规定给定时器T1赋初值
TL1=0xfd; //根据规定给定时器T1赋初值
TR1=1; //启动定时器T1
while(1)
{
for(i=0;i<10;i++) //模拟检测数据
{
Send(Tab[i]); //发送数据i
delay(); //150ms发送一次数据
}
}
}
如何解决数据的传输问题,另外在程序中我应该发送什么类型的数据,才能使发送的数据与串口调试助手接收的数据相同,如能解决,万分感谢 展开
//例7-5:单片机向PC发送数据
#include<reg51.h> //包含单片机寄存器的头文件
unsigned char code Tab[ ]={1,2,3,4,5,6,7,8,9,0};
//0-9 A-F
/*****************************************************
函数功能:向PC发送一个字节数据
***************************************************/
void Send(unsigned char dat)
{
SBUF=dat;
while(TI==0)
;
TI=0;
}
/**************************************************************
函数功能:延时约150ms
**************************************************************/
void delay(void)
{
unsigned char m,n;
for(m=0;m<200;m++)
for(n=0;n<250;n++)
;
}
/*****************************************************
函数功能:主函数
***************************************************/
void main(void)
{
unsigned char i;
TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式2
SCON=0x40; //SCON=0100 0000B,串口工作方式1
PCON=0x00; //PCON=0000 0000B,波特率9600
TH1=0xfd; //根据规定给定时器T1赋初值
TL1=0xfd; //根据规定给定时器T1赋初值
TR1=1; //启动定时器T1
while(1)
{
for(i=0;i<10;i++) //模拟检测数据
{
Send(Tab[i]); //发送数据i
delay(); //150ms发送一次数据
}
}
}
如何解决数据的传输问题,另外在程序中我应该发送什么类型的数据,才能使发送的数据与串口调试助手接收的数据相同,如能解决,万分感谢 展开
1个回答
展开全部
uchar idata SystemBuf[10]; //用于接收
uchar Rx=0; //接收数据条数
uchar code AT[]="YES,IT IS";
void UART_init (void)
{
TMOD=0x20;//用定时器1
PCON=0x00; //波特率不加倍
SCON=0x50;//串行方式1
TH1=0xFD;//9600
TL1=0xFD;//
EA=1;//
ES=1;//
TR1=1;
}
void sendchar(uchar ch) //串口送一个字节
{
SBUF=ch;
while(TI==0);
TI=0;
}
void sendstring(uchar *p) //送字符串
{
while(*p)
{
sendchar(*p);
p++;
}
}
///////
void receive(void) interrupt 4 using 1 //中断
{
if(RI)
{
if(Rx<10) //这儿最多收10个字节
{
SystemBuf[Rx]=SBUF;
Rx++;
}
RI=0;
}
}
///
void main()
{
uchar i;
UART_init();
while(1)
{
if(SystemBuf=='S')
{
sendstring(AT);
for(i=0;i<10;i++) //接收清0
{
SystemBuf[i]=0;
}
Rx=0;
}
}
}
追问
你这个程序连编译都不能通过,如果我要发送的是16进制的数据应该怎么在我原有程序上修改
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询