C51全局初始化及精确延时程序,51单片机精确延时程序

发布者:科技驿站最新更新时间:2023-06-07 来源: elecfans关键字:C51  全局初始化  精确延时 手机看文章 扫描二维码
随时随地手机看文章

/*********************************************************************************************************
* Initialization Program
* QiZhao,2007
* All Rights Reserved
* File : initial.h
* By : QiZhao
* Contact :zq1987731@163.com
*
* Version : V2.1 γ
* Corrector : QiZhao
* Date : 2008.2.1 (Last modified)
*
* Remarks : Common set of macro definitions keyword, and by setting controlled
* crystal oscillator frequency precision delay subroutine.
*
*********************************************************************************************************/

#ifndef _initial_h_
#define _initial_h_

/*********************************************************************************************************
*
* Global macro definitions
*
*********************************************************************************************************/
#include // AT89S52
#include // Absolute address access
#include // Related to the string
#include // Related to Assembly Language
#include // Unicode conversion
#include // Mathematics functions packet
#include // Standard input or output
#include // Memory Management

#define TRUE 1
#define FALSE 0
#define bool bit // Boolean variable
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define FOSC 12000000UL // The frequency of crystal
#define NOP _nop_();

/*********************************************************************************************************
*
* Accurate delay(5us,10us)
*
*********************************************************************************************************/

void delay10us (void) // FOSC->12000000
{
NOP
NOP
NOP
NOP
NOP
NOP
}

void delay5us (void) // FOSC->12000000
{
NOP
}

/*********************************************************************************************************
*
* Accurate delay(1ms~255ms)
*
*********************************************************************************************************/

#define WAITE_HI (FOSC / 2 / 12 / 1000 >> 8 )
#define WAITE_LOW (FOSC / 2 / 12 / 1000 & 0xFF)

void delayms (uchar time)
{
do
{
uchar j;

#if WAITE_HI != 0
j = 0;
{
uchar i;
for(i = WAITE_HI; i > 0; i--)
{
while (--j);
}
}
#endif

#if WAITE_LOW != 0
j = WAITE_LOW;
while (--j);
#endif

}while (--time);
}

/*********************************************************************************************************
*
* Includes not repeat
*
*********************************************************************************************************/

#endif


关键字:C51  全局初始化  精确延时 引用地址:C51全局初始化及精确延时程序,51单片机精确延时程序

上一篇:以单片机89C52为核心的火控系统语音报读电路设计
下一篇:基于AT89S51单片机实现多路信号源的系统设计

推荐阅读最新更新时间:2024-10-31 08:47

