Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12728
  • 博文数量: 3
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-25 15:44
文章分类
文章存档

2016年(3)

我的朋友
最近访客

分类: 嵌入式

2016-09-03 15:25:58


点击(此处)折叠或打开

  1. /*******************************
  2.  MCU通过串口向电脑发送一串字符串
  3.  *******************************/

  4. #include <reg52.h>

  5. #define uchar unsigned char
  6. #define uint unsigned int

  7. bit g_TranEnd = 1;                                 //发送完毕标志

  8. void InitUart();
  9. void DelayMs(uint ms);

  10. void main()
  11. {
  12.     char *string = "I LOVE YOU!";
  13.     
  14.     InitUart();
  15.     while (1)
  16.     {
  17.         if ((*string != '\0') && (1 == g_TranEnd))             //当字符串不为‘\0'且发送完标志为1时进行发送
  18.      {
  19.          SBUF = *string++;
  20.          g_TranEnd = 0;
  21.          DelayMs(10);
  22.      }
  23.     }
  24. }

  25. void InitUart()
  26. {
  27.     TMOD &= 0x0F;                 //清空T1的控制位
  28.     TMOD |= 0x20;                 //配置T1工作方式为2,即自动重装模式;
  29.     TH1 = 0xFD;                     //晶振为11.0592MHZ,波特率为9600
  30.     TL1 = TH1;                     //将TH1中的数据添加到TL1中
  31.     PCON = 0x00;                 //波特率正常不倍增
  32.     SCON = 0x50;                 //配置串口工作模式为1,且开启接收功能
  33.     TR1 = 1;                     //串口的波特率发生器由T1(T2)产生,开启定时器T1;
  34.     ES = 1;                         //开启串口中断
  35.     EA = 1;                         //开启总中断
  36. }

  37. void UartIRQ() interrupt 4
  38. {
  39.     if (1 == TI)
  40.     {
  41.          TI = 0;
  42.         g_TranEnd = 1;
  43.     }
  44.         
  45. }

  46.  void DelayMs(uint ms) //11.0592MHZ
  47. {
  48.     uint x,y;
  49.     for(x=ms;x>0;x--)
  50.     {
  51.         for(y=113;y>0;y--);
  52.     }
  53. }

阅读(1260) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~