找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3752|回复: 0
打印 上一主题 下一主题
收起左侧

移植简单软件串口打印函数 STC单片机串口助手的hex转换成文本模式

[复制链接]
跳转到指定楼层
楼主
为了确保移植成功,有必要在 "soft_uart.h"的文件下进行以下步骤的更改:
                |
                |
                |
                V

/********************特别注意***************************/
该软件串口打印可以定义任何一个IO口输出数据
波特率固定为9600
该软件串口只适用与15系列的单片机
/********************特别注意***************************/

1.先将头文件和点C文件添加到你需要添加的文件中如:
#include    "soft_uart.c"
#include    "soft_uart.h"

2.打开soft_uart.h文件,因为不同的系统时钟不同,需要在soft_uart.h文件中配置为相应的主时钟,这里因为我的程序是11.0592进行了二分频,所以我选择5529600L,用户根据自己的配置进行相应的选择。

//#define MAIN_Fosc        22118400L    //定义主时钟
//#define MAIN_Fosc        12000000L    //定义主时钟
//#define MAIN_Fosc        11059200L    //定义主时钟
#define MAIN_Fosc         5529600L    //定义主时钟
//#define MAIN_Fosc        24000000L    //定义主时钟

/*********************************************************/
3.还需要根据芯片的型号进行更改头文件。
//#include    "STC15Fxxxx.H"
#include    "STC15F2K60S2.h"

单片机源程序如下:

  1. /*************        功能说明        **************

  2. 本文件为模拟串口发送程序, 一般为测试监控用.

  3. 串口参数:9600,8,n,1.

  4. 可以根据主时钟自动适应.

  5. ******************************************/

  6. #include        "soft_uart.h"

  7. sbit        P_TXD = P3^1;        //定义模拟串口发送端,可以是任意IO

  8. //========================================================================
  9. // 函数: void        BitTime(void)
  10. // 描述: 位时间函数。
  11. // 参数: none.
  12. // 返回: none.
  13. // 版本: VER1.0
  14. // 日期: 2013-4-1
  15. // 备注:
  16. //========================================================================
  17. void        BitTime(void)
  18. {
  19.         u16 i;
  20.         i = ((MAIN_Fosc / 100) * 104) / 130000L - 1;                //根据主时钟来计算位时间
  21.         while(--i);
  22. }

  23. //========================================================================
  24. // 函数: void        TxSend(uchar dat)
  25. // 描述: 模拟串口发送一个字节。9600,N,8,1
  26. // 参数: dat: 要发送的数据字节.
  27. // 返回: none.
  28. // 版本: VER1.0
  29. // 日期: 2013-4-1
  30. // 备注:
  31. //========================================================================
  32. void        TxSend(u8 dat)
  33. {
  34.         u8        i;
  35.         EA = 0;
  36.         P_TXD = 0;
  37.         BitTime();
  38.         for(i=0; i<8; i++)
  39.         {
  40.                 if(dat & 1)                P_TXD = 1;
  41.                 else                        P_TXD = 0;
  42.                 dat >>= 1;
  43.                 BitTime();
  44.         }
  45.         P_TXD = 1;
  46.         EA = 1;
  47.         BitTime();
  48.         BitTime();
  49. }

  50. //========================================================================
  51. // 函数: void PrintString(unsigned char code *puts)
  52. // 描述: 模拟串口发送一串字符串。9600,N,8,1
  53. // 参数: *puts: 要发送的字符指针.
  54. // 返回: none.
  55. // 版本: VER1.0
  56. // 日期: 2013-4-1
  57. // 备注:
  58. //========================================================================
  59. void PrintString(unsigned char code *puts)
  60. {
  61.     for (; *puts != 0;        puts++)  TxSend(*puts);
  62. }
  63. void   printdec_soft(int dec) //打印十进制的数据出来
  64. {       
  65.    char buff_numb[5]={0},i=0,j;
  66.         if(dec==0)
  67.     {          
  68.             TxSend( (char)( '0'));//48         
  69.                 TxSend( (char)('\r'));
  70.              TxSend( (char)('\n'));
  71.     }
  72.          else
  73.          {
  74.                 while(dec!=0)
  75.                 {
  76.                         buff_numb[i++]=dec%10;  //从个位开始读入
  77.                         dec=dec/10;
  78.                 }
  79.                 for(j=i-1;j>=0;j--)
  80.                 {
  81.                         TxSend( (char)(buff_numb[j] + '0'));//48
  82.                 }
  83.                 TxSend( (char)('\r'));
  84.                 TxSend( (char)('\n'));
  85.         }
  86. }

  87. void   printdec_softtm(int dec) //打印十进制的数据出来
  88. {       
  89.    char buff_numb[5]={0},i=0,j;
  90.         if(dec==0)
  91.     {
  92.             TxSend( (char)( '0'));//48         
  93.     }
  94.          else
  95.          {
  96.                 while(dec!=0)
  97.                 {
  98.                         buff_numb[i++]=dec%10;  //从个位开始读入
  99.                         dec=dec/10;
  100.                 }
  101.                 for(j=i-1;j>=0;j--)
  102.                 {
  103.                         TxSend( (char)(buff_numb[j] + '0'));//48
  104.                 }
  105.         }
  106. }
复制代码

全部资料51hei下载地址:
移植简单软件串口打印函数.zip (2.15 KB, 下载次数: 13)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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