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