找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4039|回復(fù): 1
收起左側(cè)

51單片機(jī)的流水燈 仿真模型和匯編源碼

[復(fù)制鏈接]
ID:171288 發(fā)表于 2017-3-16 17:48 | 顯示全部樓層 |閱讀模式
基于51單片機(jī)的流水燈模型。具體的代碼和仿真模型在文件里面。
0.png 0.png

  1.   ;P1口流水燈,間隔1秒,定時(shí)器T0方式1實(shí)現(xiàn)定時(shí)20ms,重復(fù)50次,B1E0H

  2. ORG   0000H
  3. LJMP  MAIN

  4. ORG   000BH
  5. LJMP  INTT0

  6. ORG   0100H
  7. MAIN:
  8.        MOV A,#0FEH
  9.        MOV P0,A
  10.        MOV TMOD,#01H
  11.            MOV TH0,#0B1H
  12.            MOV TL0,#0E0H
  13.            MOV R2,#00H
  14.            SETB EA
  15.            SETB ET0
  16.            SETB TR0
  17.            SJMP $
  18. INTT0:
  19.        MOV TH0,#0B1H
  20.            MOV TL0,#0E0H
  21.            INC R2
  22.            CJNE R2,#32H,NEXT
  23.            RL A
  24.            MOV P0,A
  25.            MOV R2,#00H
  26. NEXT:
  27.        RETI
  28.            END
復(fù)制代碼

0.png
下載:
示例-流水燈.rar (66.23 KB, 下載次數(shù): 14)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-3-16 20:04 | 顯示全部樓層
  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 ;開電子鐘
  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)顯示子程序
  35. PP:
  36. MOV 37H,#12 ;P點(diǎn)編碼送寄存器
  37. MOV R0,#30H ;P點(diǎn)編碼送寄存器
  38. MOV R7,#07H
  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 ;沒有鍵按下轉(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 ;鍵值送20H單元保存??
  60. EXIT:RET

  61. KEYS:
  62. MOV P1,#0FFH ;先向P1口寫1
  63. MOV A,P1 ;P1口值送A
  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 ;轉(zhuǎn)運(yùn)行
  76. K1:
  77. CJNE A,#02H,K2
  78. AJMP KEY1 ;轉(zhuǎn)時(shí)調(diào)整
  79. K2:
  80. CJNE A,#04H,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
  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  ;1秒到
  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
  153. ACALL CLR0
  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
  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  ;數(shù)值放入A中等待判斷
  205. RET

  206. ;顯示子程序
  207. DISP:
  208. MOV R1,#30H  ;顯示緩沖存儲(chǔ)單元首地址
  209. MOV R2,#80H  ;從右至左顯示
  210. DISP1:
  211. MOV P2,R2  ;送位控
  212. MOV A,@R1
  213. MOV DPTR,#TAB
  214. MOVC A,@A+DPTR
  215. MOV P0,A  ;送段控
  216. ACALL DL  ;延時(shí)
  217. MOV A,R2  ;???
  218. JB ACC.0,DISP2          ;從右至左8位LED顯示一遍
  219. RR A
  220. INC R1
  221. MOV R2,A
  222. AJMP DISP1
  223. DISP2:RET
  224. TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0CH

  225. ;顯示延時(shí)子程序
  226. DL:
  227. MOV R6,#14H  
  228. DL1:
  229. MOV R7,#19H
  230. DL2:
  231. DJNZ R7,DL2
  232. DJNZ R6,DL1
  233. RET
  234. END

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表