找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4198|回復(fù): 0
收起左側(cè)

移植簡單軟件串口打印函數(shù) STC單片機串口助手的hex轉(zhuǎn)換成文本模式

[復(fù)制鏈接]
ID:342442 發(fā)表于 2018-10-19 14:15 | 顯示全部樓層 |閱讀模式
為了確保移植成功,有必要在 "soft_uart.h"的文件下進行以下步驟的更改:
                |
                |
                |
                V

/********************特別注意***************************/
該軟件串口打印可以定義任何一個IO口輸出數(shù)據(jù)
波特率固定為9600
該軟件串口只適用與15系列的單片機
/********************特別注意***************************/

1.先將頭文件和點C文件添加到你需要添加的文件中如:
#include    "soft_uart.c"
#include    "soft_uart.h"

2.打開soft_uart.h文件,因為不同的系統(tǒng)時鐘不同,需要在soft_uart.h文件中配置為相應(yīng)的主時鐘,這里因為我的程序是11.0592進行了二分頻,所以我選擇5529600L,用戶根據(jù)自己的配置進行相應(yīng)的選擇。

//#define MAIN_Fosc        22118400L    //定義主時鐘
//#define MAIN_Fosc        12000000L    //定義主時鐘
//#define MAIN_Fosc        11059200L    //定義主時鐘
#define MAIN_Fosc         5529600L    //定義主時鐘
//#define MAIN_Fosc        24000000L    //定義主時鐘

/*********************************************************/
3.還需要根據(jù)芯片的型號進行更改頭文件。
//#include    "STC15Fxxxx.H"
#include    "STC15F2K60S2.h"
0.png
單片機源程序如下:

  1. /*************        功能說明        **************

  2. 本文件為模擬串口發(fā)送程序, 一般為測試監(jiān)控用.

  3. 串口參數(shù):9600,8,n,1.

  4. 可以根據(jù)主時鐘自動適應(yīng).

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

  6. #include        "soft_uart.h"

  7. sbit        P_TXD = P3^1;        //定義模擬串口發(fā)送端,可以是任意IO

  8. //========================================================================
  9. // 函數(shù): void        BitTime(void)
  10. // 描述: 位時間函數(shù)。
  11. // 參數(shù): 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;                //根據(jù)主時鐘來計算位時間
  21.         while(--i);
  22. }

  23. //========================================================================
  24. // 函數(shù): void        TxSend(uchar dat)
  25. // 描述: 模擬串口發(fā)送一個字節(jié)。9600,N,8,1
  26. // 參數(shù): dat: 要發(fā)送的數(shù)據(jù)字節(jié).
  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. // 函數(shù): void PrintString(unsigned char code *puts)
  52. // 描述: 模擬串口發(fā)送一串字符串。9600,N,8,1
  53. // 參數(shù): *puts: 要發(fā)送的字符指針.
  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) //打印十進制的數(shù)據(jù)出來
  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) //打印十進制的數(shù)據(jù)出來
  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. }
復(fù)制代碼

全部資料51hei下載地址:
移植簡單軟件串口打印函數(shù).zip (2.15 KB, 下載次數(shù): 13)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表