求51单片机串口接收程序
发射程序:#include<reg2051.h>#defineucharunsignedchar#defineuintunsignedintuchardat_snd;uc...
发射程序:
#include <reg2051.h>
#define uchar unsigned char
#define uint unsigned int
uchar dat_snd;
uchar code table[]={0x15,0x25,0x45,0x85};//0001;0010;0100;0111;1000;1011
sbit key1=P1^7;
sbit key2=P1^6;
sbit key3=P1^5;
sbit key4=P1^4;
void Init_Com(void)//功能:串口初始化,波特率,方式1
{
TMOD=0x20;//定时器工作方式2
TH1=0xfa;//晶振11.0592,波特率4800
TL1=0xfa;
SCON=0x50;//串行口工作在方式1,允许接收,波特率由定时器控制
PCON=0x00;//串行口加倍位为0
ES=1;
TR1=1;
}
void d50ms()
{
uint i,j;
for(i=50;i>0;i--)
for(j=110;j>0;j--);
}
void main()//
{
Init_Com();//串口初始化
dat_snd=0x00;
while(1)
{ dat_snd=0x00;
if(!key1)
{
d50ms();
if(!key1)
{
dat_snd=table[0];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
if(!key2)
{
d50ms();
if(!key2)
{
dat_snd=table[1];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
if(!key3)
{
d50ms();
if(!key3)
{
dat_snd=table[2];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
if(!key4)
{
d50ms();
if(!key4)
{
dat_snd=table[3];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
}
}
求相对应的接收程序。
单片机与单片机之间。 展开
#include <reg2051.h>
#define uchar unsigned char
#define uint unsigned int
uchar dat_snd;
uchar code table[]={0x15,0x25,0x45,0x85};//0001;0010;0100;0111;1000;1011
sbit key1=P1^7;
sbit key2=P1^6;
sbit key3=P1^5;
sbit key4=P1^4;
void Init_Com(void)//功能:串口初始化,波特率,方式1
{
TMOD=0x20;//定时器工作方式2
TH1=0xfa;//晶振11.0592,波特率4800
TL1=0xfa;
SCON=0x50;//串行口工作在方式1,允许接收,波特率由定时器控制
PCON=0x00;//串行口加倍位为0
ES=1;
TR1=1;
}
void d50ms()
{
uint i,j;
for(i=50;i>0;i--)
for(j=110;j>0;j--);
}
void main()//
{
Init_Com();//串口初始化
dat_snd=0x00;
while(1)
{ dat_snd=0x00;
if(!key1)
{
d50ms();
if(!key1)
{
dat_snd=table[0];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
if(!key2)
{
d50ms();
if(!key2)
{
dat_snd=table[1];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
if(!key3)
{
d50ms();
if(!key3)
{
dat_snd=table[2];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
if(!key4)
{
d50ms();
if(!key4)
{
dat_snd=table[3];
SBUF=dat_snd;
while(!TI);
TI=0;
}
}
}
}
求相对应的接收程序。
单片机与单片机之间。 展开
2个回答
展开全部
void Init_Com(void)//功能:串口初始化,波特率,方式1
{
TMOD=0x20;//定时器工作方式2
TH1=0xfa;//晶振11.0592,波特率4800
TL1=0xfa;
SCON=0x50;//串行口工作在方式1,允许接收,波特率由定时器控制
PCON=0x00;//串行口加倍位为0
ES=1;
TR1=1;
ES = 1; //开串口中断
EA = 1; //开总中断
}
void Com_Int(void) interrupt 4 //串口接收中断函数
{
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
DATA= SBUF; //保存接收到的数据
RI = 0; //接收到一位数据后就让RI为零,关闭中断
}
EA = 1;
}
{
TMOD=0x20;//定时器工作方式2
TH1=0xfa;//晶振11.0592,波特率4800
TL1=0xfa;
SCON=0x50;//串行口工作在方式1,允许接收,波特率由定时器控制
PCON=0x00;//串行口加倍位为0
ES=1;
TR1=1;
ES = 1; //开串口中断
EA = 1; //开总中断
}
void Com_Int(void) interrupt 4 //串口接收中断函数
{
EA = 0;
if(RI == 1) //当硬件接收到一个数据时,RI会置位
{
DATA= SBUF; //保存接收到的数据
RI = 0; //接收到一位数据后就让RI为零,关闭中断
}
EA = 1;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询