找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC15F2K60S2串口收发程序

[复制链接]
跳转到指定楼层
楼主
蓝桥杯串口收发
  1. #include <STC15F2K60S2.H>

  2. void chushihua();
  3. void UartInit(void);
  4. void fasong(unsigned char *p,unsigned char wei);
  5. void send(unsigned char *p);
  6. void delayms(int ms);

  7. unsigned char ck;
  8. unsigned char txbuffer1[] = "IAP15F2K60S2\r\n";
  9. unsigned char enter[] = {"\r\n"};


  10. void main()
  11. {
  12.          chushihua();
  13.          UartInit();
  14.          EA=1;
  15.          ES=1;
  16.          
  17.    while(1)
  18.          {
  19.                  send(txbuffer1);
  20. //                   if(P32==0)
  21. //        {
  22. //                delayms(5);
  23. //                if(P32==0)
  24. //                {
  25. //                        fasong(enter,4);
  26. //                }
  27. //                while(!P32);
  28. //        }
  29. //        else if(P33==0)
  30. //        {
  31. //                delayms(5);
  32. //                if(P33==0)
  33. //                {
  34. //                        send(txbuffer1);
  35. //                }
  36. //                while(!P33);
  37. //        }
  38.          }
  39. }

  40. void chushihua()
  41. {
  42.   P2=0xc0;P0=0xff;
  43.         P2=0xe0;P0=0xff;
  44.         P2=0x80;P0=0xff;
  45.         P2=0xa0;P0=0x00;
  46. }
  47. void UartInit(void)                //9600bps@11.0592MHz
  48. {
  49.         SCON = 0x50;                //8位数据,可变波特率
  50.         AUXR |= 0x40;                //定时器1时钟为Fosc,即1T
  51.         AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
  52.         TMOD &= 0x0F;                //设定定时器1为16位自动重装方式
  53.         TL1 = 0xE0;                //设定定时初值
  54.         TH1 = 0xFE;                //设定定时初值
  55.         ET1 = 0;                //禁止定时器1中断
  56.         TR1 = 1;                //启动定时器1
  57. }
  58. void fasong(unsigned char *p,unsigned char wei)
  59. {
  60.    unsigned char i;
  61.         for(i=0;i<wei;i++)
  62.         {
  63.            SBUF = *(p+i);
  64.                  while(TI == 0);
  65.                  TI = 0;
  66.         }
  67. }
  68. void send(unsigned char *p)
  69. {
  70.         unsigned char index=0;
  71.         do
  72.         {
  73.                 SBUF=p[index++];
  74.                 while(TI == 0);
  75.                 TI = 0;
  76.         }
  77.         while(p[index]!=0);
  78. }
  79. void chuankou() interrupt 4
  80. {
  81.   RI=0;
  82.         ck=SBUF;
  83.         P2=0X80; P0=ck;
  84. //        if(ck=='@')
  85. //        {
  86. //                P2=0X80; P0=0X;
  87. //        }
  88. //        if(ck=='@')
  89. //        {
  90. //                P2=0X80; P0=0X55;
  91. //        }
  92. }
  93. void delayms(int ms)
  94. {
  95.         int i,j;
  96.         for(i=ms;i>0;i--)
  97.                 for(j=845;j>0;j--);
  98. }
复制代码


屏幕截图 2021-03-07 125825.png (21.01 KB, 下载次数: 115)

屏幕截图 2021-03-07 125825.png

STC15F2K60S2串口收发数据.rar

26.44 KB, 下载次数: 32, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:47397 发表于 2021-8-5 00:43 | 只看该作者
请教一下,串口助手为什么一直不断接收到00?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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