1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      匯編延時(shí)程序

      更新時(shí)間: 2008-04-19 12:51:04來源: 粵嵌教育瀏覽量:1674



      =================================================================
         
       

      Michael的學(xué)術(shù)空間


       

      博主:Andymio

      +


      評(píng)論精確延時(shí)計(jì)算公式:

      延時(shí)時(shí)間=[(2*層循環(huán)+3)*第二層循環(huán)+3]*第三層循環(huán)+5

       

      --------------------------------------------------------------------------------


      ;延時(shí)5秒左右
      DELAY5S:PUSH   04H                
              PUSH   05H            
              PUSH   06H                
              MOV    R4,#50             
      DELAY5S_0:MOV  R5,#200                              
      DELAY5S_1:MOV  R6,#245                              
              DJNZ   R6,$                         
              DJNZ   R5,DELAY5S_1
              DJNZ   R4,DELAY5S_0                         
              POP    06H                  
              POP    05H                  
              POP    04H                  
              RET                                          

       

      --------------------------------------------------------------------------------

      ;513微秒延時(shí)程序
      DELAY:  MOV     R2,#0FEH
      DELAY1: DJNZ    R2,DELAY1
       RET

       

      --------------------------------------------------------------------------------


      ;10毫秒延時(shí)程序
      DL10MS: MOV     R3,#14H
      DL10MS1:LCALL   DELAY
              DJNZ    R3,DL10MS1
              RET

       

      --------------------------------------------------------------------------------


      ;0.1s延時(shí)程序12mhz
      DELAY: MOV R6,#250
      DL1: MOV R7,#200
      DL2: DJNZ R6,DL2
       DJNZ R7,DL1
       RET

       

      --------------------------------------------------------------------------------


      ;延時(shí)1046549微秒(12mhz)
      ;具體的計(jì)算公式是:
      ;((((r7*2+1)+2)*r6+1)+2)*r5+1+4 = ((r7*2+3)*r6+3)

      *r5+5
      DEL : MOV  R5,#08H
      DEL1: MOV  R6,#0FFH
      DEL2: MOV  R7,#0FFH
              DJNZ  R7,$
              DJNZ  R6,DEL2
              DJNZ  R5,DEL1
              RET

       

      --------------------------------------------------------------------------------


      ;1秒延時(shí)子程序是以12MHz晶振
      Delay1S:mov  r1,#50
      del0:  mov r2,#91
      del1:   mov r3,#100 
              djnz r3,$ 
              djnz r2,del1 
              djnz r1,del0
         Ret

       

      --------------------------------------------------------------------------------


      ;1秒延時(shí)子程序是以12MHz晶振為例算指令周期耗時(shí)
      KK: MOV    R5,#10    ;1指令周期1
      K1: MOV    R6,#0FFH    ;1指令周期10
      K2: MOV    R7,#80H    ;1指令周期256*10=2560
      K3: NOP         ;1指令周期

      128*256*10=327680
       DJNZ    R7,K3    ;2指令周期

      2*128*256*10=655360
       DJNZ    R6,K2    ;2指令周期

      2*256*10=5120
       DJNZ    R5,K1    ;2指令周期2*10=20
       RET      
      ;2指令周期21+10+2560+327680+655360+5120+20+2=990753
      ;約等于1秒1秒=1000000微秒

       

      --------------------------------------------------------------------------------

      ;這個(gè)算下來也只有0.998抄
      T_0:  MOV   R7,#10;
      D1:  MOV   R6,#200;
      D2:  MOV   R5,#248;
        DJNZ   R5,$
        DJNZ   R6,D2;
        DJNZ   R7,D1;
        RET

       

      --------------------------------------------------------------------------------


      ;這樣算下來應(yīng)該是1.000011秒
      T_0:  MOV   R7,#10;
      D1:  MOV   R6,#200;
      D2:  NOP
        MOV   R5,#248;
        DJNZ   R5,$
        DJNZ   R6,D2;
        DJNZ   R7,D1;
        RET

       

      --------------------------------------------------------------------------------


      DELAY_2S:   ;10MS(11.0592mhz)
       MOV R3,#200
       JMP DELAY10MS
      DELAY_100MS:    ;100MS(11.0592mhz)
       MOV R3,#10
       JMP DELAY10MS
      DELAY_10MS:
       MOV R3,#1
      DELAY10MS:    ;去抖動(dòng)10MS

       

      --------------------------------------------------------------------------------


      (11.0592mhz)
       MOV R4,#20
      DELAY10MSA:
       MOV R5,#247
       DJNZ R5,$
       DJNZ R4,DELAY10MSA
       DJNZ R3,DELAY10MS
       RET

       

      --------------------------------------------------------------------------------

       
      DELAY_500MS:                    ;500500MS
       MOV R2,#208
       JMP DELAY_MS
      DELAY_175MS:   ;175MS
       MOV R2,#73
       JMP DELAY_MS
      delaY_120MS:   ;120MS
       MOV R2,#50
       JMP DELAY_MS
      delay_60ms:   ;60ms
       MOV R2,#25
       JMP DELAY_MS
      delay_30ms:   ;30ms
       MOV R2,#12
       JMP DELAY_MS
      DELAY_5MS:   ;5MS
       MOV R2,#2
      ;===================================
      DELAY_MS:
       CALL DELAY2400
       DJNZ R2,DELAY_MS
      RET
      ;===================================
      DELAY2400:   ;10x244+4=2447

      /1.024=2390
       MOV  R0,#244  ;1
      DELAY24001:
       MUL AB  ;4
       MUL AB  ;4
       DJNZ R0,DELAY24001 ;2
       RET

       

      --------------------------------------------------------------------------------


      DELAY: ;延時(shí)子程序(1秒)
      MOV R0,#0AH
      DELAY1: MOV R1,#00H
      DELAY2: MOV R2,#0B2H
      DJNZ R2,$
      DJNZ R1,DELAY2
      DJNZ R0,DELAY1
      RET


      MOV R2,#10 ;延時(shí)1秒
      LCALL DELAY
      MOV R2,#50 ;延時(shí)5秒
      LCALL DELAY
      DELAY: ;延時(shí)子程序
      PUSH R2
      PUSH R1
      PUSH R0
      DELAY1: MOV R1,#00H
      DELAY2: MOV R0,#0B2H
      DJNZ R0,$
      DJNZ R1,DELAY2 ;延時(shí) 100 mS
      DJNZ R2,DELAY1
      POP R0
      POP R1
      POP R2
      RET

       

      --------------------------------------------------------------------------------
       1:DEL:   MOV   R7,   #200

                 DEL1:   MOV   R6,   #123

                              NOP

                 DEL2:   DJNZ   R6,   DEL2

                              DJNZ   R7,   DEL1

                              RET

      是50.001ms 算法是:
      0.001ms+200*0.001ms+200*0.001ms+200*123*0.002ms+200*0.002ms

      ;(123*2+4)*200+1

       

      --------------------------------------------------------------------------------


      2: DEL: MOV R7, #200

       DEL1: MOV R6, #123

       DEL2:NOP

            DJNZ R6,DEL2

            DJNZ R7,DEL1

      RET

       

      --------------------------------------------------------------------------------


      D500MS:
      PUSH PSW
      SETB RS0
      MOV R7,#200
      D51: MOV R6,#250
      D52: NOP
      NOP
      NOP
      NOP
      DJNZ R6,D52
      DJNZ R7,D51
      POP PSW
      RET

       

      --------------------------------------------------------------------------------

      DELAY: ;延時(shí)1毫秒
      PUSH PSW
      SETB RS0
      MOV R7,#50
      D1: MOV R6,#10
      D2: DJNZ R6,$
      DJNZ R7,D1
      POP PSW
      RET

       

      --------------------------------------------------------------------------------


        ORG   0
              LJMP    MAIN
                  ORG    000BH
              LJMP    CTC0
         MAIN:  MOV   SP, #50H
                CLR   EA
                MOV   TMOD, #01H
                MOV    TH0,#3CH
                MOV    TL0,#0B0H
                MOV    R4,  #10
                 SETB   ET0
                 SETB   EA
                 SETB   TR0
                  SJMP  $  ;
         CTC0:   MOV  TH0, #3CH
                 MOV  TL0, #0B0H
                 DJNZ  R4, LP
                 CPL   P1.0
                 MOV   R4,  #10
           LP:    RETI
                END

       

      --------------------------------------------------------------------------------


       

       

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 在线不卡的午夜福利 | 亚洲综合在线日韩欧美 | 亚洲性影院在线看 | 精品国产美女福到在线不卡 | 日韩精品一区二区蜜桃 | 中文字幕福利视频 |