找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机资料多机串口通信程序下载

[复制链接]
跳转到指定楼层
楼主
ID:83240 发表于 2015-6-17 10:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机资料多机串口通信

多机串口双工通信.rar

59.22 KB, 下载次数: 45, 下载积分: 黑币 -5

单片机

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的积分奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2015-6-22 23:11 | 只看该作者
  1. #include <reg52.h>
  2. #include"delay.h"
  3. unsigned char a;
  4. unsigned char flag;
  5. sbit led_open=P2^3;
  6. void initiate_RS232(void);
  7. sbit s1=P3^4;
  8. sbit s2=P3^5;
  9. unsigned short int data sta;
  10. unsigned short int data count;
  11. uchar smg[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
  12. unsigned char code smg_we[]={0xef,0xdf,0xbf,0x7f};
  13. //unsigned short int data second;
  14. void main()
  15. {
  16.         //led_open=0;
  17.        
  18.         initiate_RS232();
  19.         while(1)
  20.     {       
  21.                 if(sta==1)        //按键1,发送
  22.                 {       
  23.                         //sta1=0;
  24.                         ES=0;
  25.                         SBUF=1;         //发送
  26.                         while(!TI);        //软件清零
  27.                         TI=0;
  28.                         ES=1;
  29.                 }
  30.                 if(sta==2)           //
  31.                 {
  32.                         //sta2=0;
  33.                         ES=0;
  34.                         SBUF=2;
  35.                         while(!TI);        //软件清零
  36.                         TI=0;
  37.                         ES=1;
  38.                 }
  39.           }
  40.        

  41.                          
  42.                        
  43.        
  44. }
  45. void time0_isp(void)  interrupt  1       //t0,周期1ms
  46.   {
  47.       static   char  data  i=0;
  48.           static  unsigned char key[3];
  49.       TL0=TL0+0X18;
  50.       TH0=0XFC;
  51.           
  52.       key[2]=key[1];
  53.       key[1]=key[0];

  54.           if (s1==0)  key[0]=1; else key[0]=0;
  55.           if (s2==0)  key[0]=key[0]+2;
  56.           
  57.                                            //读出当前值,如何读,跟具体电路有关
  58.        
  59.        
  60.           if((key[0]==key[1])&&(key[0]==key[2]) )
  61.               sta=key[0];
  62.           

  63.         switch(i)
  64.         {
  65.                case 0:   P0=smg[count%10];   P2=0xef;  i=1;break;                                           //个位
  66.                 case 1:   P0=smg[count%100/10]; P2=0xdf;  i=2;break;                                   //十位
  67.                 case 2:   P0=smg[count%1000/100];P2=0xbf;i=3;break;                               //百位
  68.                 case 3:   P0=smg[count/1000];P2=0x7f;i=0;break;       
  69.         }
  70. }
  71. void initiate_RS232(void)  //串口初始化
  72. {
  73.          TH1=0xfd;
  74.          TL1=0xfd;
  75.          
  76.          TL0=0X18;
  77.      TH0=0XFC;
  78.          
  79.          TMOD=0x21;
  80.          TR1=1;//开定时器
  81.          TR0=0;

  82.          ET0=1;//开t0中断

  83.          SM0=0;        //
  84.          SM1=1;//方式1,10位异步收发器(8 位数据)
  85.          SM2=0;//SM2=0时,均可使收到的数据进SBUF,并激活RI,在中断服务中将数据从SBUF读走
  86.          
  87.          REN=1;//允许串口接收
  88.          EA=1;
  89.          ES=1;
  90. }
  91. void serial() interrupt 4
  92. {
  93.         if(RI==1)         //接收完毕
  94.         {
  95.                 count=SBUF*256;           //先  接收 高位
  96.                
  97.                 RI=0;                          //清0
  98.                                                                   
  99.                    while(RI==0);         //等待
  100.    
  101.                    RI=0;                //清0
  102.                 count=count+SBUF;        //
  103.         }
  104.         if(TI==1)                  //发送完毕
  105.         {
  106.                 TI=0;                  //0
  107.         }
  108. }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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