怎样用C8051F单片机的定时器做准确的5MS的延时呢

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:14:48
外部晶振11.059M 系统时钟不分频

你要多准确?
对应系统时间T=0.0904uS,5mS=55309.7<65536,可以用定时器0工作在16位定时模式。CKCON=0X04;
TMOD=0X01;
//------------------
void Timer0_Delay (void)interrupt 1 using 1{
TH0=(65536-55310)/256;
TL0=(65536-55310)%256;
}
55309为4999.9336(少664ns),55310为5000.0240(多240ns)。定时器时钟选系统时钟,
或者:
//-----------------------------------------------------------------------------
// Timer0_Poll1.c
//-----------------------------------------------------------------------------
// 此程序是一个使用定时器T0在查询模式的例子实现一个延时计数器精度1ms
//
// 假设在XTAL1和XTAL2之间接22.1184MHz晶体
//
// 系统时钟频率存储在全局常量SYSCLK.
//
// 目标器件: C8051F02x
// 链接工具: KEIL C51 6.03 / KEIL EVAL C51
//
//-----------------------------------------------------------------------------
// 包含文件
//-----------------------------------------------------------------------------
#include <c8051f020.h> // SFR声明
//---------------------------------------------------