; Parkhaus: Das Parkhaus hat 31 Plätze. ; Die freien Plätze sollen auf der 2-stelligen Anzeige am Parkhaus ; angezeigt werden. ; Einfahrende Autos werden über INT0 erfasst, ausfahrende über INT1. ; Modell: Parkhaus an Port-1 cseg at 0 LJMP start ; Sprung zur Initialisierung der Interrupt-Register org 0003 ; Interrupt-Vektor-0 LCALL ein RETI org 0013h ; Interrupt-Vektor-1 LCALL aus RETI org 0100h start: ; Initialisierung der Interrupt-Register SETB IT0 ; Flankensteuerung für INT0 SETB EX0 ; Freigabe für INT0 SETB IT1 ; Flankensteuerung für INT1 SETB EX1 ; Freigabe für INT1 SETB EA ; allgemeine Interrupt-Freigabe MOV R0, #1Fh ; Startwert > 31 freie Plätze, Ampel=rot, Schranken=zu schleife: ; Haupt-Programm MOV P1, R0 SJMP schleife ein: ; Auto fährt hinein MOV A, R0 ANL A,#1Fh ; voll? JZ voll SUBB A, #01h ; Zählerstand erniedrigen SETB P1.5 ; Schranke=auf SETB P1.7 ; Ampel=grün CALL pause MOV R0, A voll: RETI aus: ; Auto fährt heraus MOV A, R0 CJNE A, #1Fh, ok ; leer? SJMP leer ok: ADD A, #01h ; Zählerstand erhöhen SETB P1.6 CALL pause MOV R0, A leer: RETI pause: MOV R1, #0Fh nochmal: DJNZ R1, nochmal RET ende: JMP ende end