1. 可以自己输入的延迟时间,灵活性高
  2. 下面代码定时1ms,用户可以自行更改定时器初值
void delay(unsigned int n)//STC89C52,晶振:11.0592MHZ
{   int i;for(i=0;i<n;i++){TMOD &= 0xF0;     TMOD |= 0x01;      //定时器0,工作模式1TH0 = 0xFC;            //至初值TL0 = 0x66;           //定时1msTF0 = 0;            //清除溢出标志TR0 = 1;           //开启定时器0EA=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 ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD   = 0xe5;
sfr ISP_TRIG  = 0xe6;
sfr ISP_CONTR = 0xe7;/* Above is STC additional SFR *//*--------------------------------------------------------------------------
REG51F.HHeader file for 8xC31/51, 80C51Fx, 80C51Rx+
Copyright (c) 1988-1999 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.Modification according to DataSheet from April 1999- SFR's AUXR and AUXR1 added for 80C51Rx+ derivatives
--------------------------------------------------------------------------*//*  BYTE Registers  */
sfr P0   = 0x80;
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;
sfr P1   = 0x90;
sbit P10 = P1^0;
sbit P11 = P1^1;
sbit P12 = P1^2;
sbit P13 = P1^3;
sbit P14 = P1^4;
sbit P15 = P1^5;
sbit P16 = P1^6;
sbit P17 = P1^7;
sfr P2   = 0xA0;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit P23 = P2^3;
sbit P24 = P2^4;
sbit P25 = P2^5;
sbit P26 = P2^6;
sbit P27 = P2^7;
sfr P3   = 0xB0;
sbit P30 = P3^0;
sbit P31 = P3^1;
sbit P32 = P3^2;
sbit P33 = P3^3;
sbit P34 = P3^4;
sbit P35 = P3^5;
sbit P36 = P3^6;
sbit P37 = P3^7;
sfr PSW  = 0xD0;
sfr ACC  = 0xE0;
sfr B    = 0xF0;
sfr SP   = 0x81;
sfr DPL  = 0x82;
sfr DPH  = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0  = 0x8A;
sfr TL1  = 0x8B;
sfr TH0  = 0x8C;
sfr TH1  = 0x8D;
sfr IE   = 0xA8;
sfr IP   = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;/*  80C51Fx/Rx Extensions  */
sfr AUXR   = 0x8E;
sfr AUXR1  = 0xA2;
sfr SADDR  = 0xA9;
sfr IPH    = 0xB7;
sfr SADEN  = 0xB9;
sfr T2CON  = 0xC8;
sfr T2MOD  = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2    = 0xCC;
sfr TH2    = 0xCD;/* PCA SFR
sfr CCON   = 0xD8;
sfr CMOD   = 0xD9;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sfr CCAPM2 = 0xDC;
sfr CCAPM3 = 0xDD;
sfr CCAPM4 = 0xDE;
sfr CL     = 0xE9;
sfr CCAP0L = 0xEA;
sfr CCAP1L = 0xEB;
sfr CCAP2L = 0xEC;
sfr CCAP3L = 0xED;
sfr CCAP4L = 0xEE;
sfr CH     = 0xF9;
sfr CCAP0H = 0xFA;
sfr CCAP1H = 0xFB;
sfr CCAP2H = 0xFC;
sfr CCAP3H = 0xFD;
sfr CCAP4H = 0xFE;
*//*  BIT Registers  */
/*  PSW   */
sbit CY   = PSW^7;
sbit AC   = PSW^6;
sbit F0   = PSW^5;
sbit RS1  = PSW^4;
sbit RS0  = PSW^3;
sbit OV   = PSW^2;
sbit F1   = PSW^1;
sbit P    = PSW^0;/*  TCON  */
sbit TF1  = TCON^7;
sbit TR1  = TCON^6;
sbit TF0  = TCON^5;
sbit TR0  = TCON^4;
sbit IE1  = TCON^3;
sbit IT1  = TCON^2;
sbit IE0  = TCON^1;
sbit IT0  = TCON^0;/*  IE   */
sbit EA   = IE^7;
sbit EC   = IE^6;
sbit ET2  = IE^5;
sbit ES   = IE^4;
sbit ET1  = IE^3;
sbit EX1  = IE^2;
sbit ET0  = IE^1;
sbit EX0  = IE^0;/*  IP   */
/*  sbit PPC  = IP^6;*/
sbit PT2  = IP^5;
sbit PS   = IP^4;
sbit PT1  = IP^3;
sbit PX1  = IP^2;
sbit PT0  = IP^1;
sbit PX0  = IP^0;/*  P3  */
sbit RD   = P3^7;
sbit WR   = P3^6;
sbit T1   = P3^5;
sbit T0   = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD  = P3^1;
sbit RXD  = P3^0;/*  SCON  */
sbit SM0  = SCON^7; // alternatively "FE"
sbit FE   = SCON^7;
sbit SM1  = SCON^6;
sbit SM2  = SCON^5;
sbit REN  = SCON^4;
sbit TB8  = SCON^3;
sbit RB8  = SCON^2;
sbit TI   = SCON^1;
sbit RI   = SCON^0;/*  P1  */
/* PCA
sbit CEX4 = P1^7;
sbit CEX3 = P1^6;
sbit CEX2 = P1^5;
sbit CEX1 = P1^4;
sbit CEX0 = P1^3;
sbit ECI  = P1^2;
*/sbit T2EX = P1^1;
sbit T2   = P1^0;/*  T2CON  */
sbit TF2   = T2CON^7;
sbit EXF2  = T2CON^6;
sbit RCLK  = T2CON^5;
sbit TCLK  = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2   = T2CON^2;
sbit C_T2  = T2CON^1;
sbit CP_RL2= T2CON^0;/*  CCON  */
/*  PCA
sbit CF    = CCON^7;
sbit CR    = CCON^6;sbit CCF4  = CCON^4;
sbit CCF3  = CCON^3;
sbit CCF2  = CCON^2;
sbit CCF1  = CCON^1;
sbit CCF0  = CCON^0;
*//#endif

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

  1. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  2. 51单片机定时器频率计算

    频率是周期的倒数 51单片机定时器中TH与TL可以改变周期来改变频率. 举例如下 3000us=3ms=0.003s   T=0.003s频率=333HZ    2000us=2ms=0.002s   ...

  3. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  4. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  5. 51单片机定时器的查询和进入中断处理

    51单片机定时器可用两种方式处理:查询和进入中断处理. 1.查询方式 void Init_T0 (void) 定时器初始化 { TMOD = 0x01;//计时器模式 TH0 = (65535-650 ...

  6. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

  7. 51单片机定时器初值计算以及初值计算软件

    51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...

  8. 51单片机定时器/计数器(定时器中断)

    51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...

  9. 【51MCU】51单片机定时器中断写MIDI音乐(按键可切换音乐)

    Author: Manba Cople 专业:IOT 说明:记录和输出学习内容 文章目录 前言 定时器 音乐播放 音乐库 总结和展望 前言 程序思路:该程序是利用51单片机的定时器中断,另外根据音符的 ...

最新文章

  1. [每日一题] 11gOCP 1z0-053 :2013-09-29 Flashback Data Archive ...................................6...
  2. 小波的秘密2_MATLAB图像多尺度分析
  3. 宝塔asp php,宝塔Windows面板部署ASP、ASPX程序WEB网站环境方法
  4. 安卓开发学习笔记(六):如何实现指定图片定时开屏功能?
  5. Java SSM 分布式开发框架/套件源码
  6. 湘潭比赛有感---铩羽之行
  7. 全国python工程师有多少_2019年Python工程师的平均薪资是多少?
  8. 九度 1526:朋友圈(并查集)
  9. Android上的抓包工具 Packet Capture
  10. Mplayer播放器程序设计Linux,Linux下编程实现mplayer播放器总结
  11. OSChina 周三乱弹 —— 谈什么对象?睡什么觉?
  12. 库卡机器人会卡顿吗_看完你就知道德国库卡机器人到底有多牛!
  13. oracle中日期函数
  14. 读取excel中的表格数据到字典dict中--python
  15. iOS10 适配 ATS(app支持https通过App Store审核) 韩俊强的博客
  16. 求在线雇佣问题中最好雇佣者出现的概率及概率最大时最好雇佣者的位置
  17. 去掉图题注 空格_在Word 2010文档中为图表插入形如“图一,图二”的题注时,删除标签与编号之间自动出现的空格的最优操作方法是( )_学小易找答案...
  18. 导航栏个人中心增加宽度RiProV2主题美化日主题美化Ritheme主题美化
  19. 《分布式服务框架原理与实践》读书笔记2
  20. 考研党员自我个人总结

热门文章

  1. Yolov5图像识别教程
  2. JavaScript5:常用DOM操作
  3. 解决虚拟机桥接网络没有 VMnet0 的问题
  4. 概率论各种基础分布期望和方差推导过程汇总
  5. Linux I2C总线(二)I2C设备驱动编写方法
  6. oh-my-zsh提示符显示当前用户名和主机名
  7. 《微观经济学》 第六章
  8. 单片机的组成以及分类和指标
  9. 腾讯,迅雷,完美等公司的一些笔试题整理
  10. 此身, 此时, 此地