本帖最后由 zcfirst 于 2012-5-1 19:29 编辑
我想做一个
单片机接受pc指令并返回特定内容的程序,下面的程序是我弄的,预期是单片机返回“命令确认”四个字,但是用串口调试助手收到的确是8个问号,把汉字改成英语单词就能正常显示,但是问什么不能显示汉字啊,求大神指导
#include <AT89X52.H> //包含头文件
unsigned char date[];
unsigned char recFlag; //接收数据标识,0 未接收数据 1 接收数据
unsigned char back[2][20]={"命令确认","命令接收"};
unsigned int i;
void init_serial(); //声明初始化函数
void send(unsigned char i,unsigned char j); //声明发送函数(MCU->PC)
void receive(); //声明接收函数(PC->MCU)
void delay(unsigned int i);
main()
{
unsigned char j;
init_serial(); //串口初始化
IE=0; //屏蔽中断
while(1)
{
receive(); //调用两个函数实现收发扫描
for(j=0;j<20;j++)
{
send(0,j);
delay(600);
}
}
}
void init_serial() //初始化串口
{
TMOD=0x20; //定时器T1使用工作方式2
TH1=0xfd; //设置初值
TH0=0xfd;
TR1=1; //开始计时
PCON=0x00; //SMOD=0;
SCON=0x50; //工作方式1,波特率9600bit/s,允许接收
ti=1;
EA=1;
}
void send(unsigned char i,unsigned char j)
{
if(TI==1) //检测输出是否READY
{
if(recFlag==1) //是否接收过数据
{
SBUF=back
[j]; //发送数据
if(j==19)
{
recFlag=0;
}
TI=0;
}
}
}
void receive()
{
if(RI==1) //检测是否有数据接收
{
date=SBUF; //接收数据
recFlag=1; //设置接收标识符
RI=0; //清除标志位
}
}
void delay(unsigned int i)
{
while(i--);
}
一周热门 更多>