我很想知道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)
一周热门 更多>