有个疑惑P0是单片机的借口,P0=一个字符(A),那单片机收到的是什么鬼P0^0~p0^7收到的是什么?

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharflag,a,i;ucharcod... #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag,a,i;
uchar code table []="i get";
void init()
{

TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1; }
void main()
{ init();
while(1)
{if(flag==1)
{ES=0;
for(i=0;i<6;i++)
{SBUF=table[i];
while(!T1);
T1=0;
}
SBUF=a;
while(!T1);
T1=0;
ES=1;
flag=0;}
}
}
void ser() interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
如这个SBUF接收到字符,怎么传出去的?8位数据怎么表达出去的?
展开
 我来答
zhxiufan
2017-08-01 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38388
国家科技进步奖

向TA提问 私信TA
展开全部
首先这个程序有些问题,串口中断需要改一下:
void ser() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
flag=1;
}
}
程序的意思是当接收到一个数据(这个数据这里没有处理,也就是不管接收到是什么数据都可以),发送"i get",再将接收到的数据发送回去。
追问
你好,我按照你的意见改了程序,但是还是收不到数据,我感觉我每次写程序有出现接受字符数据的都出现了问题,所以我想请问下SBUF是一个8位的寄存器是吧,然后我输入字符A,他是怎么样以8位的数据存在SBUF中的,这点我一直没搞明白,还有同理单片机的P0接口输入端我给他一个字符,那么这个字符怎么变成2进制的,(数字我可以理解,但是字符真的理解不了)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式