找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1308|回复: 1
打印 上一主题 下一主题
收起左侧

单片机双机通信程序(握手信号)没有效果,只显示000000 求指导

[复制链接]
跳转到指定楼层
楼主

甲机
  1. #include<reg51.h>  
  2. unsigned char send[]={0,1,0,2,0,8};
  3. void main()                             
  4. {
  5.    unsigned char i;
  6.                 TMOD=0x20;              
  7.    TH1=0xfd;           
  8.    TL1=0xfd;
  9. TR1=1;
  10.    SCON=0x50;         
  11.    do{
  12. SBUF=0x01;      
  13.       while(!TI);
  14.       TI=0;               
  15.       while(!RI);        
  16.       RI=0;               
  17.       }
  18.    while((SBUF^0x02)!=0);   
  19. for (i=0;i<6;i++)
  20.     {
  21.           SBUF=send[i];
  22.           while(TI==0);
  23.           TI=0;               
  24.         }
  25. do{                                                
  26.       SBUF=0xaa;        
  27.       while(!TI);        
  28.       TI=0;               
  29.       while(!RI);        
  30.       RI=0;               
  31.       }
  32.    while(SBUF!=0xaa);        
  33.    while(1);  

  34. }
复制代码

已机
  1. #include<reg51.h>   
  2. code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  3.                                        
  4. unsigned char buffer[]={0x00,0x00,0x00,0x00,0x00,0x00};
  5. void delay(unsigned int a)
  6. {
  7. unsigned int k;
  8. for (k=0;k<a;k++);}
  9. void disp()
  10. {
  11.    unsigned char w,i,j;
  12.    w=0x01;            
  13.    for(i=0;i<6;i++)
  14.    {
  15.      P1=tab[buffer[1]];
  16.                  delay(500);
  17.      P2=~w;            
  18.      for(j=0;j<100;j++);
  19.      w<<=1;                     
  20.    }
  21. }

  22. void main ()               
  23. {
  24.    unsigned char i;
  25. TMOD=0x20;
  26. PCON=0X00;
  27.    TH1=0xfd;            
  28.    TL1=0xfd;
  29.    SCON=0x50;         
  30.    TR1=1;              
  31.   while(1)
  32.    {
  33.    do{
  34.      while(!RI)disp();        
  35.      RI=0;                        
  36.       }
  37.    while((SBUF!=0x01));      
  38.      SBUF=0x02;                        
  39.      while(!TI)disp();        
  40. i=0;
  41. do{
  42.       while(!RI)disp();               
  43.       RI=0;                        
  44.       buffer[i]=SBUF;                 
  45.       i++;
  46.      } while(SBUF!=0xaa);      
  47.    SBUF=0xaa;                        
  48.    while(!TI)disp();               
  49.    TI=0;                        
  50.    }
  51. }
复制代码
没有效果,只显示000000文件
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:624769 发表于 2021-11-5 18:59 | 只看该作者
双机通讯,为什么还要  MAX232转一下? 大家都是TTL 直连不好么?

另外,就算是走个过场,用MAX232 最好接在同一片 MAX232上进出,一个用T1R1,一个T2R2, 不要用两个232芯片,原理说不清,但是,两个232在一条线路上,串线对接会有宕死的问题。你摸232芯片可能会发现发烫。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表