有关于单片机串口通信问题,求高手解答

[复制链接]
查看11 | 回复9 | 2021-1-27 06:42:57 | 显示全部楼层 |阅读模式
//下面是一个单片机程序
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharflag=0,a,i;
ucharcodetable[]="Iget";
voidmain()
{
REN=1;
SM0=1;
SM1=1;
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
TR1=1;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
ES=0;
for(i=0;i -->
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层


你的a是个变量啊,不是字符‘a',你没赋值,所以这里不一定是一个可显示的ASCII
你改成SBUF='a';就可以看到了
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
对,a是一个字符变量,我用串口助手发给单片机sbuf一个字符值,进入中断后,赋给a,a得到了sbuf里面的值,可为什么单片机不能往电脑返回这个字符值
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
能打印“Iget”说明串口发送接收都正常的。串口助手发送采用字符方式,就能看到效果了
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
引用2楼askmingcle的回复:对,a是一个字符变量,我用串口助手发给单片机sbuf一个字符值,进入中断后,赋给a,a得到了sbuf里面的值,可为什么单片机不能往电脑返回这个字符值
我没看仔细

试试这样
uchar flag=0,a,i;
//改成
ucharflag=0;
ucharI;
volatileuchara;

回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
你定义的变量a,而不是字符'a'你把SBUF=a改为SBUF='a'就可以了
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
引用4楼dceacho的回复:Quote: 引用2楼askmingcle的回复:
对,a是一个字符变量,我用串口助手发给单片机sbuf一个字符值,进入中断后,赋给a,a得到了sbuf里面的值,可为什么单片机不能往电脑返回这个字符值

我没看仔细

试试这样
uchar flag=0,a,i;
//改成
ucharflag=0;
ucharI;
volatileuchara;

我用volatile修饰了a可是还是老样子,只返回iget
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
引用3楼玉怀一捧雪的回复:能打印“Iget”说明串口发送接收都正常的。串口助手发送采用字符方式,就能看到效果了
用的肯定是字符方式,否则返回不了iget
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
引用1楼dceacho的回复:

你的a是个变量啊,不是字符‘a',你没赋值,所以这里不一定是一个可显示的ASCII
你改成SBUF='a';就可以看到了

我用串口助手赋值了啊
回复

使用道具 举报

千问 | 2021-1-27 06:42:57 | 显示全部楼层
可以试试使用指针赋值看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行