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

標(biāo)題: 單片機(jī)匯編定時(shí)不準(zhǔn) [打印本頁]

作者: qcw729    時(shí)間: 2020-2-20 17:19
標(biāo)題: 單片機(jī)匯編定時(shí)不準(zhǔn)
主要想練習(xí)中斷的使用,但是使用的是否發(fā)現(xiàn)與我預(yù)期的相差很多,一分鐘差了幾秒鐘,不知道什么原因 希望有的大佬給出答案
  1. ORG 000H
  2. MOV R7,#000H;不初始化的時(shí)候,會(huì)亂碼 我也不知道為什么
  3. MOV R1,#000H
  4. MOV R2,#000H
  5. MOV R3,#000H
  6. MOV R4,#000H
  7. MOV R0,#000H
  8. MOV DPTR,#TIME
  9. LJMP MAIN
  10. ORG 01BH;中斷入口
  11. CLR TR1
  12. LJMP SU
  13. MAIN:;主函數(shù)
  14. MOV TMOD,#10H;設(shè)置TMOD
  15. MOV TL1,#0B0H;
  16. MOV TH1,#03CH;
  17. SETB EA
  18. SETB ET1
  19. LOOP: SETB TR1
  20. LOOP1:LCALL DISPLAY
  21. SJMP LOOP1

  22. SU:;中斷后函數(shù)
  23. INC R7;判斷是否夠20次
  24. CJNE R7,#20,LOOP_END;不夠20此直接返回
  25. MOV R7,#00H
  26. INC R4
  27. CJNE R4,#0AH,LOOP_END;判斷是否夠10秒,進(jìn)1
  28. MOV R4,#00H
  29. INC R3
  30. CJNE R3,#0AH,LOOP_END
  31. MOV R3,#00H
  32. INC R2
  33. CJNE R2,#0AH,LOOP_END
  34. MOV R2,#00H
  35. INC R1
  36. CJNE R1,#9,LOOP_END
  37. MOV R1,#00H
  38. LOOP_END:
  39. MOV TL1,#0B0H
  40. MOV TH1,#03CH
  41. SETB TR1
  42. RETI

  43. DISPLAY:;數(shù)碼管顯示
  44. MOV A,R1
  45. MOVC A,@A+DPTR
  46. MOV P2,#0FEH
  47. MOV P0,A
  48. ACALL D10MS
  49. MOV A,R2
  50. MOVC A,@A+DPTR
  51. MOV P2,#0FDH
  52. MOV P0,A
  53. ACALL D10MS
  54. MOV A,R3
  55. MOVC A,@A+DPTR
  56. MOV P2,#0FBH
  57. MOV P0,A
  58. ACALL D10MS
  59. MOV A,R4
  60. MOVC A,@A+DPTR
  61. MOV P2,#0F7H
  62. MOV P0,A
  63. ACALL D10MS
  64. RET

  65. D10MS:;延時(shí)函數(shù)
  66. MOV R5,#10
  67. DY1:
  68. MOV R6,#75
  69. DY2:
  70. DJNZ R6,$
  71. DJNZ R5,DY1
  72. RET
  73. TIME:
  74. DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
  75. END
復(fù)制代碼




作者: xuyaqi    時(shí)間: 2020-2-20 21:28
MOV TL1,#0B0H;
MOV TH1,#03CH;
這兩句是調(diào)整定時(shí)器快慢,
MOV TH1,#03CH;是高8位,
MOV TL1,#0B0H;是低8位。
作者: hantu    時(shí)間: 2020-2-20 21:52
進(jìn)中斷最先就要馬上重裝計(jì)數(shù)器的值,你卻沒這么做
作者: csmyldl    時(shí)間: 2020-2-21 01:04
LOOP: SETB TR1
LOOP1:LCALL DISPLAY
SJMP LOOP1
主程序中不要反復(fù)開啟TR1,中斷程序也不要TR1
中斷處理放在主程序:(下面的程序)
MOV R7,#00H
INC R4
CJNE R4,#0AH,LOOP_END;判斷是否夠10秒,進(jìn)1
MOV R4,#00H
INC R3
CJNE R3,#0AH,LOOP_END
MOV R3,#00H
INC R2
CJNE R2,#0AH,LOOP_END
MOV R2,#00H
INC R1
CJNE R1,#9,LOOP_END
MOV R1,#00H

中斷程序改為:
SU:   MOV  TL0,#0B0H
        MOV  TH0,#03CH
        INC    R7
        MOV   A,#20
        XRL    A,R7
        JNZ    SU1
        MOV  R7,#0
        SETB  FLAG            ;這是1秒的標(biāo)記,在主程序去判斷并處理,處理完后CLR   FLAG
SU1: RETI
改了之后,若還有誤差,把TL0適當(dāng)改大一點(diǎn)點(diǎn),如MOV   TL0,#0B6H

作者: qcw729    時(shí)間: 2020-2-21 15:46
hantu 發(fā)表于 2020-2-20 21:52
進(jìn)中斷最先就要馬上重裝計(jì)數(shù)器的值,你卻沒這么做

謝謝  已經(jīng)解決了 確實(shí)問題太多了
作者: qcw729    時(shí)間: 2020-2-21 15:47
csmyldl 發(fā)表于 2020-2-21 01:04
LOOP: SETB TR1
LOOP1:LCALL DISPLAY
SJMP LOOP1

謝謝 已經(jīng)解決了 確實(shí)問題很大 代碼 都是自己慢慢想出來的




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