中科因仑“3+1”工程特种兵精英论坛
标题:
串口通讯,接收乱码。
[打印本页]
作者:
脑经急转弯
时间:
2016-6-20 19:57
标题:
串口通讯,接收乱码。
原来是只要打开串口调试软件的端口
就自动发送字符串
可是
这是字符显示。
?k通?+??k通?+??k通?+??k通?+??k通?+??k通?+?
这是16进制显示。
B9 18 6B CD A8 9A 2C 2B F9 A7 B9 18 6B CD A8 9A 2C 2B F9 A7
所以想看看是代码问题,还是板子?
------------------------------------------------*/
#include<reg52.h>
#include"delay.h"
/*------------------------------------------------
函数声明
------------------------------------------------*/
void SendStr(unsigned char *s);
/*------------------------------------------------
串口初始化
------------------------------------------------*/
void InitUART (void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装
TH1 = 0xFD; // TH1: 重装值 9600 波特率 晶振 11.0592MHz
// TL1=0xfd;
TR1 = 1; // TR1: timer 1 打开
EA = 1; //打开总中断
// ES = 1; //打开串口中断
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
InitUART();
while (1)
{
SendStr("abcdefg");
DelayMs(240);//延时循环发送
DelayMs(240);
}
}
/*------------------------------------------------
发送一个字节
------------------------------------------------*/
void SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
/*------------------------------------------------
发送一个字符串
------------------------------------------------*/
void SendStr(unsigned char *s)
{
while(*s!='\0')// \0 表示字符串结束标志,
//通过检测是否字符串末尾
{
SendByte(*s);
s++;
}
}
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/)
Powered by Discuz! X3.4