分享

延时函数

 昵称570477 2011-01-04

这两天写lcd1602的驱动程序,要用到延时程序,都是从别人那考现成的,不知道怎么调试,昨天看了用keil调试延时程序的文章,今天调好了两个程序,一个是1ms为基准的,1个100ms为基准的,

 

/*******************************延时函数******************************************/
#include <reg51.h>
//#include <intrins.h>
#define MHz 12    //晶振频率


void delay_1ms(unsigned char delay);  // 基准为1ms的延时函数,最大255ms
void delay_100ms(unsigned char delay);


/************************************1ms基准延时函数******************************/
/*延时函数,基准值为1ms,最大255毫秒             */
/*********************************************************************************/
void delay_1ms(unsigned char delay)

 unsigned char i,j,tmp;
 
 tmp = (char)((100*MHz)/12+23);
 //根据晶振频率计算内层循环初值,调整23可以对延时时间进行微调
 
 for(i=0;i<delay;i++)
 {
  for(j=0;j<tmp;j++);
 }
}

/**********************************100ms基准延时函数******************************/
/*延时函数,基准值为100ms,最大25 秒             */
/*********************************************************************************/
void delay_100ms(unsigned char delay)

 unsigned char i;
 unsigned int j, tmp;
 
 tmp = (int)100*((100*MHz)/12-17);
 //根据晶振频率计算内层循环次数,调整17可以对延时时间进行微调
 
 for(i=0;i<delay;i++)
 {
  for(j=0;j<tmp;j++);
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多