以下8個字節存放8位數碼管的段碼 1. LED_BIT_1 EQU 30H 2. LED_BIT_2 EQU 31H 3. LED_BIT_3 EQU 32H 4. LED_BIT_4 EQU 33H 5. LED_BIT_5 EQU 34H 6. LED_BIT_6 EQU 35H 7. LED_BIT_7 EQU 36H 8. LED_BIT_8 EQU 37H 存放初始密碼 9. WORD_1 EQU 38H 10. WORD_2 EQU 39H 11. WORD_3 EQU 3AH 12. WORD_4 EQU 3BH 13. WORD_5 EQU 3CH 14. WORD_6 EQU 3DH 存放用戶輸入的6位密碼 15. KEY_1 EQU 3EH 16. KEY_2 EQU 3FH 17. KEY_3 EQU 40H 18. KEY_4 EQU 41H 19. KEY_5 EQU 42H 20. KEY_6 EQU 43H ***** 21. CNT_A EQU 44H 22. CNT_B EQU 45H 23. KEY_CNT EQU 46H 已輸出的密碼位數 24. LINE EQU 47H 按鍵行號 25. ROW EQU 48H 按鍵列號 26. VAL EQU 49H 鍵值 ***** 27. ORG 00H 28. SJMP START 29. ORG 0BH 30. LJMP INT_T0 31. START: MOV CNT_A,#00H 32. MOV CNT_B,#00H 33. MOV KEY_CNT,#00H 34. MOV LINE,#00H 35. MOV ROW,#00H 36. MOV VAL,#00H 37. SETB P1.0 38. MOV LED_BIT_1,#00H 39. MOV LED_BIT_2,#00H 40. MOV LED_BIT_3,#00H 41. MOV LED_BIT_4,#00H 42. MOV LED_BIT_5,#00H 43. MOV LED_BIT_6,#00H 44. MOV LED_BIT_7,#79H 45. MOV LED_BIT_8,#73H 46. MOV KEY_1,#00H 47. MOV KEY_2,#00H 48. MOV KEY_3,#00H 49. MOV KEY_4,#00H 50. MOV KEY_5,#00H 51. MOV KEY_6,#00H 52. MOV WORD_1,#6 53. MOV WORD_2,#5 54. MOV WORD_3,#4 55. MOV WORD_4,#3 56. MOV WORD_5,#2 57. MOV WORD_6,#1 58. MOV TMOD,#01H 59. MOV TH0,#(65536-700)/256 60. MOV TL0,#(65536-700)/256 61. MOV IE,#82H 62. A0: LCALL DISP 63. LSCAN: MOV P3,#0F0H 64. L1: JNB P3.0,L2 65. LCALL DLY_S 66. JNB P3.0,L2 67. MOV LINE,#00H 68. LJMP RSCAN 69. L2: JNB P3.1,L3 70. LCALL DLY_S 71. JNB P3.1,L3 72. MOV LINE,#01H 73. LJMP RSCAN 74. L3: JNB P3.2,L4 75. LCALL DLY_S 76. JNB P3.2,L4 77. MOV LINE,#02H 78. LJMP RSCAN 79. L4: JNB P3.3,A0 80. LCALL DLY_S 81. JNB P3.3,A0 82. MOV LINE,#03H 83. RSCAN: MOV P3,#0FH 84. C1: JNB P3.4,C2 85. MOV ROW,#00H 86. LJMP CALCU 87. C2: JNB P3.5,C3 88. MOV ROW,#01H 89. LJMP CALCU 90. C3: JNB P3.6,C1 91. MOV ROW,#02H 92. CALCU: MOV A,LINE 93. MOV B,#03H 94. MUL AB 95. ADD A,ROW 96. MOV VAL,A 97. CJNE A,#0AH,J1 98. MOV R1,KEY_CNT 99. CJNE R1,#00H,J2 100. LCALL ALARM_1 101. LJMP START 102. J2: LCALL SHIFTL 103. DEC KEY_CNT 104. W00: LCALL DISP 105. MOV A,P3 106. CJNE A,#0FH,W01 107. LJMP A0 108. W01: MOV A,P3 109. CJNE A,#0F0H,W02 110. LJMP A0 111. W02: SJMP W00 112. J1: MOV A,VAL 113. CJNE A,#0BH,J3 判斷是否為ENTER鍵 114. MOV R1,KEY_CNT 115. CJNE R1,#06H,J4 116. MOV A,WORD_1 比較密碼 117. CJNE A,3EH,J5 118. MOV A,WORD_2 119. CJNE A,3FH,J5 120. MOV A,WORD_3 121. CJNE A,40H,J5 122. MOV A,WORD_4 123. CJNE A,41H,J5 124. MOV A,WORD_5 125. CJNE A,42H,J5 126. MOV A,WORD_6 127. CJNE A,43H,J5 128. CLR P1.0 129. LCALL DLY_L 130. LJMP FINI 131. J5: LCALL ALARM_2 132. LJMP START 133. J4: LCALL ALARM_1 134. LJMP START 135. J3: INC KEY_CNT 136. MOV A,KEY_CNT 137. CJNE A,#07H,K1 138. LCALL ALARM_1 139. W10: LCALL DISP 140. MOV A,P3 141. CJNE A,#0FH,W11 142. LJMP START 143. W11: MOV A,P3 144. CJNE A,#0F0H,W12 145. LJMP START 146. W12: SJMP W10 147. LJMP START 148. LJMP START 149. K1: LCALL SHIFTL 150. W20: LCALL DISP 151. MOV A,P3 152. CJNE A,#0FH,W21 153. LJMP A0 154. W21: MOV A,P3 155. CJNE A,#0F0H,W22 156. LJMP A0 157. W22: SJMP W20 158. LJMP A0 159. ALARM_1; SETB TR0 160. JB TR0,$ 161. LCALL DLY_L 162. RET 163. INT_T0:CPL P1.7 164. MOV TH0,#100 165. MOV TL0,#253 166. INC CNT_A 167. MOV R1,CNT_A 168. CJNE R1,#30,RETUNE 169. MOV CNT_A,#00H 170. INC CNT_B 171. MOV R1,CNT_B 172. CJNE R1,#20,RETUNE 173. MOV CNT_A,#00H 174. MOV CNT_B,#00H 175. CLR TR0 176. RETUNE:RETI 177. SHIFTL: MOV LED_BIT_6,LED_BIT_5 178. MOV LED_BIT_5,LED_BIT_4 179. MOV LED_BIT_4,LED_BIT_3 180. MOV LED_BIT_2,LED_BIT_1 181. MOV LED_BIT_1,#40H 182. MOV KEY_6,KEY_5 183. MOV KEY_5,KEY_4 184. MOV KEY_4,KEY_3 185. MOV KEY_3,KEY_2 186. MOV KEY_2,KEY_1 187. MOV KEY_1,VAL 188. RET 189. SHIFTL: MOV LED_BIT_1,LED_BIT_2 190. MOV LED_BIT_2,LED_BIT_3 191. MOV LED_BIT_3,LED_BIT_4 192. MOV LED_BIT_4,LED_BIT_5 193. MOV LED_BIT_5,LED_BIT_6 194. MOV LED_BIT_6,#00H 195. MOV KEY_1,KEY_2 196. MOV KEY_2,KEY_3 197. MOV KEY_3,KEY_4 198. MOV KEY_4,KEY_5 199. MOV KEY_5,KEY_6 200. MOV KEY_6,#00H 201. RET 202. DISP:CLR P2.7 203. MOV P0,LED_BIT_8 204. LCALL DLY_S 205. SETB P2.7 206. CLR P2.6 207. MOV P0,LED_BIT_7 208. LCALL DLY_S 209. SETB P2.6 210. CLR P2.5 211. MOV P0,LED_BIT_6 212. LCALL DLY_S 213. SETB P2.5 214. CLR P2.4 215. MOV P0,LED_BIT_5 216. LCALL DLY_S 217. SETB P2.4 218. CLR P2.3 219. MOV P0,LED_BIT_4 220. LCALL DLY_S 221. SETB P2.3 222. CLR P2.2 223. MOV P0,LED_BIT_3 224. LCALL DLY_S 225. SETB P2.2 226. CLR P2.1 227. MOV P0,LED_BIT_2 228. LCALL DLY_S 229. SETB P2.1 230. CLR P2.0 231. MOV P0,LED_BIT_1 232. LCALL DLY_S 233. SETB P2.0 234. RET 235. DLY_S:MOV R6,#10 236. D1:MOV R7,#250 237. DJNZ R7,$ 238. DJNZ R6,D1 239. RET 240. DLY_L:MOV R5,#100 241. D2:MOV R6,#100 242. D3:MOV R7,#248 243. DJNE R7,$ 244. DJNE R6,D3 245. DJNE R5,D2 246. RET 247. FINI:NOP 248. END |