首页 > 前端 > 问答 > 汇编程序延时函数是什么,单片机 汇编程序 延时时间计算

汇编程序延时函数是什么,单片机 汇编程序 延时时间计算

来源:整理 时间:2024-08-23 10:25:08 编辑:黑码技术 手机版

本文目录一览

1,单片机 汇编程序 延时时间计算

R2 * (R2-1) * (R2 -2) * (R2-3)
delayxms:mov 52h,#4 ;50h,51h,52h用于延时 50h为参数x 延时1*x msdelaya: mov 51h,#191 nop nop djnz 51h,$ djnz 52h,delaya djnz 50h,delayxms ret ;延时返回 这就是个延迟函数。这个函数的延迟时间不但要看 你这几个值,还跟晶振有关。晶振决定机器周期,这个延迟函数原理是: 先给50h、51h、52h、赋值,然后52h内的值自检,判断是否为零,不为零循环,这是个小循环,51h同样的,为二级循环,50h为三级循环,这样小循环、二级循环的总的机器周期是可以计算出来的,一个机器周期是多长时间由时钟周期决定,这样延迟时间又可以算出来
这个程序,见过。它以 R2 的内容为参数,进行延时。经过实验验证,其延时时间和 R2 的关系,并非正比关系,计算较难。

单片机 汇编程序 延时时间计算

2,求51单片机延时延时1分钟汇编语言程序12Hz

所谓的延时函数 就是做一个死循环 void delay(void)for(i=0;i<20000;i++); //延迟函数,让程序数数,浪费时间。可以通过改变i的值来改变时间。}延迟1分钟 12hz 具体不知道i是多少了 试试60*1000
L1: MOV R7,100 ;1S L2: MOV R6,100 ;1S DJNZ R7,$ ;2S DJNZ R6,L2 ;2S DJNZ R5,L1 ;2S ;其中R5是外面赋值的可控制延迟时间 假设是12MHZ 要延迟1S R5=50 [1+(1+2*100+2)*100+2]*R5近似==1000000us==1S
最好用定时器来做,我的博客上有延时一秒的,你把常数改一下就行了.
原来12mhz的,机器周期是1us, 但是在循环程序,没运行一次空语句需要花2us, 因此原来程序中为 20*20*248*2=198400,大约是200000us,即0.2s..如果变为1mhz后,机器周期是1/12us,没运行一次空语句需要花1/6us, 然后把r3*r4*r5*1/6=200000,把r3、r4、r5取整数值就可以

求51单片机延时延时1分钟汇编语言程序12Hz

3,延时函数的作用是什么

延时的作用就是让数据正确处理。CPU速度来能多快取得I0口状态就多快取,而是CPU程序按指定时间间隔取值。比如CPU速度为1微妙可以处理一条语句,你刚取完当前10口状态,如果没有延时处理,在循环处理过程中立即又去取当前10口状态作为下一个Bit位的数据。两者之间才间隔CPU的1微妙,这样不就出错了吗?因为协议约定为104.166...微妙,所以要得到正确的数据需要让取下一个10状态的处理过程等待104.166...微妙后再开始取值才正确,这时用延时就合适了。扩展资料:延时函数编写分析clock()函数返回程序从开始执行到函数执行时所经过的时间,一般经过 1ms / CLOCK_PER_SEC ,clock()函数的返回值会增加1 。。 CLOCK_PER_SEC 为time.h文件中定义的宏,每个编译器都不一样。。 TC中这样定义: #define CLOCKS_PER_SEC 18.2 VC/BCC中这样定义: #define CLOCKS_PER_SEC 1000.0 现在分析函数的执行过程,函数传过来的是秒数,但是函数需要clock函数来延时,所以需要把秒数转化成 sec*CLOCL_PER_SEC,才能和clock函数返回值作比较。。
延时一般是用来等待外设反应的。cpu速度很快,而外设的速度是千差万别的,所以我们再编写单片机程序时,必须根据外设的速度设置延时,否则外设反应不过来,如打印驱动、语音片驱动等;还有的延时程序时用来做显示驱动的,因为人眼有个视觉暂留,显示闪烁的频率会让人感觉亮度不同。你做多了就会有概念了。祝你早日入门!
延时函数的作用?就是故意磨蹭,故意耽误时间。因为单片机的速度快,有时,外设的速度跟不上,这就需要延时,磨蹭一会,再干活。

