单片机延时子程序

作者&投稿:线昏 (若有异议请与网页底部的电邮联系)
单片机延时子程序~

DELAY20MS:
MOV R7,#4
D1:
MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
NOP
NOP
RET
延时为:
1+(1+2*248+2)*4+1+1+1=20000US=20MS
用汇编..优点就是精确...
缺点就是算有点复杂.

void delay(int time)
{
int i,j;
for(i=0;i<time;i++)
{
for(j=0;j<500;j++)
{;;}
}
}
具体延迟时间是time值*500*每条指令的运行时间

太夸张了,居然要20秒延时。真的太夸张。20秒何等概念。涉及长时间的系统不如加个时间芯片吧!

按照你的晶振12M给你算的,不知道准不准.你试下。

豪秒延时
void DelayMs(int delayms)
{
int i;
while(delayms--)
{
for(i=0;i<48;i++)
{
_nop_();
}
}
}

秒延时
你要20 秒,参数为20就可以了

void DelaySe(int delayse)
{
int i;
for(i=0;i<delayse;i++)
{
DelayMs(999);
}
}

DELAY20S:
MOV R5,#160
DL1:
MOV R6,#250
DL2:
MOV R7,#248
DJNZ R7,$
DJNZ R6,DL2
DJNZ R5,DL1
RET

用定时器中断就可以了!

DELAY:
MOV R1,#160
LOOP1: MOV R2,#250
LOOP2: MOV R3,#248
DJNZ R3,$
DJNZ R2,LOOP2
DJNZ R1,LOOP1
RET

和上面一样我推荐用定时器中断 !
delay那么就你就不怕跑飞吗!!!
20s你也想的出用delay


74LS240是什么?
是芯片的名称 向EPROM2764写入程序机器码 通过程序固化器将下列程序中对应的机器码,依次写入到EPROM2764的0000H~0015H地址单元中。机器码 地址 程序 ORG 0000H ;表示程序从地址0000H存放 75 90 00 0000H START: MOV P1,#00H 11 17 0003H ACALL DELAY ;延时一段时间,便于观察 74ls240引脚功能...

TLC1543的TLC1543简介及其应用
TLC1543为20脚DIP封装的CMOS 10位开关电容逐次A\/D逼近模数转换器,引脚排列如图1所示。其中A0~A10(1~9、11、12脚)为11个模拟输入端,REF+(14脚,通常为VCC)和REF-(13脚,通常为地)为基准电压正负端,CS(15脚)为片选端,在CS端的一个下降沿变化将复位内部计数器并控制和使能ADDRESS、I\/...

环境经济学中的非使用价值是什么意思?
非使用价值通常也叫做存在价值(有时也称为保存价值或被动使用价值)。它是指人们在知道某种资源的存在(即使他们永远不会使用那种资源)后,对其存在赋予的价值。使用价值,是一切商品都具有的共同属性之一。任何物品要想成为商品都必须具有可供人类使用的价值;反之,毫无使用价值的物品是不会成为商品的。...

