单片机串口方式0的接收

想要用串口方式0从两一个缓存器里读数据,方式0的发送没有问题,但是允许接收
后怎么去启动接收这个动作?怎么控制我的TX去发出时钟脉冲信号?还是说这个TX是一直在工作的?求各位大侠帮帮忙,指点一下小弟

你可以串口中断读取,也可以把收到的数据放进一个缓冲区(实时更新,也叫DMA吧),用定时器间隔去读

串口有中断啊,在中断里面进行数据接收。收到数据单片机会自动触发中断的

#include //单片机51头文件,存放着单片机的寄存器

unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit gewei=P2^2; //个位选通定义
sbit shiwei=P2^3; //十位选通定义
unsigned char code table[]=;
//;// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )

{unsigned int i;

for(i=0; i tc--;}
}
void LED() //LED显示接收到的数据
{
shiwei=0;
P0=~table[dat/16];
Delay(8);
shiwei=1;
gewei=0;
P0=~table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
{
Init_Com();//串口初始化
// P1=0xf0;
while(1)
{
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI清零。
SBUF = dat; //在原样把数据发送回去
}
LED(); //显示接收到的数据
}
}#include //单片机51头文件,存放着单片机的寄存器

unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit gewei=P2^2; //个位选通定义
sbit shiwei=P2^3; //十位选通定义
unsigned char code table[]=;
//;// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )

{unsigned int i;

for(i=0; i<100; i++);

tc--;}
}
void LED() //LED显示接收到的数据
{

shiwei=0;
P0=~table[dat/16];
Delay(8);
shiwei=1;
gewei=0;

P0=~table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;

TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;

}
void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
{
Init_Com();//串口初始化
// P1=0xf0;
while(1)
{
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI清零。
SBUF = dat; //在原样把数据发送回去
}

LED(); //显示接收到的数据
}
}