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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1828|回復: 5
打印 上一主題 下一主題
收起左側

單片機匯編定時不準

[復制鏈接]
跳轉到指定樓層
樓主
ID:521383 發表于 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
復制代碼



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:94031 發表于 2020-2-20 21:28 | 只看該作者
MOV TL1,#0B0H;
MOV TH1,#03CH;
這兩句是調整定時器快慢,
MOV TH1,#03CH;是高8位,
MOV TL1,#0B0H;是低8位。
回復

使用道具 舉報

板凳
ID:462827 發表于 2020-2-20 21:52 | 只看該作者
進中斷最先就要馬上重裝計數器的值,你卻沒這么做
回復

使用道具 舉報

地板
ID:235200 發表于 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
回復

使用道具 舉報

5#
ID:521383 發表于 2020-2-21 15:46 | 只看該作者
hantu 發表于 2020-2-20 21:52
進中斷最先就要馬上重裝計數器的值,你卻沒這么做

謝謝  已經解決了 確實問題太多了
回復

使用道具 舉報

6#
ID:521383 發表于 2020-2-21 15:47 | 只看該作者
csmyldl 發表于 2020-2-21 01:04
LOOP: SETB TR1
LOOP1:LCALL DISPLAY
SJMP LOOP1

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表