欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 煩請詳解一下單片機匯編延時程序的計算方法? [打印本頁]

作者: bokubo    時間: 2020-6-28 02:26
標題: 煩請詳解一下單片機匯編延時程序的計算方法?
ORG   0000H           ;
LJMP  MAIN            ;轉主程序
ORG   0003H           ;INT0中斷服務入口地址
LJMP  L1              ;轉INT0高優先級中斷服務程序
ORG   0013H           ;INT1中斷服務入口地址
LJMP  L2              ;轉INT1高優先級中斷服務程序
ORG   0100H           ;設置主程序起始地址
MAIN: SETB EA         ;CPU開放中斷
          SETB EX0        ;允許外部中斷0中斷
          SETB EX1        ;允許外部中斷1中斷
          SETB PX0        ;外部中斷0設置為高優先級
          SETB IT0        ;設置外部中斷0為跳沿觸發方式
          SETB IT1        ;設置外部中斷1為跳沿觸發方式
          MOV SP,#70H     ;設置堆棧為70H
          MOV A,#0FFH     ;將0FFH賦值給累加器
  FR: MOV P1,A        ;將累加器的值給P1
          ACALL DELAY1S   ;調用1秒延時子程序
          CPL A           ;對累加器值取反
          SJMP FR         ;循環
  L1: PUSH ACC        ;將累加器的值暫時存于堆棧
      MOV A,#80H      ;將80H賦值給A
      MOV P1,A        ;將累加器的值給P1
          ACALL DELAY1S   ;調用1秒延時子程序
LOOP1:RR A            ;累加器循環右移
          MOV P1,A        ;將累加器的值給P1
          ACALL DELAY1S   ;調用1秒延時子程序
          JB P1.0,N2      ;P1.0判斷為1則跳轉N2
          AJMP LOOP1      ;循環
  L2: PUSH ACC        ;將累加器的值暫時存于堆棧
      MOV A,#7FH      ;將7FH賦值給A
          MOV P1,A        ;將累加器的值給P1
          ACALL DELAY1S   ;調用1秒延時子程序
LOOP2:RR A            ;累加器循環右移
          MOV P1,A        ;將累加器的值給P1
          ACALL DELAY1S   ;調用1秒延時子程序
          JNB P1.0,N2     ;P1.0判斷不為1則跳轉N2
          AJMP LOOP2      ;循環
   N2:POP ACC         ;從堆棧取出累加器的值
      RETI            ;中斷返回
DELAY1S:MOV R5,#10    ;1秒延時子程序
DELAY0 :MOV R6,#200   
DELAY1 :MOV R7,#123                           
DELAY2:DJNZ R7,DELAY2
       DJNZ R6,DELAY1
           DJNZ R5,DELAY0
           RET                          
          END





以上程序全文,想知道最后的一秒延時子程序是怎么實現的,那個延時一秒的計算是怎么算出來的


作者: hsl32    時間: 2020-6-28 08:18
這個是精確補償的吧。以前我都是算個大概:(DJNZ R7,DELAY2)2個機器周期 x 123 x 200 x 10 =1000000us這里應該是6MHz的晶振,一個機器周期是2us。精確計算,要把每條指令所用的時間也要算進去。
作者: bokubo    時間: 2020-6-28 11:45
hsl32 發表于 2020-6-28 08:18
這個是精確補償的吧。以前我都是算個大概:(DJNZ R7,DELAY2)2個機器周期 x 123 x 200 x 10 =1000000us這 ...

謝謝,我明白了




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1