• 大小: 38KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: MAX485  C语言  仿真  

资源简介

基于MAX485两个单片机半双工通信,内部附有C语言源代码,采用KEIL进行程序仿真,内部有PROTEUS硬件仿真图。

资源截图

代码片段和文件信息

#include
#define uint unsigned int
#define uchar unsigned char
sbit P0_0=P0^0;
uchar idata table[17]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f0xaa0xbd0xee0xdd0x990xfd0xff0xff};
uchar idata table2[10];
uchar numtemp;
uchar num1=0flag;
void delay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

uchar keyscan();

 void int0(void) interrupt 0              
        {   int m;
    P1=0xff;
             for(m=0;m<5;m++)           
            {  P1=table2[m];
               delay(500);
               
                 
                 
            }
         }

    void main()
  {   uchar n=0;
     uchar m;
 uchar i=0;
     flag=1;
    
 TMOD=0x20;//设置定时器1为工作方式2
     TH1=0xe8;
 TL1=0xe8;
     TR1=1;
     EA=1;                   //总中断开启
     EX0=1;                  //外部中断INT0开启
     IT0=1;
REN=1;
SM0=0;
SM1=1;
 while(flag) i=keyscan();
 flag=1;
while(1)

  if(num1==0)
           {
   RI=0;
   P0_0=0;
   while(!RI);
   delay(500);
           P1=SBUF;
   m=SBUF;
           table2[n]=m;
           n++;
   RI=0;
  }
  else if(num1==1)
  {
   while(flag) i=keyscan();
   flag=1;
       
   P0_0=1;
   SBUF=table[i-1];
     while (!TI);
            P1=table[i-1];
   TI=0;
  }

   
}
}
uchar keyscan()
{
P2=0xfe;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xee:{num=1;flag=0;}
break;
case 0xde:{num=2; flag=0;}
break;
case 0xbe:{num=3; flag=0;}
break;
case 0x7e:{num=4;  flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}

P2=0xfd;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xed:{num=5;flag=0;}
break;
case 0xdd:{num=6;flag=0;}
break;
case 0xbd:{num=7;flag=0;}
break;
case 0x7d:{num=8;flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}


P2=0xfb;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P2;
switch(temp)
{
case 0xeb:{num=9;  flag=0;}
break;
case 0xdb:{num=10; flag=0;}
break;
case 0xbb:{num=11;flag=0;}
break;
case 0x7b:{num=12; flag=0;}
break;
}
while(temp!=0xf0)
{
temp=P2;
temp=temp&0xf0;
}
}
}
      P2=0xf7;
temp=P2;
temp=temp&0xf0;
while(temp!=0xf0)
{

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     122161  2010-07-15 01:39  MAX485\123.DSN

     文件       5115  2002-04-16 15:32  MAX485\STARTUP.A51

     文件      11768  2010-07-13 17:49  MAX485\STARTUP.lst

     文件        854  2010-07-13 17:49  MAX485\STARTUP.obj

     文件       8256  2010-07-13 17:49  MAX485\test1

     文件       3519  2010-07-13 19:57  MAX485\test1.c

     文件       2236  2010-07-13 17:49  MAX485\test1.hex

     文件      12648  2010-07-13 17:49  MAX485\test1.LST

     文件      13025  2010-07-13 17:49  MAX485\test1.M51

     文件       8712  2010-07-13 17:49  MAX485\test1.OBJ

     文件       1081  2010-07-15 01:39  MAX485\test1.Opt

     文件        164  2010-07-15 10:59  MAX485\test1.plg

     文件       2058  2010-07-12 23:33  MAX485\test1.Uv2

     文件       1081  2010-07-13 19:28  MAX485\test1_Opt.Bak

     文件          0  2010-07-12 21:07  MAX485\test1_Uv2.Bak

     目录          0  2010-07-15 11:11  MAX485

----------- ---------  ---------- -----  ----

               192678                    16


评论

共有 条评论