aboutsummaryrefslogtreecommitdiffstats
path: root/tests/t_mic51/TAST1.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'tests/t_mic51/TAST1.ASM')
-rw-r--r--tests/t_mic51/TAST1.ASM250
1 files changed, 250 insertions, 0 deletions
diff --git a/tests/t_mic51/TAST1.ASM b/tests/t_mic51/TAST1.ASM
new file mode 100644
index 0000000..0a34ecb
--- /dev/null
+++ b/tests/t_mic51/TAST1.ASM
@@ -0,0 +1,250 @@
+
+; Aufgabe Nr.: Speichermodul fuer uP- Praktikum II
+; Autor: Joerg Vollandt
+; erstellt am : 21.05.1994
+; letzte Aenderung am :
+; Bemerkung : Routinen fuer ASCII- Tastatur
+;
+; Dateiname : tast1.asm
+;
+
+;---------------------------------------------------------------------
+; Definitionen
+
+ SEGMENT DATA
+
+ZEICHEN DB ?
+
+ SEGMENT BITDATA
+
+STROB DB ?
+
+;---------------------------------------------------------------------
+ SEGMENT CODE
+;=====================================================================
+; Funktion : Tastaturinterrupt initialisieren
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+INIT_TASTATUR:
+ Init_Vektor INT0_VEKTOR,TASTATUR_INT
+ SETB IT0
+ CLR IE0
+ SETB EX0
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Interruptroutine fuer Tastatur, setzt bei Tastaturstrob
+; das Bit STROB und schreibt das Zeichen von der Tastatur
+; nach ZEICHEN.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+TASTATUR_INT:
+ MOV ZEICHEN,P1
+ SETB STROB
+ RETI
+
+;---------------------------------------------------------------------
+; Funktion : Klein- in Grossbuchstaben umwandeln.
+; Aufrufparameter : ACC = Zeichen
+; Ruechgabeparameter : ACC = Zeichen
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+ ifdef joerg
+
+UPCASE: PUSH PSW
+ CJNE A,#'a',UPCASE1
+UPCASE1: JC UPCASE2
+ CJNE A,#07bh,UPCASE3
+UPCASE3: JNC UPCASE2
+ CLR C
+ SUBB A,#32
+UPCASE2: POP PSW
+ RET
+
+ endif
+
+;---------------------------------------------------------------------
+; Funktion : Warten bis Tastendruck und Zeichen verwerfen.
+; Aufrufparameter : -
+; Ruechgabeparameter : -
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+WAIT_KEY:
+ ifdef joerg
+
+ JNB STROB,$
+ CLR STROB
+ RET
+
+ elseif
+
+ JNB KB_CHAR_READY,$
+ CLR KB_CHAR_READY
+ RET
+
+ endif
+;---------------------------------------------------------------------
+; Funktion : Warten bis Tastendruck und Zeichen nach ACC von der
+; Tastatur einlesen.
+; Aufrufparameter : -
+; Ruechgabeparameter : ACC = Zeichen
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+CHAR_ACC:
+ ifdef joerg
+
+ JNB STROB,$
+ CLR STROB
+ MOV A,ZEICHEN
+ RET
+
+ elseif
+
+ JNB KB_CHAR_READY,$
+ CLR KB_CHAR_READY
+ MOV A,KB_CHAR_BUFFER
+ RET
+
+ endif
+
+;---------------------------------------------------------------------
+; Funktion : ACC in hex von der Tastatur einlesen.
+; Aufrufparameter : -
+; Ruechgabeparameter : ACC = Wert
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+IN_ACC:
+ PUSH PSW
+ PUSH B
+ LCALL CHAR_ACC
+ LCALL LCD_WRITE_CHAR
+ LCALL UPCASE
+ CJNE A,#'A',IN_ACC1
+IN_ACC1: JC IN_ACC2
+ CJNE A,#'G',IN_ACC3
+IN_ACC3: JNC IN_ACC2
+ CLR C
+ SUBB A,#7
+IN_ACC2: CLR C
+ SUBB A,#30h
+ SWAP A
+ MOV B,A
+ LCALL CHAR_ACC
+ LCALL LCD_WRITE_CHAR
+ LCALL UPCASE
+ CJNE A,#'A',IN_ACC11
+IN_ACC11: JC IN_ACC12
+ CJNE A,#'G',IN_ACC13
+IN_ACC13: JNC IN_ACC12
+ CLR C
+ SUBB A,#7
+IN_ACC12: CLR C
+ SUBB A,#30h
+ ORL A,B
+ POP B
+ POP PSW
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : DPTR in hex von der Tastatur einlesen.
+; Aufrufparameter : -
+; Ruechgabeparameter : DPTR = Wert
+; Veraenderte Register :
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+IN_DPTR:
+ PUSH ACC
+ LCALL IN_ACC
+ MOV DPH,A
+ LCALL IN_ACC
+ MOV DPL,A
+ POP ACC
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : ACC in hex auf LCD ausgeben.
+; Aufrufparameter : ACC = Wert
+; Ruechgabeparameter : -
+; Veraenderte Register : -
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+A_LCD: PUSH ACC
+ PUSH ACC
+ SWAP A
+ ANL A,#00001111B
+ ADD A,#'0'
+ CJNE A,#':',A_LCD1
+A_LCD1: JC A_LCD2
+ ADD A,#7
+A_LCD2: LCALL LCD_WRITE_CHAR
+ POP ACC
+ ANL A,#00001111B
+ ADD A,#'0'
+ CJNE A,#':',A_LCD3
+A_LCD3: JC A_LCD4
+ ADD A,#7
+A_LCD4: LCALL LCD_WRITE_CHAR
+ POP ACC
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : DPTR in hex auf LCD ausgeben.
+; Aufrufparameter : DPTR = Wert
+; Ruechgabeparameter : -
+; Veraenderte Register : -
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+DPTR_LCD:
+ PUSH ACC
+ MOV A,DPH
+ LCALL A_LCD
+ MOV A,DPL
+ LCALL A_LCD
+ POP ACC
+ RET
+
+;---------------------------------------------------------------------
+; Funktion : Setzt LCD- Status neu
+; Aufrufparameter : A = Status
+; Ruechgabeparameter : -
+; Veraenderte Register : -
+; Stackbedarf :
+; Zeitbedarf :
+;
+
+LCD_SET_STATUS:
+
+ RET
+
+;=====================================================================
+; END
+;---------------------------------------------------------------------
+