【51单片机】定时器产生指定延迟的delay函数

本文介绍了一段用于STM32的自定义延时函数,允许用户根据需要调整定时器初值以实现不同长度的延时。代码中详细展示了如何配置定时器0工作在模式1,设置初值以产生1ms的延时,并通过查询方式等待定时器溢出。此外,还提供了STC89C52的头文件片段,包含了一些基本的SFR(特殊功能寄存器)定义,方便在Keil环境中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 可以自己输入的延迟时间,灵活性高
  2. 下面代码定时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 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文武好呆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值