资源简介

两个单片机之间实现串口通信,包括仿真和程序,使用protues进行仿真

资源截图

代码片段和文件信息

#include
#define uchar unsigned char 
#define uint unsigned int 
 
uchar i=1ACK=1;

void delay(uint i)           //延时函数
{
   uchar j;
   while(i--)
   for(j=110;j>0;j--);
}

uchar kbscan()                //键盘扫描函数
{
 uchar sccoderecode;         //定义行、列
 P1=0xf0;                     //高四位作为输入先写1
 if((P1&0xf0)!=0xf0)   //判断是否按键按下
   {  
delay(10);   //延时消抖
if((P1&0xf0)!=0xf0)   //再次判断判断有没有按键按下
{
 sccode=0xfe;
 while((sccode&0x10)!=0)
 {
  P1=sccode;
  if((P1&0xf0)!=0xf0)     //判断当前行是否有按键按下
  {
   recode=P1&0xf0;        //保留高四位输入值
   sccode=sccode&0x0f;    //保留第低四位的值
   return(recode+sccode);
  }
  else
  sccode=(sccode<<1)|0x01;
 }
}
   }
  return 0;
}

send()interrupt 4        //串行口通信中断
{
  if(TI==1&&ACK==1)
  { 
    TI=0;
    if(i==0|i==0x22|i==0x44|i==0x66|i==0x88|i==0xaa|i==0xcc|i==0xdd|i==0xee) //有按键按下,需要修改波特率
    {
  ACK=0;
  SBUF=i;           //修改波特率
}
    else if(i==11) //循环发送,发了十一个字符后重新发
{
       i=1;
   SBUF=1;
}
else
{
      i++;
      SBUF=i;        //正常发送数据
    }
  }
  else if(RI==1)    //接收回应的信号
    {
   RI=0;
   ACK=SBUF;    //接收回应信号 修改初值 触发串口通信中断
   TI=1;
   TH1=TL1=i;
   i=1;
}
}

void main()
{
  TMOD=0x20;    //定时器1 工作方式2
  TH1=0x00;
  TL1=0x00;            //置初值
  TR1=1;
  EA=1;
  ES=1;                //使T1开始工作;开总中断、串行中断
  SCON=0x50;           //计数器1 工作方式1
  SBUF=i;  
  while(1)
  {
    while(kbscan())
   {
    switch(kbscan()) //不同的按键对应不同的波特率
{
    case 0xeb:i=0x00;break; // 1
case 0xdb:i=0x22;break;     // 2  
case 0xbb:i=0x44;break; // 3
case 0xed:i=0x66;break; // 4
case 0xdd:i=0x88;break; // 5
case 0xbd:i=0xaa;break; // 6
case 0xee:i=0xcc;break; // 7
case 0xde:i=0xdd;break; // 8
case 0xbe:i=0xee;break; // 9
    }
   }
  }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-07-13 15:01  两个单片机之间实现串口通信\
     文件       29022  2018-06-10 15:57  两个单片机之间实现串口通信\Last Loaded 串口通信.pdsbak
     文件        6376  2009-05-07 14:37  两个单片机之间实现串口通信\STARTUP.A51
     文件       14054  2018-06-18 08:35  两个单片机之间实现串口通信\STARTUP.LST
     文件         758  2018-06-18 08:35  两个单片机之间实现串口通信\STARTUP.OBJ
     文件       29037  2018-06-10 16:11  两个单片机之间实现串口通信\串口通信.pdsprj
     文件        3057  2018-07-13 14:56  两个单片机之间实现串口通信\串口通信.pdsprj.PC-20170324ZJLV.Administrator.workspace
     文件        4847  2018-06-18 08:35  两个单片机之间实现串口通信\串口通信(主机)
     文件        1763  2018-06-18 08:35  两个单片机之间实现串口通信\串口通信(主机).hex
     文件          68  2018-06-18 08:35  两个单片机之间实现串口通信\串口通信(主机).lnp
     文件        8464  2018-06-18 08:35  两个单片机之间实现串口通信\串口通信(主机).M51
     文件         201  2018-07-13 15:01  两个单片机之间实现串口通信\串口通信(主机).plg
     文件       55641  2018-07-13 15:01  两个单片机之间实现串口通信\串口通信(主机).uvopt
     文件       13422  2016-10-08 15:39  两个单片机之间实现串口通信\串口通信(主机).uvproj
     文件       55641  2018-07-12 16:39  两个单片机之间实现串口通信\串口通信(主机)_uvopt.bak
     文件           0  2016-10-08 12:43  两个单片机之间实现串口通信\串口通信(主机)_uvproj.bak
     文件        6176  2016-10-09 09:47  两个单片机之间实现串口通信\串口通信(从机)
     文件        1166  2016-10-09 09:47  两个单片机之间实现串口通信\串口通信(从机).hex
     文件          68  2016-10-09 09:47  两个单片机之间实现串口通信\串口通信(从机).lnp
     文件        9208  2016-10-09 09:47  两个单片机之间实现串口通信\串口通信(从机).M51
     文件         201  2018-07-13 14:57  两个单片机之间实现串口通信\串口通信(从机).plg
     文件       55639  2018-07-13 15:01  两个单片机之间实现串口通信\串口通信(从机).uvopt
     文件       13422  2016-10-08 15:40  两个单片机之间实现串口通信\串口通信(从机).uvproj
     文件       55637  2018-07-12 16:39  两个单片机之间实现串口通信\串口通信(从机)_uvopt.bak
     文件           0  2016-10-08 13:14  两个单片机之间实现串口通信\串口通信(从机)_uvproj.bak
     文件        2056  2018-07-12 16:39  两个单片机之间实现串口通信\主机.c
     文件        4827  2018-06-18 08:35  两个单片机之间实现串口通信\主机.LST
     文件        4725  2018-06-18 08:35  两个单片机之间实现串口通信\主机.OBJ
     文件        1905  2018-07-12 16:39  两个单片机之间实现串口通信\从机.c
     文件        4810  2016-10-09 09:47  两个单片机之间实现串口通信\从机.LST
     文件        6250  2016-10-09 09:47  两个单片机之间实现串口通信\从机.OBJ
............此处省略0个文件信息

评论

共有 条评论