Advertisement
Guest User

Untitled

a guest
May 21st, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1.  
  2. LJMP START
  3.  
  4. ; LCD registers ----------------------------------
  5. LCDstatus equ 0FF2EH
  6. LCDcontrol equ 0FF2CH
  7. LCDdataWR equ 0FF2DH
  8. LCDdataRD equ 0FF2FH
  9.  
  10. // LCD control bytes ----------------------------------
  11. #define HOME 0x80 // put curcor to second line
  12. #define INITDISP 0x38 // LCD init (8-bit mode)
  13. #define HOM2 0xc0 // put curcor to second line
  14. #define LCDON 0x0e // LCD nn, cursor off, blinking off
  15. #define CLEAR 0x01 // LCD display clear
  16.  
  17. LCDcntrlWR MACRO x
  18. LOCAL loop
  19. loop:
  20. MOV DPTR,#LCDstatus
  21. MOVX A,@DPTR
  22. JB ACC.7,loop ; check if LCD busy
  23.  
  24. MOV DPTR,#LCDcontrol ; write to LCD control
  25. MOV A, x
  26. MOVX @DPTR,A
  27. ENDM
  28.  
  29. LCDcharWR MACRO
  30. LOCAL loop1,loop2
  31. PUSH ACC
  32. loop1: MOV DPTR,#LCDstatus
  33. MOVX A,@DPTR
  34. JB ACC.7,loop1 ; check if LCD busy
  35.  
  36. loop2: MOV DPTR,#LCDdataWR ; write data to LCD
  37. POP ACC
  38. MOVX @DPTR,A
  39.  
  40. ENDM
  41.  
  42. init_LCD MACRO
  43. LCDcntrlWR #INITDISP
  44. LCDcntrlWR #CLEAR
  45. LCDcntrlWR #LCDON
  46. ENDM
  47.  
  48. P5 EQU 0F8H
  49. P7 EQU 0DBH
  50.  
  51. ORG 0100H
  52.  
  53.  
  54.  
  55. NEWLINE:
  56. DEC R6
  57.  
  58. MOV A, R6
  59. JZ CLS
  60. LCDcntrlWR #HOM2
  61. MOV R7, #010H
  62. RET
  63.  
  64. CLS:
  65. LCDcntrlWR #CLEAR
  66. MOV R7, #010H
  67. MOV R6, #02H
  68. RET
  69.  
  70.  
  71.  
  72.  
  73. WAIT:
  74. ; przepisanie 0F do aku w celu uaktywnienia wszystkich wierszy
  75. MOV R0,#0FH
  76. MOV A,R0
  77.  
  78. ; aktywacja przez zapisanie do portu
  79. MOV P5,A
  80.  
  81. ; zczytanie zawartosci portu
  82. MOV A,P7
  83.  
  84. ; sprawdzenie krtory wiersz zostal aktywowany
  85. ANL A,R0
  86.  
  87. ; zapamietanie wartosci aku
  88. MOV R2,A
  89.  
  90. ; usuniecie flagi przeniesien
  91. CLR C
  92. ; odejmowanie z przeniesieniem
  93. SUBB A,R0
  94. ; jezeli ktorykolwiek wiersz jest aktywny to wracamy na gore
  95. ; poniewaz przycisk nie zostal jeszcze puszczony
  96. JNZ WAIT
  97.  
  98. RET
  99.  
  100.  
  101. START:
  102. MOV R7, #010H
  103. MOV R6, #02H
  104. init_LCD
  105.  
  106. ;1
  107. MOV DPTR, #8077H
  108. MOV A,#049
  109. MOVX @DPTR,A
  110.  
  111. ;2
  112. MOV DPTR, #807BH
  113. MOV A, #050
  114. MOVX @DPTR, A
  115.  
  116. ;3
  117. MOV DPTR, #807DH
  118. MOV A, #051
  119. MOVX @DPTR, A
  120.  
  121. ;A
  122. MOV DPTR, #807EH
  123. MOV A, #065
  124. MOVX @DPTR, A
  125.  
  126. ;-------------------------------
  127. ;4
  128. MOV DPTR, #80B7H
  129. MOV A, #052
  130. MOVX @DPTR, A
  131.  
  132. ;5
  133. MOV DPTR, #80BBH
  134. MOV A, #053
  135. MOVX @DPTR, A
  136.  
  137. ;6
  138. MOV DPTR, #80BDH
  139. MOV A, #054
  140. MOVX @DPTR, A
  141.  
  142. ;B
  143. MOV DPTR, #80BEH
  144. MOV A, #066
  145. MOVX @DPTR, A
  146.  
  147. ;-------------------------------
  148. ;7
  149. MOV DPTR, #80D7H
  150. MOV A, #055
  151. MOVX @DPTR, A
  152.  
  153. ;8
  154. MOV DPTR, #80DBH
  155. MOV A, #056
  156. MOVX @DPTR, A
  157.  
  158. ;9
  159. MOV DPTR, #80DDH
  160. MOV A, #057
  161. MOVX @DPTR, A
  162.  
  163. ;C
  164. MOV DPTR, #80DEH
  165. MOV A, #067
  166. MOVX @DPTR, A
  167.  
  168. ;-------------------------------
  169. ;*
  170. MOV DPTR, #80E7H
  171. MOV A, #042
  172. MOVX @DPTR, A
  173.  
  174. ;0
  175. MOV DPTR, #80EBH
  176. MOV A, #048
  177. MOVX @DPTR, A
  178.  
  179. ;#
  180. MOV DPTR, #80EDH
  181. MOV A, #035
  182. MOVX @DPTR, A
  183.  
  184. ;D
  185. MOV DPTR, #80EEH
  186. MOV A, #068
  187. MOVX @DPTR, A
  188.  
  189.  
  190. LJMP W1
  191.  
  192. W1:
  193. MOV R0,#7FH
  194. MOV A,R0
  195. MOV P5,A
  196. MOV A,P7
  197. ANL A,R0
  198.  
  199. MOV R2,A
  200. CLR C
  201. SUBB A,R0
  202. JZ W2
  203. MOV A,R2
  204.  
  205. MOV DPH, #80H
  206. MOV DPL, A
  207. MOVX A, @DPTR
  208. MOV R3, A
  209. CALL WAIT
  210. MOV A, R3
  211. LCDcharWR
  212. MOV R5, A
  213. DEC R7
  214. MOV A, R7
  215. JNZ skipNewLineW1
  216. call NEWLINE
  217. skipNewLineW1:
  218. MOV A,R5
  219. MOV P1,A
  220.  
  221. W2:
  222. MOV R0,#0BFH
  223. MOV A,R0
  224. MOV P5,A
  225. MOV A,P7
  226. ANL A,R0
  227.  
  228. MOV R2,A
  229. CLR C
  230. SUBB A,R0
  231. JZ W3
  232. MOV A,R2
  233.  
  234. MOV DPH, #80H
  235. MOV DPL, A
  236. MOVX A, @DPTR
  237. MOV R3, A
  238. CALL WAIT
  239. MOV A, R3
  240. LCDcharWR
  241. MOV R5, A
  242. DEC R7
  243. MOV A, R7
  244. JNZ skipNewLineW2
  245. call NEWLINE
  246. skipNewLineW2:
  247. MOV A,R5
  248. MOV P1,A
  249.  
  250.  
  251. jmp omin
  252. miedzyladowanie:
  253. jmp W1
  254. omin:
  255.  
  256.  
  257. W3:
  258. MOV R0,#0DFH
  259. MOV A,R0
  260. MOV P5,A
  261. MOV A,P7
  262. ANL A,R0
  263.  
  264. MOV R2,A
  265. CLR C
  266. SUBB A,R0
  267. JZ W4
  268. MOV A,R2
  269.  
  270. MOV DPH, #80H
  271. MOV DPL, A
  272. MOVX A, @DPTR
  273. MOV R3, A
  274. CALL WAIT
  275. MOV A, R3
  276. LCDcharWR
  277. MOV R5, A
  278. DEC R7
  279. MOV A, R7
  280. JNZ skipNewLineW3
  281. call NEWLINE
  282. skipNewLineW3:
  283. MOV A,R5
  284. MOV P1,A
  285.  
  286. W4:
  287. MOV R0,#0EFH
  288. MOV A,R0
  289. MOV P5,A
  290. MOV A,P7
  291. ANL A,R0
  292.  
  293. MOV R2,A
  294. CLR C
  295. SUBB A,R0
  296. JZ miedzyladowanie
  297. MOV A,R2
  298.  
  299. MOV DPH, #80H
  300. MOV DPL, A
  301. MOVX A, @DPTR
  302. MOV R3, A
  303. CALL WAIT
  304. MOV A, R3
  305. LCDcharWR
  306. MOV R5, A
  307. DEC R7
  308. MOV A, R7
  309. JNZ skipNewLineW4
  310. call NEWLINE
  311. skipNewLineW4:
  312. MOV A,R5
  313.  
  314. MOV P1,A
  315. JMP W1
  316.  
  317.  
  318. NOP
  319. NOP
  320. NOP
  321.  
  322. JMP $
  323.  
  324. END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement