单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机和PC串口通信仿真实验源码(串口助手应答单片机)

[复制链接]
跳转到指定楼层
楼主
晶振12MHz,波特率1200, 程序启动后单片机主动发出Hello Server, PC使用串口助手应答单片机,当单片机收到PC发来的数据AAH后,将30H-3FH的16个字节发送给PC,当51收到E0H时就发40H-5FH的32个字节数据,若单片机收到其他数据后,则不做任何修改返回PC。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include <reg51.h>
  2. char code table[]="hello server!";
  3. int i=0,j=0;
  4. int a=0;
  5. int n=0,m=0;
  6. char data1[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};
  7. char *p=0x40;

  8. void send(char *n,char *m)
  9. {
  10.         for(;n<=m;n++)
  11.         {
  12.                 SBUF=*n;
  13.                 while(!TI);
  14.         }        
  15. }

  16. void C51() interrupt 4
  17. {
  18.         if(RI==1)
  19.         {         
  20.                 a=SBUF;
  21.                 RI=0;
  22.         }
  23.         else if(TI==1)
  24.         {
  25.                 TI=0;
  26.         }
  27. }
  28.         
  29. void main()
  30. {
  31.         EA=1;
  32.         TMOD=0x20;
  33.         TH1=0xE6;
  34.         TL1=0xE6;
  35.         TR1=1;
  36.         SCON=0x50;
  37.         ES=1;
  38.         for(;p<=0x5f;p++)
  39.         {
  40.                 *p=data1[j];
  41.                 j++;
  42.         }
  43.         for(i=0;table[i]!='\0';i++)
  44.         {
  45.                 SBUF=table[i];
  46.                 while(!TI);
  47.         }
  48.         while(1)
  49.         {
  50.                 if(a==0xAA)
  51.                 {
  52.                         send(0x50,0x5f);
  53.                         a=0;
  54.                 }
  55.                 if(a==0xE0)
  56.                 {
  57.                         send(0x40,0x5f);
  58.                         a=0;
  59.                 }
  60.                 if(a!=0xAA&&a!=0xE0&&a!=0)
  61.                 {
  62.                         SBUF=a;
  63.                         while(!TI);
  64.                         a=0;
  65.                 }
  66.         }
  67. }
复制代码

所有资料51hei提供下载:
实验五.zip (34.62 KB, 下载次数: 44)


评分

参与人数 1黑币 +10 收起 理由
wyhnb + 10

查看全部评分

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

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

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