1. 51单片机延时函数的作用
MSC51单片机的控制器由指令寄存器、指令译码器、复位电路、时钟发生器、定时控制逻辑、程序计数器、程序地址寄存器、数据指针、堆栈指针等组成。 1、 时钟发生器。
1) 内部方式:MCS-51 有内部振荡电路,只要在XTAL1、XTAL2引脚上外接定时反馈电路(一般为石英晶振和电容组成的并联回路)内部振荡器便自激振荡--称为内部方式。在XTAL2有3V左右的正弦波输出。
2) 外部方式:由XTAL1或XTAL2输入一外部振荡信号(0。5~16MHZ方波)。
2、复位电路 1) 上电复位 2) 人工复位 3) 系统复位(单片机本身与外部扩展的I/O接口电路需要一个同步复位信号,若不同步,则CPU对I/O接口电路的初始化编程无效,使系统不能正常工作,(1)这可通过延时一段时间以后对外部I/O电路进行初始化来解决,(2)或接不同的复位电路通过调节RC常数使CPU和外部电路同步复位)。 3、CPU定时(时序)
1) 振荡周期(1/fosc)振荡器输出的脉冲周期 2) 时钟周期 振荡脉冲经2分频后的内部时钟信号周期(也称状态周期)。(S) 3) 机器周期 6个时钟周期组成一个机器周期,或1个机器周期=12振荡周期。
4) 指令周期 以机器周期为单位,一条指令执行的时间;有单周期指令、双周期指令、4周期指令。
2. 51单片机中的延时函数
51单片机精确延时有两个办法: 1、采用定时器来延时。
2、用汇编语言来编制延时程序。3. 51系列单片机实现延时的方法
加派不能超过最大工作频率。减慢可通过延时实现。
4. 51单片机调用延时函数
51单片机延迟函数延迟的是时间或周期,这要用到单片机的时钟周期,时钟周期是单片机的基本时间单位,两个振荡周期(时钟周期)组成一个状态周期。
5. 51单片机微秒级延时函数
在单片机c语言中直接调用库函数即可,具体如下:
#include<intrins.h> // 声明了void _nop_(void);
_nop_(); // 产生一条NOP指令。
该函数的作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
6. 51单片机延时指令
1.
可以用_nop_( )函数来实现微秒级的延时。
2.
_nop_(); // 直接当成一条语句使用,产生一条NOP指令NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
3.
注:使用该函数时,需要将头文件#include<intrins.h>包含进源文件中
7. 51单片机延时程序原理
delay:是延时的意思,ms:毫秒。
delayms:就是指毫秒级的延时程序
以下是本人编写的循环体延时程序。时钟晶振为8MHz。
//***************************************
//函数名:Delay_us/ms()
//描 述:延时函数。
//***************************************
#define Delay_1us() asm("nop");asm("nop");asm("nop");asm("nop");asm("nop");asm("nop")
void Delay_us(unsigned int n)
{
unsigned int i=0;
for (i=0; i
8. 51单片机 延时函数
1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。
2、#include "reg51.h"首先写出单片机的头函数。
3、#include "intrins.h"输入位移函数。
4、unsigned int count=0,led;定义函数。
5、输入主函数,定义单片机的端口,写入延时函数。
6、中断跳转,使流水灯运行起来。
9. 51单片机中延时1秒的函数怎么算?
完整的源程序: #include define uint unsigned int sbit spk=P1^2; //与喇叭相连接的单片机引脚的定义 void delayms(uint); //延时子函数声明 main() { uint i=8; //轰鸣的次数 spk=0; //喇叭的初始状态为不响 while(i) //喇叭鸣响控制核心 { spk=!spk; delayms(1000); //延时1000毫秒 i--; } } void delayms(uint ms) //延时子函数 { uint x,y; for(x=ms;x>0;x--); for(y=110;y>0;y--); } 哥们专门给你写的,看的够明白吧