找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2210|回复: 7
收起左侧

关于STC15单片机串口通讯问题

[复制链接]
ID:675145 发表于 2020-4-2 13:39 | 显示全部楼层 |阅读模式
在网上看到这种串口显示方法,感觉挺方便就试了一下,但是有点不对劲,请大家帮忙看看这样写是不是对的.

单片机源程序如下:
  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. //}
复制代码

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

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

屏蔽一行显示出现错误

屏蔽一行显示出现错误

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

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

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

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

使用道具 举报

ID:388929 发表于 2020-4-2 15:36 | 显示全部楼层
看一下是不是波特率设置问题
回复

使用道具 举报

ID:275449 发表于 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; }
回复

使用道具 举报

ID:275449 发表于 2020-4-2 15:51 | 显示全部楼层
抱歉刚刚发的是STM32的  你百度搜索个51
回复

使用道具 举报

ID:94031 发表于 2020-4-2 16:32 | 显示全部楼层
这跟串口线,调试软件都可能有关系。
回复

使用道具 举报

ID:675145 发表于 2020-4-2 16:59 | 显示全部楼层
billaj 发表于 2020-4-2 15:36
看一下是不是波特率设置问题

波特率是串口计算出来的   检查了下应该没问题
回复

使用道具 举报

ID:675145 发表于 2020-4-2 17:00 | 显示全部楼层
12345678110 发表于 2020-4-2 15:50
用printf输出最好用下重定向 原因百度去  这里发个代码给你  随便放你的程序位置 int fputc (int ch,FILE * ...

什么叫重定向?
回复

使用道具 举报

ID:675145 发表于 2020-4-2 17:02 | 显示全部楼层
xuyaqi 发表于 2020-4-2 16:32
这跟串口线,调试软件都可能有关系。

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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