mikerki5 发表于 2013-7-24 18:00:56

能帮忙解释一下这个485串口初始化的程序吗?

我很想知道TH1的式子是怎么来的,请大神们教导
if ( (((SYSCLK/BAUDRATE)/256)/16) < 1 )这是什么意思
   {
      PCON |= 0x10;                     // SMOD1 (PCON.4) = 1 --> UART1 baudrate
                                                // divide-by-two disabled
      CKCON |= 0x10;                   // Timer1 uses the SYSCLK
      TH1 = - ((SYSCLK/BAUDRATE)/16);这个式子是怎么得出来的?
   }
   else if ( (((SYSCLK/BAUDRATE)/256)/32) < 1 )
   {
      PCON &= ~0x10;                   // SMOD1 (PCON.4) = 0 --> UART1 baudrate
                                       // divide-by-two enabled
      CKCON |= 0x10;                   // Timer1 uses the SYSCLK
      TH1 = - ((SYSCLK/BAUDRATE)/32);
   }
   else if ( ((((SYSCLK/BAUDRATE)/256)/16)/12) < 1 )
   {
      PCON |= 0x10;                  // SMOD1 (PCON.4) = 1 --> UART1 baudrate
                                              // divide-by-two disabled
      CKCON &= ~0x10;                  // Timer1 uses the SYSCLK/12
      TH1 = - (((SYSCLK/BAUDRATE)/16)/12);
   }
   else if ( ((((SYSCLK/BAUDRATE)/256)/32)/12) < 1 )
   {
      PCON &= ~0x10;                   // SMOD1 (PCON.4) = 0 --> UART1 baudrate
                                       // divide-by-two enabled
      CKCON &= ~0x10;                  // Timer1 uses the SYSCLK/12
      TH1 = - (((SYSCLK/BAUDRATE)/32)/12);
   }
   TL1 = TH1;                        // Initialize Timer1
   TR1 = 1;                            // Start Timer1
   SCON1 |= 0x02;                      // Indicate TX1 ready (TI1=1)
页: [1]
查看完整版本: 能帮忙解释一下这个485串口初始化的程序吗?