延时函数的作用是什么

4,单片机汇编的延时子函数

在晶振为12MHz情况下 DEL:MOV R7,#0FFH ;1us 整个过程只执行1次== 1us DEL1:MOV R6,#0FFH ;1us 执行R7次== R7*1us DEL2:MOV R5,_____ ;1us 执行R6xR7次== R6*R7*1us DEL3:DJNZ R5,DEL3 ;2us 执行R5xR6xR7次== R5*R6*R7*2us DJNZ R6,DEL2 ;2us 执行R6xR7次== R6*R7*2us DJNZ R7,DEL1 ;2us 执行R7次== R7*2us RET ;2us 只执行1次== 2us 延时时间T=1us + R7*1us+ R6*R7*1us + R5*R6*R7*2us + R6*R7*2us + R7*2us +2us = 195843+130050R5 令T=1000000us,即解得近似值R5=6 最后代人得T= 976143us=0.97s
如果你是用12MHZ的晶振 那么就是255*255*x*24*(1/(12*10^6))=1 MOV R7,#0FFH 这句话代表R7可以减255次 24是 DJNZ R5,DEL3这条指令的振荡周期 因为主要就是DJNZ R5,DEL3 在循环所以算他就可以了
用数学的方法:先设求的量为Z,列方程:((Zx2+1+2)x255+1)x12/(12x1000000)=1。好了求解吧!分析:MOV 占一个指令时间,一个指令耗12个机器周期。DJNE占了两个指令时间,晶振频率考试一般是12MHz。答案是:6(计算是6.289,取近似值)
如果用12MHz的晶振,那时钟周期为1/12us,机器周期为12*(1/12)us=1us 而DNJZ是双周期指令,即要2us完成 即1秒钟能完成0.5M条DJNZ指令 于是要填的数为500000/255/255=7.7,即0x08H

5,求解释汇编语言延时程序

需要注意的一点就是DJNZ指令是2周期的,所以你的时间是循环次数乘以2.DELAY:MOV R7,#250DEL1:MOV R6,#100DEL2:MOV R5,#10DJNZ:R5,$;2个机器周期DJNZ:R6,DL2DJNZ R7,DL12*10*100*250=500000us=0.5s以上时间只是大概值,没有考虑其它指令的周期,但影响不大。
原发布者:aaahuang163;*****************************************************************便于初学者,较为精确的延时程序;*****************************************************************;延时10uS;*****************************************************************time10us:movr5,#05h;11usdjnzr5,$ret;*****************************************************************;延时50uS;*****************************************************************time50us:movr5,#19h;51usdjnzr5,$ret;*****************************************************************;延时100uS;*****************************************************************time100us:movr5,#31h;99.6usdjnzr5,$ret;*****************************************************************;延时200uS;*****************************************************************time200us:movr5,#64h
DELAY:MOV R7,#250 第一层循环250次DEL1:MOV R6,#100 第二层循环100次DEL2:MOV R5,#10 第三层循环10次DJNZ:R5,$ 如果R5不等于0,则跳转到本行,也就是空转10次DJNZ:R6,DL2 如果R6不等于0,则跳到DL2行,给R5赋值DJNZ R7,DL1 如果R7不等于0,则跳到DL1行,给R6赋值所以总的空转循环次数是250*100*10=250000次,通过调节R5,R6,R7值来控制延时时间
DELAY:MOV R7,#250 ;这里时间1DEL1:MOV R6,#100 ;这里时间250DEL2:MOV R5,#10 ;这里时间250*100DJNZ:R5,$ ;这里循环次数250*100*10,时间再乘2DJNZ:R6,DL2 ;这里循环次数250*100,时间再乘2DJNZ R7,DL1;这里循环次数250,时间再乘2总时间:1+250+250*100+2*250*100*10+2*250*100+2*250=575751微秒
注意开中断,保存现场,关中断和返回,其他细节你可以问我,或者把题目发给我我帮你看看
文章TAG:汇编汇编程序程序延时汇编程序延时函数是什么汇编程序延时时间计算

最近更新

  • 数据库都有哪些类型产品,常见关系数据库产品有哪些数据库都有哪些类型产品,常见关系数据库产品有哪些

    常见关系数据库产品有哪些2,数据库种类3,请问数据库有哪些种类呢4,数据库有哪些类型5,常用数据库有哪些1,常见关系数据库产品有哪些oracle,Sybase,DB2,SQLserver,MySQLfoxbasemysql这俩可算.....

    问答 日期:2024-08-23

  • 微信小程序上传图片时间间隔微信小程序上传图片时间间隔

    微信Small程序Fragmentation上传Principle微信Small程序Fragmentation上传原理是将一个大文件分成多个文件,肖程序上传图片地址必须是域名。微信肖程序上传请问oppo没有照片怎么解决?微.....

    问答 日期:2024-08-23

  • 怎样查到期刊在哪个数据库,求助怎么查到某杂志是被哪个数据库收录的怎样查到期刊在哪个数据库,求助怎么查到某杂志是被哪个数据库收录的

    求助怎么查到某杂志是被哪个数据库收录的2,论文发表后怎样在网上查询3,如何查找期刊论文1,求助怎么查到某杂志是被哪个数据库收录的去该数据库的网站查询该杂志,看那个数据库有收录那就看.....

    问答 日期:2024-08-23

  • naxicat创建的数据库在哪个文件夹,navicat for mysql 中的表存储在磁盘中的什么位置naxicat创建的数据库在哪个文件夹,navicat for mysql 中的表存储在磁盘中的什么位置

    navicatformysql中的表存储在磁盘中的什么位置2,用navicatformysql新建的数据库怎么找不到啊3,navicat怎么设置备份数据库的路径4,如何打开用navicat建立的SQlite数据库5,如何通过navicat.....

    问答 日期:2024-08-23

  • 单片机2.4g程序,51单片机程序100例单片机2.4g程序,51单片机程序100例

    stm32和普通51单片计算机在程序编程上有什么区别?买个NRF24L012.4G模块,30左右。所以你最好买现成的单片机板,单片如何慢慢改变采集到的数据程序发送出去的方法有:采样数据和过滤处理,单片.....

    问答 日期:2024-08-23

  • 解决win8系统安装工行网银插件问题解决win8系统安装工行网银插件问题

    Win8系统无法进入ICBC网银的解决方案随着Win8系统的逐渐普及和广泛使用,很多用户经常遇到兼容性的困惑;比如你登录某银行网银,网页打不开,给你的生活造成了极大的不便!工行网银Assistantwin.....

    问答 日期:2024-08-23

  • firewall插件firewall插件

    第二,将internet选项连接到局域网,并取消代理服务器上的复选框。运行firewall,cpl查看防火墙是否打开,然后将其关闭,第三,用kappa查病毒,再用QQ医生查,但是插件还是无法安装(soaoffice...由于.....

    问答 日期:2024-08-22

  • 数据库编程的软件有哪些,常用数据库软件有那些数据库编程的软件有哪些,常用数据库软件有那些

    常用数据库软件有那些2,现在数据库编程软件有哪些啊要象C一样可以在里面编程的3,数据库软件最简单的有哪些4,数据库编程1般用甚么软件5,目前最流行最实用的数据库编程软件是什么1,常用数据.....

    问答 日期:2024-08-22