欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2882|回復: 1
收起左側

stc15系列單片機與pc串口檢測子程序程序

[復制鏈接]
ID:167440 發表于 2017-8-3 15:16 | 顯示全部樓層 |閱讀模式
0.png
晶振18.432MHz


  1. #include"SERIAL_OUTOUT.H"
  2. #include "reg51.h"
  3. #include "intrins.h"



  4. #define FOSC 18432000L          //系統頻率
  5. #define BAUD 115200             //串口波特率

  6. #define NONE_PARITY     0       //無校驗
  7. #define ODD_PARITY      1       //奇校驗
  8. #define EVEN_PARITY     2       //偶校驗
  9. #define MARK_PARITY     3       //標記校驗
  10. #define SPACE_PARITY    4       //空白校驗

  11. #define PARITYBIT EVEN_PARITY   //定義校驗位

  12. bit busy;

  13. sbit P22 = P2^2;
  14. #define S1_S0 0x40              //P_SW1.6
  15. #define S1_S1 0x80              //P_SW1.7

  16. /*----------------------------
  17. 發送串口數據
  18. ----------------------------*/
  19. void Init_serial()
  20. {
  21.           ACC = P_SW1;
  22.    ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
  23.     P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
  24.    
  25. //  ACC = P_SW1;
  26. // ACC &= ~(S1_S0 | S1_S1);    //S1_S0=1 S1_S1=0
  27. // ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
  28. //P_SW1 = ACC;  
  29. //  
  30. //  ACC = P_SW1;
  31. //  ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=1
  32. //  ACC |= S1_S1;               //(P1.6/RxD_3, P1.7/TxD_3)
  33. //  P_SW1 = ACC;  

  34. #if (PARITYBIT == NONE_PARITY)
  35.     SCON = 0x50;                //8位可變波特率
  36. #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)
  37.     SCON = 0xda;                //9位可變波特率,校驗位初始為1
  38. #elif (PARITYBIT == SPACE_PARITY)
  39.     SCON = 0xd2;                //9位可變波特率,校驗位初始為0
  40. #endif

  41.     T2L = (65536 - (FOSC/4/BAUD));   //設置波特率重裝值
  42.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  43.     AUXR = 0x14;                //T2為1T模式, 并啟動定時器2
  44.     AUXR |= 0x01;               //選擇定時器2為串口1的波特率發生器
  45.     ES = 1;                     //使能串口1中斷
  46.     EA = 1;

  47. }


  48. void SendData(BYTE dat)
  49. {
  50.     while (busy);               //等待前面的數據發送完成
  51.     ACC = dat;                  //獲取校驗位P (PSW.0)
  52.     if (P)                      //根據P來設置校驗位
  53.     {
  54. #if (PARITYBIT == ODD_PARITY)
  55.         TB8 = 0;                //設置校驗位為0
  56. #elif (PARITYBIT == EVEN_PARITY)
  57.         TB8 = 1;                //設置校驗位為1
  58. #endif
  59.     }
  60.     else
  61.     {
  62. #if (PARITYBIT == ODD_PARITY)
  63.         TB8 = 1;                //設置校驗位為1
  64. #elif (PARITYBIT == EVEN_PARITY)
  65.         TB8 = 0;                //設置校驗位為0
  66. #endif
  67.     }
  68.     busy = 1;
  69.     SBUF = ACC;                 //寫數據到UART數據寄存器
  70. }

  71. /*----------------------------
  72. 發送字符串
  73. ----------------------------*/

  74. void SendString(char *s)
  75. {
  76.     while (*s)                  //檢測字符串結束標志
  77.     {
  78.         SendData(*s++);         //發送當前字符
  79.     }
  80. }

  81. void Uart() interrupt 4 using 1
  82. ……………………

  83. …………限于本文篇幅 余下代碼請從51黑下載附件…………
  84. 單片機源程序如下:
復制代碼

所有資料51hei提供下載:
SERIAL_OUTOUT使用說明18.432MHz - 副本.zip (2.64 KB, 下載次數: 14)




回復

使用道具 舉報

ID:140302 發表于 2017-8-15 10:27 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表