C8051F330 / 320延迟定时器功能不起作用

时间:2014-03-24 09:46:43

标签: c timer embedded 8051

我正在使用Silicon Labs 8051 MCU。下面是IDE随附的示例中带有Timer的Delay函数。

//-----------------------------------------------------------------------------
// T0_Wait_ms
//-----------------------------------------------------------------------------
//
// Return Value : None
// Parameters   :
//   1) unsigned char ms - number of milliseconds to wait
//                        range is full range of character: 0 to 255
//
// Configure Timer0 to wait for <ms> milliseconds using SYSCLK as its time
// base.
//
void T0_Wait_ms (unsigned char ms)
{
TCON &= ~0x30;                      // Stop Timer0; Clear TF0
TMOD &= ~0x0f;                      // 16-bit free run mode
TMOD |=  0x01;

CKCON |= 0x04;                      // Timer0 counts SYSCLKs

while (ms) {
  TR0 = 0;                         // Stop Timer0
  TH0 = -(SYSCLK/1000 >> 8);       // Overflow in 1ms
  TL0 = -(SYSCLK/1000);
  TF0 = 0;                         // Clear overflow indicator
  TR0 = 1;                         // Start Timer0
  while (!TF0);                    // Wait for overflow
  ms--;                            // Update ms counter
}

TR0 = 0;                            // Stop Timer0
}

我将输入参数从 char更改为整数以提供更长的延迟。当我检查它没有给出准确的延迟时

0 个答案:

没有答案