历史上的今天
今天是:2025年01月27日(星期一)
2018年01月27日 | EM78系列单片机--延迟子程序的编写
2018-01-27 来源:eefocus
在許多程序设计的場合,我們時常会利用到时间延迟子程序,接下来就介紹一个可以控制延迟时间的延迟子程序。
开下面是利用发工具E8-ICE来演示的一个精确的控制延迟时间的程序,选择使用石英振荡器,可以精确的算准延迟时间,时间可以到nanosecond(十亿分之一秒),很神奇。
LP_CNT0 == 0X20 ;定义。
LP_CNT1 == 0X21
MOV A, @2 ;A = 2。
MOV LP_CNT0, A ;设定延迟寄存器0(LP_CNT0)=2
CALL P0_DLY ;呼叫时间延迟子程序。
P0_DLY:
NOP ;调节延迟时间。
MOV A, @200 ;设定 A = 200。
MOV LP_CNT1, A ;设定寄存器LP_CNT1 = 200。
P0_LP:
NOP ;调节延迟时间。
NOP ;调节延迟时间。
NOP ;调节延迟时间。
DJZ LP_CNT1 ;递減LP_CNT1,为0就跳过下一行
JMP P0_LP ;循环。
DJZ LP_CNT0 ;递減LP_CNT0,为0就跳过下一行
JMP P0_DLY ;循环。
RET ;返回主程序。
假设用户所使用的开发工具是E8-ICE,而且所采用的振荡器为石英振荡(4M Hz),並选择指令执行周期为1 Cycle, 2 CLOCk。这時每执行一个指令的时间为0.5 uS.
用户可以看出在程序中用了两个寄存器来计数(LP_CNT0、LPCNT1),另外也使用了两个循环(P0_DLY、P0_LP),其中在P0_LP中有5个指令,所以在P0_LP这个循环中,执行了有1000个指令。
5X 200= 1000 P0_LP循环总共执行指令数目。
5 + 1000 = 1005 P0_DLY循环总共执行指令数目。
1005 X 2 = 2010
2010 + 1 + 1 = 2012 延迟程序总共执行指令数目
在整个P0_DLY循环中就有2012个指令,每个指令的执行时间为0.5 us。
2012 (instructions) x 0.5 (us/instruction) = 1.006 ms
所以用户可以精确的计算出延迟的时间,用户可以在LP_CNT0设定不同的值,如此可以有各种不同的延迟时间。
l 例:设计一个延迟时间为2ms的程序。
只要在上述程序中在呼叫P0_DEL延迟子程序之前,將LP_CNT0设成4就可以了。
MOV A, @4
MOV LP_CNT0, A
CALL P0_DLY
其余不变。
1005 X 4 = 4020。
4020 + 1 + 1 = 4022。
4022 (instructions) X 0.5 (us) = 2.011 ms
史海拾趣
|
入口: DrvEnableDriver [code] DrvEnableDriver( ULONG iEngineVersion, ULONG cj, DRVENABLEDATA *pdrvenabled ...… 查看全部问答> |
|
大家好,请教一个问题 目前在公司的OS上开发USB Mass storage Device驱动 ,连上PC后能变成一个优盘。 现在的软件平台是ThreadX的,硬件接口是USB1.1的,目前ThreadX上面没有挂文件系统,想把SPI Flash上某个区域做成一个分区,然后USB Mass st ...… 查看全部问答> |
|
问个困扰了我很久的问题: Uart_Printf这个函数 我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C 、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添 ...… 查看全部问答> |
|
果断回家了~~呵呵,好久没有来51单片机这个版本了,来了很扎眼的还是那些所谓的毕业设计,哎~~~~~虽然说提供这些东西大部分是出于好意吧,但每次来都是这些东西排在最前面(排在前面的总是各种课件),想当年我的问题就没人回答~~~不过现在好了,自 ...… 查看全部问答> |
|
POWER设计软件, 一打开, 就能看到, 可以添加输入和输出, 对于多输入和多输出, 有很好的设计安排, 添加电源后, 可以看见两个输入的选择, 在这里, 我设计成12V和5V的输入, 而输出是2.7V的0.5A, 主要想应用在汽车电子转换上, 在选择提交项目要求后, ...… 查看全部问答> |
|
Open1081 开发板试玩了一段时间了. 感觉Open1081 是一个资源丰富.扩展能力极好的开发板. 我比较喜欢它以下几点: -CPU强大. 几乎可以满足绝大多数的嵌入式应用 -板上引出丰富的IO.可以自由 ...… 查看全部问答> |




