zoukankan      html  css  js  c++  java
  • 软件延时,延时1ms

    软件延时:有误差

    使用多层循环,和利用指令的机器周期,来实现延时

    源代码:

    ORG 0000H
    LJMP MAIN
    ORG 0100H
    
    MAIN:
        MOV A,#12H
        LCALL DELAY  ;调用延时子程序,延时1ms
        SJMP $
    
    DELAY: MOV R0,#10  ;1个时钟周期
    DL2:   MOV R1,#24  ;1个时钟周期
    DL1:   NOP         ;1个时钟周期
           NOP      ;1个时钟周期
           DJNZ R1,DL1 ;2个时钟周期
           DJNZ R0,DL2 ;2个时钟周期
           
           RET         ;2个时钟周期
        
    END

    误差分析:

    延时时间主要和晶振大小和延时程序中的延时次数有关系

    整个延时子程序的耗费的机器周期数为:晶振采用12MHZ,12分频后,所以机器周期为1us

    1+[1+(1+1+2)*24+2]*10+2=993us,误差为:7us

    所以基本上延时了1ms。

    晶振(震荡)频率=1/2状态频率=1/12机器频率

    周期=1/频率

  • 相关阅读:
    54.Spiral Matrix
    53.Maximum Subarray
    基础数据类型包装类
    sqlacodegen逆向数据库
    第四章、常用模块
    第三章、函数编程
    第一章
    第一章 Python基础
    Centos7.0升级python 2.x到3.x
    time
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14958301.html
Copyright © 2011-2022 走看看