按照你的意思,写了如下三个函数。在初始化定时器0后(调用InitTimer0()),你可以调用DelayNms(unsigned int t)这个函数来达到你想要的要的延时效果。
unsigned int count;//定义全局变量用于计时
/*----------------------------------------
函数名 :DelayNms(unsigned char t)
功能 : 延时n毫秒
输入参数 : t ,延时长度
输出参数 : 无
-------------------------------------------*/
void DelayNms(unsigned int t)
{
count=t;
while(count);
}
/*----------------------------------------
函数名 : InitTimer0
功能 : 定时器0初始化
输入参数 : 无
输出参数 : 无
-------------------------------------------*/
void InitTimer0()
{
TMOD |= 0x01;//定时器0,工作方式1
TH0=(65536-1000)/256;//定时1ms
TL0=(65536-1000)%256;
ET0 = 1;//打开定时器0中断
EA = 1;//打开总中断
TR0 = 1;//打开定时器0
}
/*----------------------------------------
函数名 :IsrTimer0
功能 :定时器0终端服务,间隔1ms将计数变量减一。
输入参数 : 无
输出参数 : 无
-------------------------------------------*/
void IsrTimer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
count--;
}
按照你的意思,写了如下三个函数。在初始化定时器0后(调用InitTimer0()),你可以调用DelayNms(unsigned int t)这个函数来达到你想要的要的延时效果。
unsigned int count;//定义全局变量用于计时
/*----------------------------------------
函数名 :DelayNms(unsigned char t)
功能 : 延时n毫秒
输入参数 : t ,延时长度
输出参数 : 无
-------------------------------------------*/
void DelayNms(unsigned int t)
{
count=t;
while(count);
}
/*----------------------------------------
函数名 : InitTimer0
功能 : 定时器0初始化
输入参数 : 无
输出参数 : 无
-------------------------------------------*/
void InitTimer0()
{
TMOD |= 0x01;//定时器0,工作方式1
TH0=(65536-1000)/256;//定时1ms
TL0=(65536-1000)%256;
ET0 = 1;//打开定时器0中断
EA = 1;//打开总中断
TR0 = 1;//打开定时器0
}
/*----------------------------------------
函数名 :IsrTimer0
功能 :定时器0终端服务,间隔1ms将计数变量减一。
输入参数 : 无
输出参数 : 无
-------------------------------------------*/
void IsrTimer0() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
count--;
}
5
举报