C51单片机对抽油机的智能功率控制电路设计
为了实现抽油机能自动根据负载需要实时进行Δ/Y双向切换和间歇定时控制的目标,采用嵌入式控制技术设计了如图1所示的控制电路。 智能功率控制器的硬件系统以新华龙电子公司为C8051F206配套的实验板为基础,新增输出电路和键盘显示电路后形成。直接利用实验板上的C8051F206MCU、JTAG接口、晶振、复位及电源电路,大大降低了硬件设计工作量。 (1)输出电路 本系统的被控对象是电机的开关。为满足星角切换和开机/停机要求,需要对3只交流接触器(C1~C3)按一定组合关系进行控制,其电路原理和控制真值表如图2(a)和图2(b)所示。考虑到现场抗干扰的需要,在输出端口P0.1,P0.3和P0.5后采用了光电隔离电路(图2(c)),其
[单片机]
<font color='red'>C51</font>单片机对抽油机的智能功率控制电路设计
单片机基础(四):C51对C语言的扩展
C51对C语言的扩展 C51与标准C语言在数据结构、I/O处理、函数等方面与标准C语言存在差别 数据结构 sfr、sfr16 特殊功能寄存器型变量 特殊功能寄存器(SFR,Special Function Register)在单片机中有很重要的作用,常见的SFR是8位,所以sfr16用于表示16位的SFR 定义方式为 变量类型 变量名 = 地址 如 sfr P1 = 0x90 所有的sfr、sfr16型变量都已定义在 reg51.h 、 reg52.h 中 bit 、sbit 位变量 bit 、sbit 型变量在内存中都只占一个二进制位 bit 用于定义一般可处理位的变量,sbit 用于定义特殊功能寄存器中的可位寻
[单片机]
单片机基础(四):<font color='red'>C51</font>对C语言的扩展
Keil C51与标准C比较
深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8类: 8051存储类型及存储区域 存储模式 存储器类型声明 变量类型声明 位变量与位寻址 特殊功能寄存器(SFR) C51指针 函数属性   具体说明如下(8031为缺省CPU)。 第一节 Keil C51扩展关键字 C51 V4.0版本有以下扩展关键字(共19个): _at_ idata sfr16 alien interrupt small bdata large _task_ Code bit pdata using reentrant xdata compact sbit
[单片机]
使用C51单片机的一些误区和注意事项
1) C忌讳绝对定位。 常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。比如unsigned char data x;后,x的地址就是&x, 你只要查看这个参数,就可以在程序中知道具体的地址了。所以俺一看见要使用绝对定位的人,第一印象就是:这大概是个初学者。 2) 设置SP的问题。 原因和1差不对,编译器在把所有变量和缓冲区赋予地址后,自动把最后一个字节开始的地方,作为SP的开始位置,所以初学者是不必 要去理会的。这体现C的优越性,很多事情C编译时候做了。 3) 用C的主程序结构
[单片机]
Keil C51对同一端口的连续读取方法
C语言是当前举世公认的高效简洁而又非常贴近硬件的编程语言之一。将C语言向单片机MCS-51上的移植始于2O世纪8O年代的中后期,经过近1O年的发展,C语言克服了产生代码过长、运行速度较慢的缺点,并且由于C语言在开发速度、软件质量、结构化、可维护性等方面有着汇编语言无法比拟的优势,从而得到日益广泛的应用。Keil C51是德国Keil公司开发的单片机C语言编译系统.该软件功能完备,是目前国内技术开发人员使用最为广泛的语言之一。 在实际工作中发现,用C语言编写的对同一端口进行连续读取的程序,经Keil C51编译后执行结果往往会出错,现以8051单片机读取12位A/D MAX197为例,如图1所示。 iframe id="i
[单片机]
Keil <font color='red'>C51</font>对同一端口的连续读取方法
单片机连续按键检测C51程序
这几天闲来无事,翻腾出以前的仿真器和编程器,找出几片STC12c2052。写了个修改中继功能的小程序,主要实现: 1、在5秒内连续按三下发射键才能打开中继。 2、打开中继后,中继在每一句话后延时10s,10s内没有说话的,中继关闭。 3、每一句语音后面自动加上“滴滴”,每一组语音结束自动加上“滴滴滴”。 用华为450C试了试,发现450C的静噪点不好取,明天用2K电阻连接插头第一脚试试能不能模拟出低电平静噪信号。控制的话应该是把PNP三极管的上面一脚(B)拉低即可。 单片机附带上无语音静音控制输出和“滴滴”声音输出。 不能加附件,就把源程序贴上: /* 本程序主要实现功能: 1、2s之内连续按键3次打
[单片机]
C51】源码 1 -- LED 脉冲宽度调制(PWM)调光
  最近迷上了单片机,借着大学的一点儿基础,开始自学 C51 单片机编程,跟着教程看完了发光二极管 LED 相关的编程,编写以下 LED PWM 调光程序作为总结。   先说一下 PWM 调光,PWM 就是 脉冲宽度调制 ,就是在一个固定周期内,改变高低电平的比例,使 LED 呈现不同的明暗程度。   博主编了一个比较简单的:在 CYCLE 个脉冲的周期内,低电平脉冲 PWM_LOW 的个数从 0 递增到 CYCLE,高电平脉冲的个数当然就会递减,这样 LED 就会呈现出 渐亮 的效果, 渐暗 与此同理。 附上源码:(初出茅庐,难免有写的不好的地方,仅作备份之用,欢迎指点,喷子退散 ) #include reg52.h
[单片机]
PID算法调节C51程序(4)
typedef struct PID { double SetPoint; // Desired Value double Proportion; // Proportional Const double Integral; // Integral Const double Derivative; // Derivative Const double LastError; // Error double PrevError; /
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved