编码程序的一种变式。
CPU在执行语句的时候也是需要耗时的,只是CPU运行速度太快,我们没办法看清楚,所以如果CPU执行语句越多,所需要的时间就越多,根据这个原理,就可以通过让CPU随便执行语句,起到延时的效果,这被称为“软件延时”,CPU执行一条指令耗时近似1us,就可以通过这种办法唤凳加上循环就可以实现延时效果。
程序在不同主频下延时不一样,但这里面一谨段定是个比例关系。打个比方,你的代码是在和晌旅主频为1GHz下的延时,这个参数你延时是5S。但换到2GHZ下,程序不改动的话,延时是2.5秒。
在汇编代码中获取到当前的主频,那么就可以做成自适应的效果,自动按比例改变延时程序内部的计数量。
若是高级语言,比如VS,就能用GetTickCount()来精确延时5s了。其实只要能读出当前时间的精确值,比如直接读BIOS时间,那么就能实现比较精确的5s延时了。不同的CPU在读精确时间的函数上是一样的。
用API函数延时。win32汇编是指在某环境下汇编编携闹译产生的程序,win32汇编延时可以用API函数延时。Win32是指Microsoft Windows *** 作系统的32位燃隐漏环境,与Win64 都为Windows常见环境,Win32 *** 作系统可以皮烂一边听音乐,一边编程,一边打印文档,是一个典型的多线程 *** 作系统。DEL1S:MOV R7,#10\x0d\x0aD1: MOV R6,#200\x0d\x0aD2: MOV R5,#250\x0d\x0a DJNZ R5,$\x0d\x0a DJNZ R6,D2\x0d\x0a DJNZ R7,D1\x0d\x0a RET\x0d\x0a\x0d\x0a说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等\x0d\x0a 2、这个程前梁序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改慧改运成歼差:MOV R7,#5欢迎分享,转载请注明来源:内存溢出
评论列表(0条)