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

標(biāo)題: 基于89C51單片機(jī)的時(shí)鐘匯編程序設(shè)計(jì)顯示出現(xiàn)問(wèn)題 [打印本頁(yè)]

作者: 1054664355    時(shí)間: 2019-12-14 12:22
標(biāo)題: 基于89C51單片機(jī)的時(shí)鐘匯編程序設(shè)計(jì)顯示出現(xiàn)問(wèn)題
這是根某個(gè)共陽(yáng)極數(shù)碼管的程序修改來(lái)的,替換為了陰極數(shù)碼管,對(duì)程序也進(jìn)行了相應(yīng)的改動(dòng),但顯示時(shí)間時(shí)無(wú)法按照應(yīng)有的順序進(jìn)行正常的顯示,求助各位大神,希望能指出被我忽略的錯(cuò)誤和有效的思路。



單片機(jī)源程序如下:
  1. ORG 0000H
  2. AJMP MAIN
  3. ORG 000BH
  4. LJMP INTT0

  5. ORG 0030H
  6. MAIN:
  7. MOV SP,#60H ;確立堆棧區(qū)
  8. MOV PSW,#00H
  9. MOV R0,#20H   ;RAM區(qū)首地址
  10. MOV R7,#5FH ;RAM區(qū)單元個(gè)數(shù)

  11. QL:
  12. MOV @R0,#00H ;RAM清零       
  13. INC R0
  14. DJNZ R7,QL

  15. MOV IP,#02H ;IP初始化,優(yōu)先定時(shí)器0
  16. MOV IE,#82H ;IE初始化
  17. MOV TMOD,#01H ;定時(shí)器0方式1工作
  18. LCALL PP ;調(diào)P.子程序

  19. NEXT:
  20. LCALL KEY ;按鍵檢測(cè)子程序
  21. JB ACC.0,RUNF ;A鍵按下運(yùn)行
  22. LCALL DISP ;調(diào)用顯示子程序
  23. SJMP NEXT

  24. RUNF:
  25. LCALL OUTT ;調(diào)傳送子程序
  26. LCALL TIME ;開(kāi)電子鐘
  27. JK:
  28. LCALL DISP
  29. LCALL KEY
  30. JZ JK
  31. LCALL ANKEY        ;調(diào)用鍵功能子程序
  32. LCALL DISP
  33. SJMP JK

  34. ;P點(diǎn)顯示的8LED段碼初始化子程序
  35. PP:
  36. MOV 37H,#12 ;P點(diǎn)編碼送寄存器,對(duì)應(yīng)最左LED  (共陽(yáng)極,0CH )
  37. MOV R0,#30H ;第8個(gè)LED,最右LED,段碼存儲(chǔ)的地址
  38. MOV R7,#07H         ;第8到第2個(gè)LED,共7個(gè),初始化段碼顯示空白
  39. PPP:
  40. MOV @R0,#10  ;顯示空白
  41. INC R0
  42. DJNZ R7,PPP
  43. RET

  44. ;鍵掃描子程序
  45. KEY:
  46. LCALL KEYS ;調(diào)用鍵值處理子程序
  47. JZ EXIT ;沒(méi)有鍵按下轉(zhuǎn)到返回
  48. LCALL DISP
  49. LCALL DISP ;調(diào)用顯示去抖動(dòng)
  50. LCALL KEYS
  51. JZ EXIT
  52. MOV B,20H ;保存鍵值
  53. KEYSF:
  54. LCALL KEYS
  55. JZ KEYY ;鍵釋放,轉(zhuǎn)到恢復(fù)鍵值
  56. LCALL DISP ;調(diào)顯示子程序延時(shí)
  57. AJMP KEYSF ;等到鍵釋放

  58. KEYY:
  59. MOV A,B ;鍵值送A
  60. EXIT:RET

  61. KEYS:
  62. MOV P1,#0FFH ;先向P1口寫(xiě)1
  63. MOV A,P1 ;P1口值送A         (有按鍵按下,對(duì)應(yīng)0,取反后1)
  64. CPL A
  65. ANL A,#0FH ;保存P1口的低4位
  66. MOV 20H,A ;A值送20H保存
  67. RET

  68. ;鍵功能子程序
  69. ANKEY:
  70. CLR EA ;關(guān)中斷
  71. CHECK:
  72. JB TR0,YXZ ;判斷是否運(yùn)行
  73. K0:
  74. CJNE A,#01H,K1
  75. AJMP RUN ;A鍵按下,恢復(fù)運(yùn)行,轉(zhuǎn)運(yùn)行
  76. K1:
  77. CJNE A,#02H,K2
  78. AJMP KEY1 ;轉(zhuǎn)時(shí)調(diào)整
  79. K2:
  80. CJNE A,#40H,K3
  81. AJMP KEY2 ;轉(zhuǎn)分調(diào)整
  82. K3:
  83. CJNE A,#08H,OUT          ;轉(zhuǎn)
  84. AJMP KEY3 ;轉(zhuǎn)秒調(diào)整

  85. YXZ:
  86. JB ACC.0,STOP        ;A鍵按下,暫停
  87. AJMP OUT

  88. KEY1:
  89. MOV R0,#45H ;時(shí)調(diào)整
  90. LCALL ADD1 ;調(diào)加一子程序
  91. CLR C
  92. CJNE A,#24H,OUTT ;轉(zhuǎn)傳送顯示數(shù)據(jù)子程序
  93. ACALL CLR0 ;調(diào)時(shí)間清理子程序
  94. AJMP OUTT
  95. KEY2:
  96. MOV R0,#43H ;分調(diào)整
  97. LCALL ADD1
  98. CLR C
  99. CJNE A,#60H,OUTT
  100. ACALL CLR0
  101. AJMP OUTT
  102. KEY3:
  103. MOV R0,#41H ;秒調(diào)整
  104. ACALL ADD1
  105. CLR C
  106. CJNE A,#60H,OUTT
  107. ACALL CLR0

  108. ;傳送顯示數(shù)據(jù)子程序
  109. OUTT:
  110. MOV 30H,40H ;秒顯示單元40H-41H
  111. MOV 31H,41H
  112. MOV 32H,#11 ;"-"
  113. MOV 33H,42H ;分顯示單元42H-43H
  114. MOV 34H,43H
  115. MOV 35H,#11 ;"-"
  116. MOV 36H,44H ;時(shí)顯示單元44H-45H               
  117. MOV 37H,45H
  118. RET
  119. STOP:
  120. CLR TR0
  121. RET
  122. RUN:
  123. LCALL TIME ;調(diào)運(yùn)行電子鐘子程序
  124. OUT:
  125. SETB EA ;無(wú)鍵按下或完成功能跳出
  126. RET

  127. ;運(yùn)行電子鐘子程序                                                                       
  128. TIME:
  129. SETB EA
  130. MOV TL0,#0B0H  ;3CB0H
  131. MOV TH0,#3CH
  132. MOV R4,#20  ;50ms,20次循環(huán)
  133. SETB TR0 ;啟動(dòng)定時(shí)器0
  134. RET

  135. ;定時(shí)器0中斷處理子程序
  136. INTT0:
  137. PUSH ACC
  138. PUSH PSW
  139. CLR ET0
  140. CLR TR0                                                                         
  141. MOV TL0,#0B0H  ;重新設(shè)置定時(shí)初值
  142. MOV TH0,#3CH
  143. SETB TR0
  144. DJNZ R4,OUTT0  ;r4-1 != 0 1秒未到,轉(zhuǎn)OUTTO
  145. ADDSS:
  146. MOV R4,#14H  ;20次計(jì)數(shù)
  147. MOV R0,#41H  ;秒十位
  148. ACALL ADD1
  149. CLR C
  150. CJNE A,#60H,ADDMM ;1分到
  151. ADDMM:
  152. JC OUTT0         ;1分,60秒未到
  153. ACALL CLR0         ;1分到,清零
  154. MOV R0,#43H         ;分十位
  155. ACALL ADD1
  156. CLR C
  157. CJNE A,#60H,ADDHH ;1小時(shí)到
  158. ADDHH:
  159. JC OUTT0
  160. ACALL CLR0
  161. MOV R0,#45H          ;時(shí)十位
  162. ACALL ADD1
  163. CLR C
  164. CJNE A,#24H,HOUR ;1天到
  165. HOUR:
  166. JC OUTT0
  167. ACALL CLR0

  168. OUTT0:
  169. MOV 30H,40H ;秒顯示單元40H-41H
  170. MOV 31H,41H
  171. MOV 32H,#11 ;"-"
  172. MOV 33H,42H ;分顯示單元42H-43H
  173. MOV 34H,43H
  174. MOV 35H,#11 ;"-"
  175. MOV 36H,44H ;時(shí)顯示單元44H-45H               
  176. MOV 37H,45H
  177. POP PSW
  178. POP ACC
  179. SETB ET0
  180. RETI

  181. ;時(shí)間清理子程序
  182. CLR0:
  183. CLR A
  184. MOV @R0,A
  185. DEC R0
  186. MOV @R0,A
  187. RET

  188. ;加一子程序
  189. ADD1:
  190. MOV A ,@R0  ;取十位
  191. DEC R0
  192. SWAP A
  193. ORL A,@R0  ;組合十位與個(gè)位          
  194. ADD A,#01H  ;加1
  195. DA A ;十進(jìn)制調(diào)整
  196. MOV R3,A  ;暫存
  197. ANL A,#0FH  ;屏蔽十位
  198. MOV @R0,A  ;放入個(gè)位單元
  199. MOV A,R3  ;取值
  200. INC R0
  201. SWAP A
  202. ANL A,#0FH  ;屏蔽個(gè)位
  203. MOV @R0,A  ;放入十位單元
  204. MOV A,R3  
  205. RET

  206. DISP:
  207. MOV R1,#30H  
  208. MOV R2,#01H
  209. DISP1:
  210. MOV P2,R2
  211. MOV A,@R1
  212. MOV DPTR,#TAB
  213. MOVC A,@A+DPTR
  214. MOV P0,A
  215. CPL P0.0
  216. CPL P0.1
  217. CPL P0.2
  218. CPL P0.3
  219. CPL P0.4
  220. CPL P0.5
  221. CPL P0.6
  222. CPL P0.7
  223. ACALL DL  
  224. MOV A,R2
  225. JB ACC.7,DISP2          
  226. RL A                       
  227. INC R1
  228. MOV R2,A
  229. AJMP DISP1
  230. DISP2:RET
  231. TAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H,0FFH,0BFH,0CH         


  232. DL:
  233. MOV R6,#14H  
  234. DL1:
  235. MOV R7,#19H
  236. DL2:
  237. DJNZ R7,DL2
  238. DJNZ R6,DL1
  239. RET
  240. END
復(fù)制代碼

全部資料51hei下載地址:
shizhong.rar (30.47 KB, 下載次數(shù): 8)


作者: csmyldl    時(shí)間: 2019-12-14 16:38
MOV P0,A
CPL P0.0
CPL P0.1
CPL P0.2
CPL P0.3
CPL P0.4
CPL P0.5
CPL P0.6
CPL P0.7
顯示程序中這一段完全沒(méi)必要這么寫(xiě)
只需要把數(shù)據(jù)表中的數(shù)據(jù)對(duì)應(yīng)取反就變?yōu)榱斯碴帢O
TAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H,0FFH,0BFH,0CH
另外,位碼放在R2中,共陰是MOV R2,#01H,換共陰就是MOV R2,#0FEH
所以,如果共陽(yáng)是正常顯示的話,只要改數(shù)據(jù)表和R2的值就變?yōu)榱斯碴?




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