亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機匯編定時不準 [打印本頁]

作者: qcw729    時間: 2020-2-20 17:19
標題: 單片機匯編定時不準
主要想練習中斷的使用,但是使用的是否發現與我預期的相差很多,一分鐘差了幾秒鐘,不知道什么原因 希望有的大佬給出答案
  1. ORG 000H
  2. MOV R7,#000H;不初始化的時候,會亂碼 我也不知道為什么
  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:;主函數
  14. MOV TMOD,#10H;設置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:;中斷后函數
  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秒,進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:;數碼管顯示
  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:;延時函數
  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
復制代碼




作者: xuyaqi    時間: 2020-2-20 21:28
MOV TL1,#0B0H;
MOV TH1,#03CH;
這兩句是調整定時器快慢,
MOV TH1,#03CH;是高8位,
MOV TL1,#0B0H;是低8位。
作者: hantu    時間: 2020-2-20 21:52
進中斷最先就要馬上重裝計數器的值,你卻沒這么做
作者: csmyldl    時間: 2020-2-21 01:04
LOOP: SETB TR1
LOOP1:LCALL DISPLAY
SJMP LOOP1
主程序中不要反復開啟TR1,中斷程序也不要TR1
中斷處理放在主程序:(下面的程序)
MOV R7,#00H
INC R4
CJNE R4,#0AH,LOOP_END;判斷是否夠10秒,進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秒的標記,在主程序去判斷并處理,處理完后CLR   FLAG
SU1: RETI
改了之后,若還有誤差,把TL0適當改大一點點,如MOV   TL0,#0B6H

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

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

謝謝 已經解決了 確實問題很大 代碼 都是自己慢慢想出來的




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