Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LCDINI EQU 9CF0h
- TXTPOS EQU 9DA0h
- COUNT EQU 7Eh
- PARITAET EQU 7Fh
- DP2L EQU 7Ch
- ; T1-ISR
- ORG 001Bh
- LJMP TISR
- ; P1.4-ISR
- ORG 004Bh
- LJMP PISR
- ; Serielle Schnittstelle-ISR
- ORG 0023h
- LJMP SISR
- ; P1.0-ISR
- ORG 0053h
- CLR TF2
- SETB ET2
- RETI
- ; P1.1-ISR
- ORG 005Bh
- CLR ET2
- RETI
- ; P1.2-ISR
- ORG 0063h
- LJMP TIDYUP
- ; T2-ISR
- ORG 002Bh
- LJMP T2ISR
- ; Hauptprogramm
- ORG 0400h
- MOV PSW, #00 ; Registerbank 0
- MOV P4, #0FFh
- MOV SP, 7Fh
- SETB P1.0
- SETB P1.1
- SETB P1.2
- SETB P1.3
- SETB P1.4
- SETB P1.7
- MOV R0, #00
- MOV R1, #00
- MOV R2, #00
- MOV R3, #00
- MOV R4, #00
- MOV R5, #00
- MOV COUNT #0Fh ; Counter initialisieren
- MOV PARITAET, #00h ; Paritaetsspeicher initialisieren
- MOV DPTR, #1000h ; LCD initialisieren
- MOV DP2L, #00h
- MOV A, #0Fh
- LCALL LCDINI
- MOV DPTR, #1069h ; auf erste Adresse einstellen
- MOV SCON, #D0h
- CLR BD
- ORL PCON, #80h ; SMOD auf 1
- MOV TMOD, #10h ; Timer 1 als 16-Bit-Zeitgeber initialisieren
- MOV TH1, #0FBh
- MOV TL1, #1Eh
- SETB TR1 ; Timer 1 starten
- MOV IP1, #08h ; Prioriäten
- MOV IP0, #08h
- MOV IEN0, #00
- MOV IEN1, #00
- CLR IEX3
- SETB I3FR
- SETB EX3
- CLR IEX4
- SETB EX4
- CLR IEX5
- SETB EX5
- SETB EAL
- LCALL AUSGAB
- CLR TF1
- SETB ET1
- SETB I2FR ; P1.4 auf pos. Flanke interruptbehandeln
- CLR IEX2
- SETB EX2
- SETB ES
- SETB EAL ; generelle Interrupt-Freigabe
- LOOP: JB P1.3, LOOP
- LCALL AUSGAB
- SJMP LOOP
- LCDAUS: DJNZ COUNT, AUS
- MOV COUNT, #0Fh
- MOV DPTR, #1069h ; wieder auf Zeilenanfang stellen
- AUS: LCALL TXTPOS
- RET
- PISR: PUSH PSW
- PUSH ACC
- SETB TI
- RETI
- TISR: PUSH ACC
- PUSH PSW
- MOV A, TL1
- ADD A, #22h; +4
- MOV TL1, A
- MOV TH1, #0FBh
- POP PSW
- POP ACC
- RETI
- SISR: PUSH PSW
- PUSH ACC
- JNB TI, EMPF
- CLR TI
- MOV A, DP2L
- CJNE A, #0Fh, HIHI
- CLR A
- SJMP BACK
- HIHI: PUSH DPL
- MOV DPL, DP2L
- CLR A
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV C, P
- MOV TB8, C
- JNB P1.7, BUND
- CPL TB8
- BUND: MOV SBUF, A
- INC DP2L
- POP DPL
- SJMP BACK
- EMPF: MOV A, SBUF
- MOV P5, A
- MOV C, RB8
- JNB P, EXOR
- CPL C
- EXOR: JNC GUT
- MOV PARITAET, #01h ; Fehler aufgetreten
- MOV A, #40h
- LCALL LCDAUS
- SJMP BACK
- GUT: MOV PARITAET, #00h ; kein Fehler aufgetreten
- CJNE A, #20h, NEXT ; <20h?
- NEXT: JC BACK
- CJNE A, #80h, NETT; >79h?
- NETT: JNC BACK
- LCALL LCDAUS
- BACK: CLR RI
- POP ACC
- POP PSW
- RETI
- TIDYUP: JB ET2, BACKGO
- MOV R0, #00
- MOV R1, #00
- MOV R2, #00
- MOV R3, #00
- MOV R4, #00
- MOV R5, #00
- BACKGO: RETI
- T2ISR: PUSH ACC
- PUSH PSW
- CLR C
- MOV A, R0
- ADD A, #01
- DA A
- MOV R0, A
- CJNE R0, #00h, RETURN
- MOV A, R1
- ADD A, #01
- DA A
- MOV R1, A
- CJNE R1, #60h, GOONN
- MOV R1, #00
- GOONN: CJNE R1, #00h, RETURN
- MOV A, R2
- ADD A, #01
- DA A
- MOV R2, A
- CJNE R2, #60h, RETURN
- MOV R2, #00
- RETURN: MOV A, R0
- MOV R3, A
- MOV A, R1
- MOV R4, A
- MOV A, R2
- MOV R5, A
- POP PSW
- POP ACC
- RETI
- AUSGAB: PUSH DPH
- PUSH DPL
- PUSH PSW
- PUSH ACC
- MOV DPTR, #1000h
- MOV A, R5
- SWAP A
- LCALL ASCII
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV A, R5
- LCALL ASCII
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV A, #3Ah
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV A, R4
- SWAP A
- LCALL ASCII
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV A, R4
- LCALL ASCII
- CLR EAL
- LCALL TXTPOS
- SEB EAL
- MOV A, #3Ah
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV A, R3
- SWAP A
- LCALL ASCII
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- MOV A, R3
- LCALL ASCII
- CLR EAL
- LCALL TXTPOS
- SETB EAL
- POP ACC
- POP PSW
- POP DPL
- POP DPH
- RET
- ASCII: PUSH PSW
- ANL A, #0Fh
- CJNE A, #0Ah, NEXT
- NXET: JC Ziffr
- ADD A, #0Fh
- Ziffr: ADD A, #30h
- POP PSW
- RET
- END
Add Comment
Please, Sign In to add comment