导航:首页 > 计算方法 > 单片机延迟10ms计算方法

单片机延迟10ms计算方法

发布时间:2022-07-03 04:12:21

‘壹’ 51单片机,晶振为6M请帮忙写一个10ms的延时程序,能有详细解释的。因为我还不知道这个延时的时间是怎么

延时有很多种方法,有一种是让单片机去做无聊的循环,
还有一种是用定时器。
我本身也是菜鸟所以只能粗略的讲一下。
第一种的算法是
晶振的周期T1=1/f; 这里f=6MHz 所以T1=1/6 us;(微秒)
单片机花12个T1去执行一个指令,
所以一个机器周期等于12个晶振周期,
T2=12*T1=2us
10ms=1000 0us
所以你要得到10ms的延时就要想办法让机器去做5000条“无聊的指令”
所以
DEL: MOV R5,#05H
F1: MOV R6,#05H
F2: MOV R7,#32H
F3: DJNZ R7,F3
DJNZ R6,F2
DJNZ R5,F1
RET
这种方法是用于对时间要求不高的地方,我说的是其思想,程序中可能有错的地方
用定时器的方法我不太会就不误人了 (补充一下就是这个是用汇编写的,你在主程序中用ACALL DEL调用就延时了。

‘贰’ 求助单片机软件延时10ms的程序和计算方法(急)

程序如下.
ORG 0000H
SJMP START
ORG 0030H
START:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #0D8H ;10ms@12MHz
MOV TL0, #0F0H ;65536-10000=D8F0H
SETB TR0 ;启动.

WAIT: ;下面使用查询方式.
JNB TF0, WAIT ;没有溢出就循环等待.
MOV TH0, #0D8H ;到了10ms,重新写入初始值.
MOV TL0, #0F0H ;65536-10000=D8F0H
CLR TF0
;-----------------------------------------------
;在这里编写 每到10ms 应该执行的指令.
CPL P1.0 ;可以使外接的LED闪光.
;-----------------------------------------------
SJMP WAIT ;继续查询.
END

‘叁’ 单片机的延时10ms是多长时间啊

延时多长时间要看你单片机的频率和使用的语言种类,比如同一个延时程序,在8M晶振单片机跑就比在4M的快接近一倍,用汇编写的延时就比用c的要准些,一般都用c写,用不同软件转换相同延时程序时间也不同。由于软件将你编的程序转成汇编交给单片机识别,它所执行的时间为单片机一个周期*程序运行的条数

‘肆’ 谁能帮我解释下这个单片机延时10ms的程序,延时时间是怎么算出来的 12M的晶振

这只是大概十毫秒。根据单片机的晶振频率来算的。比如你用的12M晶振,执行一条指令要三个机器周期,根据你循环了多少次,算出大概延时了多久。

‘伍’ 有关单片机延时程序的计算

这个根据单片机的晶振频率来算的,你先看看晶振周期是多大,然后一个机器周期是多少个晶振,一个机器周期就是一条代码执行的周期
51的指令周期是对晶振12分频
如果晶振是12M
那么执行一条一个机器周期的的指令就是1US
即1S/(12M/12分频)
=1US
一个机器周期是12个时钟周期

‘陆’ 单片机延时程序的计算

本程序的耗时计算如下:
1 + [1 + (1 + 1 + 2) * 249 + 2] * 5 + 2 = 4998 T
如果再算上主程序中的调用指令的2T,总共延时5000T。

如果时钟频率是6MHz,那么正好延时10ms。

‘柒’ pic单片机 实现10ms定时的简单程序

这个可以用几种办法:
1、直接用软件延时,如用以下的DELAY()延时子程序,如要延时5ms,直接调用DELAY(5)就好了,但这种是纯软件的延时。
//======延时(n)ms,在4MHz晶振下!!!
void DELAY(uint n)
{ uint j;
uchar k;
for (j=0;j<n;j++)
for (k=246;k>0;k--) NOP();
}

2、用定时器延时,要通过计算延时的时间来确定延时的常数(分频比和定时器初值)。

‘捌’ 这是单片机的延时程序,晶振是12MHZ,延时10ms。请问是怎么计算的其中,c=50。

不要试图去计算,计算不准确,软件延时本身都不准确,这些都是试验得来的,如果晶振频率不同,可以调整a=130,但想刚好是10ms基本无可能,用汇编语言延时准确一些,但计算也比较麻烦如果要准确延时的话,还要用定时器
假如b=38 时,刚好延时38ms的话,b=50延时不会刚好是50ms
同样a=130 时,刚好延时13ms的话,a=150延时不会刚好是15ms
所以一般是按比例改变a b取值,然后根据仿真结果再去调整,误差不大就可以了
还有unsigned char a, b和unsigned int a, b延时结果是不一样的

‘玖’ 单片机延时时间怎样计算

如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。
如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059
2
mhz、12
mhz或6
mhz晶振。第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1
μs和2
μs,便于精确延时。本程序中假设使用频率为12
mhz的晶振。最长的延时时间可达216=65
536
μs。若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式,则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

‘拾’ 如何利用单片机汇编指令编程实现延时10ms利用汇编指令设计多重循环编程实现20ms延时

这是调用一个延时10毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了

DELAY10MS:
MOV R2,#20
DELAY10MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY10MS1
RET

这是调用一个延时20毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了

DELAY20MS:
MOV R2,#40
DELAY20MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY20MS1
RET

RETRET的作用是子程序返回。调用一个子程序,当单片机执行到RET语句的时候,单片机就会返回到调用的地方并继续向下执行。

下面给你一个例程:

闪烁灯

ORG 00H

AJMP START

ORG 30H

START:

MOV P0,#00H

LCALL DELY;调用延时子程序

MOV P0,#0FFH

LCALL DELY;调用延时子程序

AJMP START

DELY:

MOV R7,#250

DL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DL1

RET

阅读全文

与单片机延迟10ms计算方法相关的资料

热点内容
幼儿贴肚脐贴的正确方法 浏览:47
内开窗安装方法 浏览:565
质性研究主题分析方法 浏览:448
汽车提速异响解决方法 浏览:489
科三有什么方法定好油门 浏览:743
电脑表格打印方法 浏览:454
泡脚片的使用方法 浏览:904
滚动手机屏保怎么设置方法 浏览:898
3d图片黑斑处理方法 浏览:809
应用方法研究 浏览:825
如何分析人物的描写方法 浏览:1000
提高游戏帧数最快的方法手机 浏览:501
乳清蛋白粉使用方法 浏览:402
简单绳子打结的方法 浏览:424
格力微波炉使用方法 浏览:696
老太太突然尿频怎么治疗方法 浏览:400
ph胎盘按摩膏使用方法 浏览:195
如何以实证主义的方法改造自然法 浏览:745
玻璃数码管的测量方法 浏览:760
菜园种植水果的方法 浏览:14