新手弄的定時器延時代碼  歡迎高手指點     
#include <reg52.h> //頭文件
#include <intrins.h>
#define uchar unsigned char // 數據類型簡化-起別名
#define uint unsigned int // 數據類型簡化-起別名
uint n,i,j,m;
//定時1ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0xfc; //初值高8位
TL0 =0x66; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時10ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0xdc; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時20ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0xb8; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時30ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0x94; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時40ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0x70; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時50ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0x4c; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時60ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0x28; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
//定時70ms ***************************************************
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0x04; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
//*************************************************************************
void delay(n) //定時1ms的n(n<10)倍數 ***************************
{
for(i=0;i<n;i++)
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0xfc; //初值高8位
TL0 =0x66; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
}
//*************************************************************************
void delay(m) //定時50ms的m(m<=20)倍數 **************************
{
for(j=0;j<m;j++)
{
TMOD |= 0x01; //定時器0,工作方式1,16位
TH0 = 0x4c; //初值高8位
TL0 =0x00; //初值低8位
TF0 =0; //溢出清0
TR0 = 1; //打開定時器T0
EA=0; //關閉總中斷
ET0=0; //關閉T0中斷
while(TF0 ==0); //溢出等待
TR0 = 0; //暫停定時器T0
}
}
//*************************************************************************
|