找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机串口通信程序

[复制链接]
跳转到指定楼层
楼主
ID:502682 发表于 2019-8-3 14:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是两个单片机之间的交流,利用串口通信,来供大家学习学习,如果有更好的可以张贴出来
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar num,temp;

  5. void delay(uint z)
  6. {
  7.         uint x,y;
  8.         for(x=z;x>0;x--)
  9.                 for(y=110;y>0;y--);
  10. }

  11. void send(uchar numl)
  12. {
  13.         SBUF=numl;
  14.         while(!TI);
  15.         TI=0;
  16. }

  17. void keyscan()
  18. {
  19.         P1=0xfe;
  20.         temp=P1;
  21.         temp=temp&0xf0;
  22.         if(temp!=0xf0)
  23.         {
  24.                 delay(5);
  25.                 temp=P1;
  26.                 temp=temp&0xf0;
  27.                 if(temp!=0xf0)
  28.                 {
  29.                         temp=P1;
  30.                         switch(temp)
  31.                         {
  32.                                 case 0xee:num=16;break;
  33.                                 case 0xde:num=12;break;
  34.                                 case 0xbe:num=8;break;
  35.                                 case 0x7e:num=4;break;
  36.                         }
  37.                         while(temp!=0xf0)
  38.                         {
  39.                                 temp=P1;
  40.                                 temp=temp&0xf0;
  41.                         }
  42.                         send(num);
  43.                 }
  44.         }
  45.         P1=0xfd;
  46.         temp=P1;
  47.         temp=temp&0xf0;
  48.         if(temp!=0xf0)
  49.         {
  50.                 delay(5);
  51.                 temp=P1;
  52.                 temp=temp&0xf0;
  53.                 if(temp!=0xf0)
  54.                 {
  55.                         temp=P1;
  56.                         switch(temp)
  57.                         {
  58.                                 case 0xed:num=15;break;
  59.                                 case 0xdd:num=11;break;
  60.                                 case 0xbd:num=7;break;
  61.                                 case 0x7d:num=3;break;
  62.                         }
  63.                         while(temp!=0xf0)
  64.                         {
  65.                                 temp=P1;
  66.                                 temp=temp&0xf0;
  67.                         }
  68.                         send(num);
  69.                 }
  70.         }
  71.         P1=0xfd;
  72.         temp=P1;
  73.         temp=temp&0xf0;
  74.         if(temp!=0xf0)
  75.         {
  76.                 delay(5);
  77.                 temp=P1;
  78.                 temp=temp&0xf0;
  79.                 if(temp!=0xf0)
  80.                 {
  81.                         temp=P1;
  82.                         switch(temp)
  83.                         {
  84.                                 case 0xeb:num=14;break;
  85.                                 case 0xdb:num=14;break;
  86.                                 case 0xbb:num=14;break;
  87.                                 case 0x7b:num=14;break;
  88.                         }
  89.                         while(temp!=0xf0)
  90.                         {
  91.                                 temp=P1;
  92.                                 temp=temp&0xf0;
  93.                         }
  94.                         send(num);
  95.                 }
  96.         }
  97.         P1=0xf7;
  98.         temp=P1;
  99.         temp=temp&0xf0;
  100.                 if(temp!=0xf0)
  101.                 {
  102.                         delay(5);
  103.                         temp=P1;
  104.                         temp=temp&0xf0;
  105.                         if(temp!=0xf0)
  106.                         {
  107.                                 temp=P1;
  108.                                 switch(temp)
  109.                                 {
  110.                                         case 0xe7:num=13;break;
  111.                                         case 0xd7:num=9;break;
  112.                                         case 0xb7:num=5;break;
  113.                                         case 0x77:num=1;break;
  114.                                 }
  115.                                 while(temp!=0xf0)
  116.                                 {
  117.                                         temp=P1;
  118.                                         temp=temp&0xf0;
  119.                                 }
  120.                                 send(num);
  121.                         }
  122.                 }
  123. }

  124. void main()
  125. {
  126.         TMOD=0x20;
  127.         TH1=0xfd;
  128.         TL1=0xfd;
  129.         TR1=1;
  130.         SM0=0;
  131.         SM1=1;
  132.         EA=1;
  133.         ES=1;
  134.        
  135.         while(1)
  136.         {
  137.                 keyscan();
  138.         }
  139.        
  140. }
复制代码


单片机交流.zip

50.51 KB, 下载次数: 12, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:415633 发表于 2019-8-6 11:03 | 只看该作者
这个程序好简单啊
回复

使用道具 举报

板凳
ID:502682 发表于 2019-11-22 19:06 | 只看该作者
王志彬 发表于 2019-8-6 11:03
这个程序好简单啊

对,最基本的,没有加通讯协议
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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