...89SDc51单片机控制电阻丝加热和制冷片制冷的程序?最好是PIDg算法或 ...
delay(4); \/*延时80us以完成此次都时序,之后再读下一数据*\/}EA=1;return(value);}\/***复位子程序***\/unsigned char reset(){unsigned char presence;EA=0;DQ=0; \/*拉低DQ总线开始复位*\/delay(30); \/*保持低电平480us*\/DQ=1; \/*释放总线*\/delay(3);presence=DQ; \/*获取应答信号*\/delay(28);...

用单片机对步进电机进行控制
片机一切工作停止,直到下一个中断或硬件复位为止。2 步进电机驱动实现2.1简介 步进电机在单单仅给予电压时,电机是不会动作的,必须由脉冲产生器提供位置(脉波数)、速度的脉冲信号指令,以及驱动器驱动电流流过电机内部线圈、依顺序切换激磁相序的方式才能够让电机运 转。所以欲使步进电机动作的必要系统组成有: (1)脉...

高分求课程设计:利用D\/A芯片实现电机转速控制
电机变速一般都是直流电机,所以电压是改变电机速度的办法,只能一步一步的实验才行,仅仅靠理论是不行的

单片微机的程序设计中子程序是什么
子程序是在主程序之外的一些独立的程序模块,在主程序中通过 call 指令调用 ,在子程序中通过 ret 指令 返回。

80c51编程,用mcs-51指令实现
RET ; 子程序返回指令。此时(SP)→(PC 15-8 ),(SP)- 1→(SP),(SP)→(PC 7-0 ),(SP)- 1→(SP) RETI ; 中断返回指令,除具有RET功能外,还具有恢复中断逻辑的功能,需注意的是,RETI指令不能用RET代替 [4]. 空操作指令(1条) 这条指令将累加器中的内容清0。 NOP ; 这条指令除了使PC加1,消耗...

电压值0-5V,输出是八位二进制,也可以显示成0-255了。问题如下。_百度知 ...
二,在采用延时子程序时,如果显示模块的扫描速度本来就不是很快,此时可能会影响到显示的效果,一般情况下,每秒的扫描次数不应小于50次,否则,数码的显示会出现闪烁的情况。因此,延时子程序的延时时间应该小于20毫秒,如果采用定时器定时的方式,延时时间不影响时钟。如果,设计时采用的是中断的方式来完成有关操作,同样可以...

COSHIP卫星电视接收机
OLF可以接CPU的中断输入,以便当发生不正常情况时,可以启动中断控制子程序,排除故障。一般的,EN脚用于控制高频头电源的开关,因为如果该芯片不工作,则 LNBA 脚不输出任何信号,包括电压,于是,高频头没有供电,而如果该芯片工作,则LNBA脚的输出信号根据其它控制引脚的值而变化,如 VSEL 接“0”电平,ENT接“1”,于是L...

连山区13445506196: 单片机延时子程序 -
帅宏葡萄: 汇编: DELAY: ;误差 0us MOV R6,#0D7H DL0: MOV R5,#2DH DJNZ R5,$ DJNZ R6,DL0 NOP NOP RET C语言:void delay(void) //误差 0us { unsigned char a,b; for(b=215;b>0;b--) for(a=45;a>0;a--); _nop_; //if Keil,require use intrins.h _nop_; //if Keil,require use intrins.h }

连山区13445506196: 89C51单片机1S的延时程序? -
帅宏葡萄: void delayms() // 延时子程序 对应12M晶振 {unsigned int ms=1000;while(ms--) //每一次循环1ms{for(i = 0; i < 120; i++);} }

连山区13445506196: 单片机延时时间程序怎么编程 -
帅宏葡萄: 举一个例子来说明吧.比如你要编一个延时50毫秒的子程序,那么步骤如下:1、查看一下你的硬件环境,比如晶振大小,CPU型号,不用CPU指令的机器周期是不一样的.2、计算延时需要的机器周期.比如采用12M晶振,CPU采用通用8051,...

连山区13445506196: 单片机如何编写延时2min的延时子程序??帮帮忙吧!我是初学者,急需此答案.谢谢了 -
帅宏葡萄: 2min?为什么这几天这么多都在问这么久的延时,不知道你为什么要这么长延时,如果只是单纯的2min延时别的什么都不做的话那一般的延时函数是这样的(单片机晶振12M情况下,12T周期): void Delay_100MS(unsigned int x) {unsigned int a,b;for(a = x; a > 0; a--)for(b = 11000; b > 0;b--); } 你只需要用Delay_MS(1200);就可以,但是这么久的延时是很不科学的,这个思路也很不可取.要2min的时间可以用定时器,这样既准确又不会影响主程序的运行.祝成功~

连山区13445506196: 找一个单片机汇编语言编写的延时1ms的子程序 -
帅宏葡萄: 多简单的小程序呀:TIME1MS: MOV R6, #2 TIME1: ;延时498uS MOV R7, #248 DJNZ R7, $ ;R7的为0时,程序向下运行,否则继续减 ; DJNZ R6, TIME1 ;加上此命令后,每个小周期时间为500uS ;运行两周为1MS,再加上最前面的MOV R6那条指令,就是1.002MS RET此程序实现的是1.002MS的定时,当然这当中不算主程序调用此延时程序时现场保护的时间,即压栈和出栈的时间

连山区13445506196: 新人单片机做时钟时候延时子程序延时方式没懂,求dalao解答,程序如下 -
帅宏葡萄: delay子程序就是让单片机不做什么事情,在等待子程序完成条件.void delay(n) //延时子程序 {while(n--) //这里把传入的参数当作次数来用 { for(i=120;i>0;i--); // 等待i减完 } }

连山区13445506196: 单片机原理与应用 编写延时2min的延时子程序 -
帅宏葡萄: 编个子程序(函数)延时1秒,然后调用它120次.1秒的延时,看你使用的晶振,计算每条指令的时间,反复执行空操作.

连山区13445506196: 单片机200延时子程序 -
帅宏葡萄: DELAY200ms:MOV R7,#4 D1: MOV R6,#116 D0: MOV R5,#214DJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1NOPRETDELAY=((内层循环X2+3)X(中层物环+3)*外层循环+3)

连山区13445506196: 单片机延时程序的延时时间怎么算的? -
帅宏葡萄: 单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期. 扩展资料: 1丶指令周期,是每种运算需要的时间,如加法、逻辑等,是每一步进行这种指令运算需要的时间,是机器周期的整数倍,这种周期不定. 2丶51单片机12M晶振,晶振周期1/12微妙,一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1/12)微妙=1微妙. 3丶1个毫秒延时子程序如下: void delay1ms(uint ms) { uint i,j; for(i=0;i<ms;i++) { for(j=0;j<110;j++); } }

连山区13445506196: 单片机延时程序
帅宏葡萄: 用12MHz的晶振(机器周期12x1/12微秒=1微秒) DELAY:MOV R0,#4 ;机器周=1微秒NOP ;空操作=1微秒DJNZ R0,$ ;原地跳转,运行减一机器周=2微秒x4=8微秒RET ;机器周=2微秒 ;说有时间加起来就=12微秒了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网