Board logo

标题: 求助关于f020的定时器问题 [打印本页]

作者: 305024184    时间: 2008-9-8 17:23     标题: 求助关于f020的定时器问题

部分代码如下;

#define SYSCLK 11059200 // 系统时钟频率Hz
void SYSCLK_Init (void)
{
int i; // 延时计数器
OSCXCN = 0x67; // 启动外部振荡器晶振
for (i=0; i < 256; i++) ; // 等待振荡器启动
while (!(OSCXCN & 0x80)) ; // 等待振荡器稳定
OSCICN = 0x88; // 选择内部振荡器为时钟源并使能丢失时钟检测器
}
void Timer0_Delay (int ms)
{
int i; // 毫秒计数器
TCON &= ~0x30; // 停止定时器T0并清除溢出标志
TMOD &= ~0x0f; // 配置定时器T0为16位模式
TMOD |= 0x01;
CKCON |= 0x08; // 定时器T0计数系统时钟
for (i = 0; i < ms; i++) { // 数毫秒
TR0 = 0; // 停定时器T0
TH0 = (-SYSCLK/1000) >> 8; // 设置定时器T0 1ms溢出
TL0 =-SYSCLK/1000;
TR0 = 1; // 启动定时器T0
while (TF0 == 0); // 等待溢出
TF0 = 0; // 清除溢出标志
}
}

为什么

TH0 = (-SYSCLK/1000) >> 8; TL0 =-SYSCLK/1000;

要这样写啊?

怎样算出来的

还有那个分频有什么作用?

请说的详细点

谢谢


作者: 305024184    时间: 2008-9-9 13:50

帮帮我啊






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0