在论坛里找了一个关于串口通信重写putchar()函数的代码

[复制链接]
2835|2
 楼主| 我是胖子 发表于 2013-8-6 12:31 | 显示全部楼层 |阅读模式
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. volatile unsigned char UartIsSending;//volatile防止该变量所在语句被优化,问:静态的不行?全局变量不行?

  4. char putchar (char ucWriteData)//函数重写
  5. {
  6.         SBUF=ucWriteData;
  7.         UartIsSending=1;
  8.         while(UartIsSending);
  9.         return ucWriteData;
  10. }


  11. volatile unsigned char UartIsSending;

  12. void UartIsr(void) interrupt 4
  13. {
  14.         if(TI) //发送中断
  15.         {
  16.                   UartIsSending=0;
  17.                   TI=0;
  18.         }
  19.         if(RI) //接收中断
  20.         {
  21.                 RI=0;
  22.         }
  23. }

  24. void serial_init ()  
  25. {
  26.   SCON  = 0x50;                     
  27.   TMOD |= 0x20;                     
  28.   TH1   = 0xf3;
  29.   TL1   = 0xf3;                     
  30.   TR1   = 1;                        
  31.   ES=1;
  32. }

  33. void Delay(void)
  34. {
  35.         unsigned char ucDelayCount;

  36.         for(ucDelayCount=0; ucDelayCount<0xFF; ucDelayCount++)
  37.         {
  38.                 ;
  39.         }       
  40. }


  41. void main(void)
  42. {
  43.         serial_init();
  44.         EA = 1;
  45.         while(1)
  46.         {
  47.                 putchar('8');
  48.                 putchar('\n');
  49.                 Delay();
  50.                 printf("welcome to 21ic \n");
  51.         }
  52. }
这个在keil仿真中跑的一点问题都没有 但是串口小助手就是乱码,求解释……
dirtwillfly 发表于 2013-8-6 14:47 | 显示全部楼层
这是谁的代码?最好问问作者,至少也给人家打个招呼
gaogao303 发表于 2013-8-6 14:56 | 显示全部楼层
波特率,还有小助手的显示模式对不对啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

12

帖子

0

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