Guest User

Untitled

a guest
Jun 22nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. LCDINI EQU 9CF0h
  2. TXTPOS EQU 9DA0h
  3. COUNT EQU 7Eh
  4. PARITAET EQU 7Fh
  5. DP2L EQU 7Ch
  6.  
  7. ; T1-ISR
  8. ORG 001Bh
  9. LJMP TISR
  10.  
  11. ; P1.4-ISR
  12. ORG 004Bh
  13. LJMP PISR
  14.  
  15. ; Serielle Schnittstelle-ISR
  16. ORG 0023h
  17. LJMP SISR
  18.  
  19. ; P1.0-ISR
  20. ORG 0053h
  21. CLR TF2
  22. SETB ET2
  23. RETI
  24.  
  25. ; P1.1-ISR
  26. ORG 005Bh
  27. CLR ET2
  28. RETI
  29.  
  30. ; P1.2-ISR
  31. ORG 0063h
  32. LJMP TIDYUP
  33.  
  34. ; T2-ISR
  35. ORG 002Bh
  36. LJMP T2ISR
  37.  
  38.  
  39. ; Hauptprogramm
  40. ORG 0400h
  41. MOV PSW, #00 ; Registerbank 0
  42. MOV P4, #0FFh
  43. MOV SP, 7Fh
  44. SETB P1.0
  45. SETB P1.1
  46. SETB P1.2
  47. SETB P1.3
  48. SETB P1.4
  49. SETB P1.7
  50. MOV R0, #00
  51. MOV R1, #00
  52. MOV R2, #00
  53. MOV R3, #00
  54. MOV R4, #00
  55. MOV R5, #00
  56. MOV COUNT #0Fh ; Counter initialisieren
  57. MOV PARITAET, #00h ; Paritaetsspeicher initialisieren
  58. MOV DPTR, #1000h ; LCD initialisieren
  59. MOV DP2L, #00h
  60. MOV A, #0Fh
  61. LCALL LCDINI
  62. MOV DPTR, #1069h ; auf erste Adresse einstellen
  63. MOV SCON, #D0h
  64. CLR BD
  65. ORL PCON, #80h ; SMOD auf 1
  66. MOV TMOD, #10h ; Timer 1 als 16-Bit-Zeitgeber initialisieren
  67. MOV TH1, #0FBh
  68. MOV TL1, #1Eh
  69. SETB TR1 ; Timer 1 starten
  70. MOV IP1, #08h ; Prioriäten
  71. MOV IP0, #08h
  72. MOV IEN0, #00
  73. MOV IEN1, #00
  74. CLR IEX3
  75. SETB I3FR
  76. SETB EX3
  77. CLR IEX4
  78. SETB EX4
  79. CLR IEX5
  80. SETB EX5
  81. SETB EAL
  82. LCALL AUSGAB
  83. CLR TF1
  84. SETB ET1
  85. SETB I2FR ; P1.4 auf pos. Flanke interruptbehandeln
  86. CLR IEX2
  87. SETB EX2
  88. SETB ES
  89. SETB EAL ; generelle Interrupt-Freigabe
  90.  
  91. LOOP: JB P1.3, LOOP
  92. LCALL AUSGAB
  93. SJMP LOOP
  94.  
  95. LCDAUS: DJNZ COUNT, AUS
  96. MOV COUNT, #0Fh
  97. MOV DPTR, #1069h ; wieder auf Zeilenanfang stellen
  98. AUS: LCALL TXTPOS
  99. RET
  100. PISR: PUSH PSW
  101. PUSH ACC
  102. SETB TI
  103. RETI
  104. TISR: PUSH ACC
  105. PUSH PSW
  106. MOV A, TL1
  107. ADD A, #22h; +4
  108. MOV TL1, A
  109. MOV TH1, #0FBh
  110. POP PSW
  111. POP ACC
  112. RETI
  113. SISR: PUSH PSW
  114. PUSH ACC
  115. JNB TI, EMPF
  116. CLR TI
  117. MOV A, DP2L
  118. CJNE A, #0Fh, HIHI
  119. CLR A
  120. SJMP BACK
  121. HIHI: PUSH DPL
  122. MOV DPL, DP2L
  123. CLR A
  124. CLR EAL
  125. LCALL TXTPOS
  126. SETB EAL
  127. MOV C, P
  128. MOV TB8, C
  129. JNB P1.7, BUND
  130. CPL TB8
  131. BUND: MOV SBUF, A
  132. INC DP2L
  133. POP DPL
  134. SJMP BACK
  135. EMPF: MOV A, SBUF
  136. MOV P5, A
  137. MOV C, RB8
  138. JNB P, EXOR
  139. CPL C
  140. EXOR: JNC GUT
  141. MOV PARITAET, #01h ; Fehler aufgetreten
  142. MOV A, #40h
  143. LCALL LCDAUS
  144. SJMP BACK
  145. GUT: MOV PARITAET, #00h ; kein Fehler aufgetreten
  146. CJNE A, #20h, NEXT ; <20h?
  147. NEXT: JC BACK
  148. CJNE A, #80h, NETT; >79h?
  149. NETT: JNC BACK
  150. LCALL LCDAUS
  151. BACK: CLR RI
  152. POP ACC
  153. POP PSW
  154. RETI
  155. TIDYUP: JB ET2, BACKGO
  156. MOV R0, #00
  157. MOV R1, #00
  158. MOV R2, #00
  159. MOV R3, #00
  160. MOV R4, #00
  161. MOV R5, #00
  162. BACKGO: RETI
  163. T2ISR: PUSH ACC
  164. PUSH PSW
  165. CLR C
  166. MOV A, R0
  167. ADD A, #01
  168. DA A
  169. MOV R0, A
  170. CJNE R0, #00h, RETURN
  171. MOV A, R1
  172. ADD A, #01
  173. DA A
  174. MOV R1, A
  175. CJNE R1, #60h, GOONN
  176. MOV R1, #00
  177. GOONN: CJNE R1, #00h, RETURN
  178. MOV A, R2
  179. ADD A, #01
  180. DA A
  181. MOV R2, A
  182. CJNE R2, #60h, RETURN
  183. MOV R2, #00
  184. RETURN: MOV A, R0
  185. MOV R3, A
  186. MOV A, R1
  187. MOV R4, A
  188. MOV A, R2
  189. MOV R5, A
  190. POP PSW
  191. POP ACC
  192. RETI
  193. AUSGAB: PUSH DPH
  194. PUSH DPL
  195. PUSH PSW
  196. PUSH ACC
  197. MOV DPTR, #1000h
  198. MOV A, R5
  199. SWAP A
  200. LCALL ASCII
  201. CLR EAL
  202. LCALL TXTPOS
  203. SETB EAL
  204. MOV A, R5
  205. LCALL ASCII
  206. CLR EAL
  207. LCALL TXTPOS
  208. SETB EAL
  209. MOV A, #3Ah
  210. CLR EAL
  211. LCALL TXTPOS
  212. SETB EAL
  213. MOV A, R4
  214. SWAP A
  215. LCALL ASCII
  216. CLR EAL
  217. LCALL TXTPOS
  218. SETB EAL
  219. MOV A, R4
  220. LCALL ASCII
  221. CLR EAL
  222. LCALL TXTPOS
  223. SEB EAL
  224. MOV A, #3Ah
  225. CLR EAL
  226. LCALL TXTPOS
  227. SETB EAL
  228. MOV A, R3
  229. SWAP A
  230. LCALL ASCII
  231. CLR EAL
  232. LCALL TXTPOS
  233. SETB EAL
  234. MOV A, R3
  235. LCALL ASCII
  236. CLR EAL
  237. LCALL TXTPOS
  238. SETB EAL
  239. POP ACC
  240. POP PSW
  241. POP DPL
  242. POP DPH
  243. RET
  244. ASCII: PUSH PSW
  245. ANL A, #0Fh
  246. CJNE A, #0Ah, NEXT
  247. NXET: JC Ziffr
  248. ADD A, #0Fh
  249. Ziffr: ADD A, #30h
  250. POP PSW
  251. RET
  252. END
Add Comment
Please, Sign In to add comment