标题: 关于STC15单片机串口通讯问题 [打印本页]

作者: 张小不懂    时间: 2020-4-2 13:39
标题: 关于STC15单片机串口通讯问题
在网上看到这种串口显示方法,感觉挺方便就试了一下,但是有点不对劲,请大家帮忙看看这样写是不是对的.

单片机源程序如下:
  1. #include "STC15.h"
  2. #include <stdio.h>

  3. typedef unsigned char u8;
  4. typedef unsigned short u16;
  5. typedef unsigned long u32;

  6. void port_mode() // 端口模式
  7. {
  8.         P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;
  9.         P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00;
  10.         P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;
  11. }

  12. void Uart1_Init()        //串口初始化
  13. {
  14.         SCON|=0x50;
  15.         AUXR|=0X15;        
  16.         T2H=0XFC;
  17.         T2L=0XF3;
  18.         ES=1;
  19.         EA=1;
  20.         TI=1;
  21. }

  22. void main()
  23. {
  24.         port_mode();
  25.         Uart1_Init();

  26.         printf("大家好!欢迎学习单片机\n");        
  27.         
  28.         printf("********************************\n");
  29.         printf("hello world\n");                         // 最简单输出
  30.         printf("How do you do!\n");                 // 输出换行符\n
  31.         printf("欢迎学习 STC51 单片机\n");         // 中文输出
  32.         printf("********************************\n");
  33.         while(1)
  34.         {
  35.                
  36.         }
  37. }

  38. //void Uart1_Rountine() interrupt 4
  39. //{
  40. //        if(RI)
  41. //        {
  42. //                RI=0;
  43. //        }
  44. //        else  if(TI)
  45. //        {
  46. //                TI=0;
  47. //        }                        
  48. //}
复制代码

1585805050(1).jpg (151.34 KB, 下载次数: 77)

这张图想要显示的完全显示出来了

这张图想要显示的完全显示出来了

1585805080(1).jpg (192.81 KB, 下载次数: 64)

屏蔽一行显示出现错误

屏蔽一行显示出现错误

1585805123(1).jpg (229.76 KB, 下载次数: 70)

不要中断源有一部分未显示出来

不要中断源有一部分未显示出来

1585805193(1).jpg (229.79 KB, 下载次数: 70)

屏蔽第一行和中断源,同样有一部分未显示

屏蔽第一行和中断源,同样有一部分未显示

作者: billaj    时间: 2020-4-2 15:36
看一下是不是波特率设置问题
作者: 12345678110    时间: 2020-4-2 15:50
用printf输出最好用下重定向 原因百度去  这里发个代码给你  随便放你的程序位置 int fputc (int ch,FILE * f) {     HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xffff);     return ch; }   int fgetc (FILE * f) {     uint8_t ch=0;     HAL_UART_Receive(&huart1,&ch,1,0xffff);     return ch; }
作者: 12345678110    时间: 2020-4-2 15:51
抱歉刚刚发的是STM32的  你百度搜索个51
作者: xuyaqi    时间: 2020-4-2 16:32
这跟串口线,调试软件都可能有关系。
作者: 张小不懂    时间: 2020-4-2 16:59
billaj 发表于 2020-4-2 15:36
看一下是不是波特率设置问题

波特率是串口计算出来的   检查了下应该没问题
作者: 张小不懂    时间: 2020-4-2 17:00
12345678110 发表于 2020-4-2 15:50
用printf输出最好用下重定向 原因百度去  这里发个代码给你  随便放你的程序位置 int fputc (int ch,FILE * ...

什么叫重定向?
作者: 张小不懂    时间: 2020-4-2 17:02
xuyaqi 发表于 2020-4-2 16:32
这跟串口线,调试软件都可能有关系。

stc-isp-15xx-v6.87B  软件用的是这个,最近好像更新了一次
线一直用的这根   应该问题不大




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1