Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; Aufgabe Nr.: Speichermodul fuer uP- Praktikum II
  3. ; Autor: Joerg Vollandt
  4. ; erstellt am : 21.05.1994
  5. ; letzte Aenderung am :
  6. ; Bemerkung : Routinen fuer ASCII- Tastatur
  7. ;
  8. ; Dateiname : tast1.asm
  9. ;
  10.  
  11. ;--------------------------------------------------------------------- 
  12. ; Definitionen
  13.  
  14.         SEGMENT DATA
  15.  
  16. ZEICHEN         DB      ?
  17.  
  18.         SEGMENT BITDATA
  19.  
  20. STROB           DB      ?
  21.  
  22. ;---------------------------------------------------------------------
  23.         SEGMENT CODE
  24. ;=====================================================================
  25. ; Funktion : Tastaturinterrupt initialisieren
  26. ; Aufrufparameter : -
  27. ; Ruechgabeparameter : -
  28. ; Veraenderte Register :
  29. ; Stackbedarf :
  30. ; Zeitbedarf :
  31. ;
  32.  
  33. INIT_TASTATUR:
  34.         Init_Vektor INT0_VEKTOR,TASTATUR_INT
  35.         SETB IT0
  36.         CLR IE0
  37.         SETB EX0
  38.         RET
  39.  
  40. ;---------------------------------------------------------------------
  41. ; Funktion : Interruptroutine fuer Tastatur, setzt bei Tastaturstrob
  42. ;            das Bit STROB und schreibt das Zeichen von der Tastatur
  43. ;            nach ZEICHEN.
  44. ; Aufrufparameter : -
  45. ; Ruechgabeparameter : -
  46. ; Veraenderte Register :
  47. ; Stackbedarf :
  48. ; Zeitbedarf :
  49. ;
  50.  
  51. TASTATUR_INT:
  52.         MOV ZEICHEN,P1
  53.         SETB STROB
  54.         RETI
  55.  
  56. ;---------------------------------------------------------------------
  57. ; Funktion : Klein- in Grossbuchstaben umwandeln.
  58. ; Aufrufparameter : ACC = Zeichen
  59. ; Ruechgabeparameter : ACC = Zeichen
  60. ; Veraenderte Register :
  61. ; Stackbedarf :
  62. ; Zeitbedarf :
  63. ;
  64.  
  65.         ifdef joerg
  66.  
  67. UPCASE: PUSH PSW
  68.         CJNE A,#'a',UPCASE1
  69. UPCASE1: JC UPCASE2
  70.         CJNE A,#07bh,UPCASE3
  71. UPCASE3: JNC UPCASE2
  72.         CLR C
  73.         SUBB A,#32
  74. UPCASE2: POP PSW
  75.         RET
  76.  
  77.         endif
  78.  
  79. ;---------------------------------------------------------------------
  80. ; Funktion : Warten bis Tastendruck und Zeichen verwerfen.
  81. ; Aufrufparameter : -
  82. ; Ruechgabeparameter : -
  83. ; Veraenderte Register :
  84. ; Stackbedarf :
  85. ; Zeitbedarf :
  86. ;
  87.  
  88. WAIT_KEY:
  89.         ifdef joerg
  90.  
  91.         JNB STROB,$
  92.         CLR STROB
  93.         RET
  94.  
  95.         elseif
  96.  
  97.         JNB KB_CHAR_READY,$
  98.         CLR KB_CHAR_READY
  99.         RET
  100.  
  101.         endif
  102. ;---------------------------------------------------------------------
  103. ; Funktion : Warten bis Tastendruck und Zeichen nach ACC von der
  104. ;            Tastatur einlesen.
  105. ; Aufrufparameter : -
  106. ; Ruechgabeparameter : ACC = Zeichen
  107. ; Veraenderte Register :
  108. ; Stackbedarf :
  109. ; Zeitbedarf :
  110. ;
  111.  
  112. CHAR_ACC:
  113.         ifdef joerg
  114.  
  115.         JNB STROB,$
  116.         CLR STROB
  117.         MOV A,ZEICHEN
  118.         RET
  119.  
  120.         elseif
  121.  
  122.         JNB KB_CHAR_READY,$
  123.         CLR KB_CHAR_READY
  124.         MOV A,KB_CHAR_BUFFER
  125.         RET
  126.  
  127.         endif
  128.  
  129. ;---------------------------------------------------------------------
  130. ; Funktion : ACC in hex von der Tastatur einlesen.
  131. ; Aufrufparameter : -
  132. ; Ruechgabeparameter : ACC = Wert
  133. ; Veraenderte Register :
  134. ; Stackbedarf :
  135. ; Zeitbedarf :
  136. ;
  137.  
  138. IN_ACC:
  139.         PUSH PSW
  140.         PUSH B
  141.         LCALL CHAR_ACC
  142.         LCALL LCD_WRITE_CHAR
  143.         LCALL UPCASE
  144.         CJNE A,#'A',IN_ACC1
  145. IN_ACC1: JC IN_ACC2
  146.         CJNE A,#'G',IN_ACC3
  147. IN_ACC3: JNC IN_ACC2
  148.         CLR C
  149.         SUBB A,#7
  150. IN_ACC2: CLR C
  151.         SUBB A,#30h
  152.         SWAP A
  153.         MOV B,A
  154.         LCALL CHAR_ACC
  155.         LCALL LCD_WRITE_CHAR
  156.         LCALL UPCASE
  157.         CJNE A,#'A',IN_ACC11
  158. IN_ACC11: JC IN_ACC12
  159.         CJNE A,#'G',IN_ACC13
  160. IN_ACC13: JNC IN_ACC12
  161.         CLR C
  162.         SUBB A,#7
  163. IN_ACC12: CLR C
  164.         SUBB A,#30h
  165.         ORL A,B
  166.         POP B
  167.         POP PSW
  168.         RET
  169.  
  170. ;---------------------------------------------------------------------
  171. ; Funktion : DPTR in hex von der Tastatur einlesen.
  172. ; Aufrufparameter : -
  173. ; Ruechgabeparameter : DPTR = Wert
  174. ; Veraenderte Register :
  175. ; Stackbedarf :
  176. ; Zeitbedarf :
  177. ;
  178.  
  179. IN_DPTR:
  180.         PUSH ACC
  181.         LCALL IN_ACC
  182.         MOV DPH,A
  183.         LCALL IN_ACC
  184.         MOV DPL,A
  185.         POP ACC
  186.         RET
  187.  
  188. ;---------------------------------------------------------------------
  189. ; Funktion : ACC in hex auf LCD ausgeben.
  190. ; Aufrufparameter : ACC = Wert
  191. ; Ruechgabeparameter : -
  192. ; Veraenderte Register : -
  193. ; Stackbedarf :
  194. ; Zeitbedarf :
  195. ;
  196.  
  197. A_LCD:  PUSH ACC
  198.         PUSH ACC
  199.         SWAP A
  200.         ANL A,#00001111B
  201.         ADD A,#'0'
  202.         CJNE A,#':',A_LCD1
  203. A_LCD1: JC A_LCD2
  204.         ADD A,#7
  205. A_LCD2: LCALL LCD_WRITE_CHAR
  206.         POP ACC
  207.         ANL A,#00001111B
  208.         ADD A,#'0'
  209.         CJNE A,#':',A_LCD3
  210. A_LCD3: JC A_LCD4
  211.         ADD A,#7
  212. A_LCD4: LCALL LCD_WRITE_CHAR
  213.         POP ACC
  214.         RET
  215.  
  216. ;---------------------------------------------------------------------
  217. ; Funktion : DPTR in hex auf LCD ausgeben.
  218. ; Aufrufparameter : DPTR = Wert
  219. ; Ruechgabeparameter : -
  220. ; Veraenderte Register : -
  221. ; Stackbedarf :
  222. ; Zeitbedarf :
  223. ;
  224.  
  225. DPTR_LCD:
  226.         PUSH ACC
  227.         MOV A,DPH
  228.         LCALL A_LCD
  229.         MOV A,DPL
  230.         LCALL A_LCD
  231.         POP ACC
  232.         RET
  233.  
  234. ;---------------------------------------------------------------------
  235. ; Funktion : Setzt LCD- Status neu
  236. ; Aufrufparameter : A = Status
  237. ; Ruechgabeparameter : -
  238. ; Veraenderte Register : -
  239. ; Stackbedarf :
  240. ; Zeitbedarf :
  241. ;
  242.  
  243. LCD_SET_STATUS:
  244.  
  245.         RET
  246.  
  247. ;=====================================================================
  248. ;        END
  249. ;---------------------------------------------------------------------
  250.  
  251.