標(biāo)題: 上位機和下位機通信的單片機程序 [打印本頁]

作者: tdcqabc    時間: 2017-11-13 21:15
標(biāo)題: 上位機和下位機通信的單片機程序
上位機和下位機通信的程序

單片機源程序如下:
  1. #include <c8051f020.h>

  2. #define SYSCLK       22118400          // 系統(tǒng)時鐘頻率22.1184MHz
  3. #define BAUDRATE       115200                           // BAUDRATE
  4. #define TIMER2_RELOAD 0x0000

  5. sfr16 RCAP2 = 0xCA;                    // Timer2 Reload Register
  6. sfr16 TMR2 = 0xCC;                     // Timer2 Register
  7. /*******************                                                                                                               
  8. 振蕩器初始化
  9. ********************/
  10. void OSCILLATOR_Init (void)
  11. {
  12.    int i;                              /*延時計數(shù)器*/
  13.    OSCXCN = 0x67;                      /*打開外部晶體振蕩器*/
  14.    for (i=0; i < 256; i++) ;           /*延時,等待振蕩器啟動(>1ms)*/
  15.    while (!(OSCXCN & 0x80)) ;          /*查詢外部晶體是否穩(wěn)定起振*/
  16.    OSCICN = 0x88;                      /*用外部晶體作為系統(tǒng)時鐘,并使能時鐘丟失檢測*/
  17. }

  18. /**************************************
  19. 端口的初始化
  20. ***************************************/
  21. void PORT_Init()
  22. {
  23.         XBR0 = 0x04;                //使能UART0EN(XBAR0.2),p0.0=TX0,p0.1=RX0
  24.         XBR2 = 0x40;                //XBARE置1
  25. }

  26. //-----------------------------------------------------------------------------
  27. // UART0_Init
  28. //-----------------------------------------------------------------------------
  29. //
  30. // Return Value : None
  31. // Parameters   : None
  32. //
  33. // Configure the UART1 using Timer1, for <baudrate> and 8-N-1.
  34. //
  35. //-----------------------------------------------------------------------------

  36. void UART0_Init (void)
  37. {
  38.    SCON0   = 0x50;                     // SCON0: mode 1, 8-bit UART, enable RX
  39.    TMOD    = 0x21;                     // TMOD: timer 1, mode 2, 8-bit reload
  40.    TH1    = -(SYSCLK/BAUDRATE/16);     // set Timer1 reload value for baudrate
  41.    TR1    = 1;                         // start Timer1
  42.    CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
  43.    PCON  |= 0x90;                      // SMOD00 = 1
  44.    //TI0    = 1;                       // Indicate TX0 ready
  45. }

  46. void UART1_Init (void)
  47. {
  48.         SCON1=0x50;
  49.         T4CON=0x34;
  50.         CKCON |= 0x50;
  51.         PCON  |= 0x90;
  52.         TH4=0XFF;
  53.         TL4=0XFA;
  54.         RCAP4L=0XFA;
  55.         RCAP4H=0XFF;

  56. }


  57. /*
  58. T0初始化
  59. */
  60. void T1_initial(void)
  61.         {
  62.                 TMOD=0x21;
  63.                 //CKCON |= 0x08;
  64.                 //TH0=0x70;
  65.                 //TL0=0x00;         
  66.                 TH0=0x70;
  67.                 TL0=0x00;
  68.                 TR0=1;               
  69.         }

  70. /*
  71. T2初始化
  72. */
  73. void T2_initial(void)
  74. ……………………

  75. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
程序.rar (94.64 KB, 下載次數(shù): 35)







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1