- 可以自己输入的延迟时间,灵活性高
- 下面代码定时1ms,用户可以自行更改定时器初值
void delay(unsigned int n)//STC89C52,晶振:11.0592MHZ
{
int i;
for(i=0;i<n;i++)
{
TMOD &= 0xF0;
TMOD |= 0x01; //定时器0,工作模式1
TH0 = 0xFC; //至初值
TL0 = 0x66; //定时1ms
TF0 = 0; //清除溢出标志
TR0 = 1; //开启定时器0
EA=0; //关中断(使用查询方式)
ET0=0; //关T0中断
while(TF0 == 0); //溢出等待
TR0 = 0; //暂停定时器
}
}
后附上STC89C52的头文件,如果有小伙伴Keil里没有STC的话,可以新建一个STC89C52.h头文件,然后直接复制下面的代码到,并添加该头文件到工程文件夹中,最后便可以在main.c里#include。
#ifndef __STC89C5xRC_RDP_H__
#define __STC89C5xRC_RDP_H__
/
/* The following is STC additional SFR */
/* sfr AUXR = 0x8e; */
/* sfr AUXR1 = 0xa2; */
/* sfr IPH = 0xb7; */
sfr P4 = 0xe8;
sbit P46 = P4^6;
sbit P45 = P4^5; //ISPÏÂÔØÐè¹´Ñ¡"ALE½ÅÓÃ×÷P4.5¿Ú"
sbit P44 = P4^4;
sbit P43 = P4^3;
sbit P42 = P4^2;
sbit P41 = P4^1;
sbit P40 = P4^0;
sfr XICON = 0xc0;
sfr WDT_CONTR = 0xe1;
sfr ISP_DATA = 0xe2;
sfr