如何延迟8051微控制器的装配?

时间:2015-06-03 01:02:12

标签: 8051

我在计算延误方面遇到了问题。当我为8051微控制器使用1MHz时钟速度时,我希望延迟0.5秒。

我使用proteus进行仿真,使用avr studio进行atmel微控制器的汇编编码。

例如,此代码适用于8MHz时钟微控制器

Delay_15mS:
LDI dly1,  120  ; 
Delay1:
    LDI  dly2, 250  ;
Delay2:
    DEC     dly2 ; 
    NOP  ; 
    BRNE   Delay2  ; 

    DEC   dly1 ;
    BRNE    Delay1  ; 
RET

你能告诉我如何计算延迟时间吗?所以我可以在1 MHz

的情况下延迟0.5秒

谢谢

1 个答案:

答案 0 :(得分:0)

0.5秒是微控制器(甚至是慢速)生命中的永恒。

你是否意识到在这样等待的时候你将无法做任何事情? (称为被动等待)

菲尔·韦特泽尔在评论中给你一个描述中断的帖子的链接。这就是你所需要的。

然而,需要阅读数据表以了解如何配置时钟系统,如何配置定时器,如何设置和写入此定时器的中断......

但是要回答你的问题(如果你的代码片段是正确的(?)): 对于8 MHz系统上的15 ms超时,您将实现每秒120次循环(延迟2)。

所以现在你的系统速度要慢8倍,但你想要等待0.5 / 0.015 = 33.33 ......倍。

所以你要等120/8 * 0.5 / 0.015 = 500 delay1循环

但由于μC是8位,因此不能将这样的值存储在8位寄存器中。

所以我担心你所要求的是不可能的(除非你编写代码来处理16位变量)。您也可以创建一个delay0循环并等待250次delay1循环。

不确定你会得到什么准确性!!