[51单片机] 欢迎大家来找茬

[复制链接]
871|2
 楼主| 小分子 发表于 2016-9-2 15:29 | 显示全部楼层 |阅读模式
  1. /*******************************
  2. MCU通过串口向电脑发送一串字符串
  3. *******************************/

  4. #include <reg52.h>

  5. #define uchar unsigned char

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

  7. void InitUart();

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

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

  32. void UartIRQ() interrupt 4
  33. {
  34.         if (1 == TI)
  35.         {
  36.                  TI = 0;
  37.                 g_TranEnd = 1;
  38.         }
  39.                
  40. }
ccxlslr 发表于 2016-9-2 16:48 | 显示全部楼层
真的不错,使用了状态机,比那傻等的要好很多。看用来做什么,如果只是调试,那就要做得简单,可以重复使用。因此做些可以移值的printf很重要。
比如printf输出到FIFO里,然后再输出。可能效率低一些,但程序结构不错。应用方便。
ayb_ice 发表于 2016-9-2 17:08 来自手机 | 显示全部楼层
本帖最后由 ayb_ice 于 2016-9-2 17:09 编辑

还不如死等,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

68

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部