winnie 发表于 2009-3-13 14:50:36

几个简单的延时程序(C语言),希望大家设计时能用到

/*******************************************************************************/
//函数名:delay_tmr0()    4MHz
//功能描述:TMR0延时50ms.最大延时65ms
//调用函数:无
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:TMR0
//设计者:李军建                              日期:2008.1.11
//修改者:                                    日期:
/*******************************************************************************/
void delay_tmr0()
{
OPTION=0X07;
for(;;)
{
if(TMR0==0XC3)
{ TMR0=0X00;
   break;
}
}
}
/*******************************************************************************/
//函数名:delay_tmr1()    4MHz
//功能描述:TMR1延时200ms.最大延时520ms
//调用函数:无
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:TMR1
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay_tmr1()
{
TMR1IE=0;   //关TMR1中断
T1CON=0X34;   //TMR1分频1:1,4分频24H,不同步外部时钟,选择内部时钟,关闭TMR1
TMR1H=0X3C;
TMR1L=0XB0;   //3CB0   就是200MS
TMR1ON=1;
   while(1)
   {if(TMR1IF==1)
      break;
   }
TMR1IF=0;
TMR1ON=0;
}
/*******************************************************************************/
//函数名:delay_tmr2()    4MHz
//功能描述:TMR2延时4ms.最大延时4ms
//调用函数:无
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:TMR2
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay_tmr2()
{
TMR2IE=0;   //关TMR2中断
T2CON=0X03;   //预分频16
TMR2=0X00;
TMR2ON=1;   //256*16=4096
   while(1)
   {if(TMR2IF==1)
      break;
   }
TMR2IF=0;
TMR2ON=0;
}
/*******************************************************************************/
//函数名:delay_cpu()    4MHz
//功能描述:cpu软件延时4ms.
//调用函数:无
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:无
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay_cpu()
{
int i,j;
for(i=0;i<200;i++)
{
for(j=0;j<200;j++);
}
}
/*******************************************************************************/
//函数名:delay()    4MHz
//功能描述:延时
//调用函数:delay_tmr2();
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:无
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay()
{
int dtm;
for(dtm=20;dtm>0;dtm--)
{
delay_tmr2();
}
}
/*******************************************************************************/
//函数名:delay_on()    4MHz
//功能描述:延时
//调用函数:delay_tmr1();
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:无
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay_on()
{
for(daa=mult;daa>0;daa--)
{
delay_tmr1();
}
}
/*******************************************************************************/
//函数名:delay_oneoff()    4MHz
//功能描述:延时
//调用函数:delay_tmr1();
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:无
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay_oneoff()
{
for(daa=rate;daa>0;daa--)
{
for(daa1=mult;daa1>0;daa1--)
{
delay_tmr1();
}
}
}
/*******************************************************************************/
//函数名:delay_fouroff()    4MHz
//功能描述:延时
//调用函数:delay_tmr1();
//全局变量:无
//输入:无
//输出:无
//返回:无
//占用资源:无
//设计者:李军建                日期:2008.06.03               
//修改者:                                    日期:
/*******************************************************************************/
void delay_fouroff()
{
for(daa=rate-7;daa>0;daa--)
{
for(daa1=mult;daa1>0;daa1--)
{
   delay_tmr1();
}
}
}
/*******************************************************************************/
页: [1]
查看完整版本: 几个简单的延时程序(C语言),希望大家设计时能用到