Stap 5: programmering
; P0.0 = M1 VOORWAARTSE RELAY
; P0.1 = M1 OMGEKEERDE RELAY
; P0.2 = M2 VOORWAARTSE RELAY
; P0.3 = M2 OMGEKEERDE RELAY
; P0.4 = M3 VOORWAARTSE RELAY
; P0.5 = M3 OMGEKEERDE RELAY
; P0.6 = M4 VOORWAARTSE RELAY
; P0.7 = M4 OMGEKEERDE RELAY
;
; P0.0 = LCD D0
; P0.0 = LCD D1
; P0.0 = LCD D2
; P0.0 = LCD D3
; P0.0 = LCD D4
; P0.0 = LCD D5
; P0.0 = LCD D6
; P0.0 = LCD D7
;
; P2.0 = FAN
; P2.1 =
; P2.2 = SPELSTRUCTUUR SCHAKELAAR 1
; P2.3 = ONTVANGEN GEGEVENS
; P2.4 = ONTVANGEN GEGEVENS LSB
; P2.5 = ONTVANGEN GEGEVENS LSB + 1
; P2.6 = ONTVANGEN GEGEVENS LSB + 2
; P2.7 = ONTVANGEN GEGEVENS MSB
;
; P3.0 =
; P3.1 =
; P3.2 = LCD-RS
; P3.3 = LCD R/W
; P3.4 = LCD E
; P3.5 =
; P3.6 =
; P3.7 =
; Programma begint hier
ORG 0000H; START
MOV P0, #00 H
MOV P2, #OFOH
SETB P2.3
MOV DPTR, #COMM1; OPDRACHT REGISTER
UPI: CLR; INITIALISEREN DOOR COMM1 STRING
MOVC A,
INC DPTR
CJNE A, #' $', OPDRACHT1
HIER:
MOV, #80 H; STARTADRES VAN LIJN 1
AAAN OPDRACHT
MOV DPTR, #DATA 1; DE GEGEVENS WEERGEVEN
LCALL LINE_DISPLAY_ROLL
HERE1:
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA2
LCALL LINE_DISPLAY
LCALL CHECK_INPUT
CJNE A, #00 H, COMPOST1
MOV P0, #05 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA3
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
OPDRACHT1: AAAN OPDRACHT
AJMP UP1
COMPOST1:
CJNE A, #01 H, ¿NEXT2
MOV P0, #0AH
LCALL VERTRAGING
LCALL VERTRAGING
MOV, ## 0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, # GEGEVENS4
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
¿NEXT2:
CJNE A, #02 H, NEXT3
MOV P0, #09 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #OCOH; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, # GEGEVENS5
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT3:
CJNE A, #03 H, NEXT4
MOV P0, #06 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA6
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT4:
CJNE A, #04 H, NEXT5
MOV P0, #10 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, # GEGEVENS7
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT5:
CJNE A, #05 H, NEXT6
MOV P0, #20 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA8
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT6:
CJNE A, #06 H, NEXT7
MOV P0, #40 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA9
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT7:
CJNE A, #07 H, NEXT8
MOV P0, #80 H
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA10
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT8:
CJNE A, #08 H, NEXT9
SETB P2.0;(CONDITIONAL.. ALS EXTRA FUNCTIES TOEGEVOEGD)
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA11
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXT9:
CJNE A, #09 H, NEXTA
CLR-P2.0; (VOORWAARDELIJKE... ALS EXTRA FUNCTIES TOEGEVOEGD)
LCALL VERTRAGING
LCALL VERTRAGING
MOV, #0C0H; STARTADRES VAN METROLIJN 2
AAAN OPDRACHT
MOV DPTR, #DATA12
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1; LOOP HIER NA DISPLAY
NEXTA:
LJMP HERE1; LOOP HIER NA DISPLAY
LINE_DISPLAY:
CLR A
MOVC A,
INC DPTR
CJNE A, #' $', DISPLAY1
RET
DISPLAY1: AAAN DISPLAY
AJMP LINE_DISPLAY
LINE_DISPLAY_ROLL:
LCALL VERTRAGING
CLR A
MOVC A,
INC DPTR
CJNE A, #' $', DISPLAY11
RET
DISPLAY11: AAAN DISPLAY
AJMP LINE_DISPLAY_ROLL
VERTRAGING: MOV R7, #0FFH
LOOP1: MOV R6, #0FFH
LOOP: DJNZ R6, LUS
DJNZ R7, LOOP1
RET
;************************************************************************************************
; LCD-STROBE OPDRACHT
OPDRACHT: AAAN KLAAR; SCHRIJVEN ALS DISPLAY NIET DRUK IS
MOV P1, A; KARAKTER VAN DE OPDRACHT IN DE P1 POORT
CLR-P3.2; OPDRACHT REGISTER GEKOZEN
CLR-P3.3; SCHRIJVEN INSCHAKELEN
SETB P3.4; STROBE TEKEN WEERGEGEVEN
CLR-P3.4
RET; TERUGKEER
;************************************************************************************************
DISPLAY: AAAN KLAAR
MOV P1, A; NEMEN VAN DE GEGEVENS MOET WORDEN WEERGEGEVEN
SETB P3.2; PS = P3.2 = 1 TOE AAN DE SELECTIEQUERY REGISTER
CLR-P3.3; SCHRIJVEN INSCHAKELEN
SETB P3.4; STROBE TEKEN WEERGEGEVEN
CLR-P3.4
RET; TERUGKEER
;************************************************************************************************
KLAAR: CLR P3.4; STROBE DISPLAY
MOV P1, #0FFH; P1 CONFIGUREREN VOOR INPUT
CLR-P3.2; SELECT-OPDRACHT REGISTER
SETB P3.3; LEZEN INSCHAKELEN
WACHTEN: CLR P3.4; STROBE DISPLAY
SETB P3.4
JB P1.7, WACHTEN; LEES BESCHIKBAARHEIDSSTATUS (BF = 0)
CLR-P3.4; EINDE WEERGAVE STROBE.
RET; TERUGKEER
; ************************************************************************************************
COMM1: DB 3CH, 0EH, 06, 01H, '$'
DATA1: DB 'BEBIL DE-ROBOT, $'
DATA2: DB 'INSTRUCTABLES, $'
DATA3: DB 'FORWARD $'
GEGEVENS4: DB 'ACHTERWAARTS $'
GEGEVENS5: DB 'LINKER $'
DATA6: DB 'JUISTE $'
GEGEVENS7: DB 'CAMERA LINKS $'
DATA8: DB 'CAMERA JUISTE $'
DATA9: DB 'CAMERA VAN $'
DATA10: DB 'CAMERA NAAR BENEDEN$ '
DATA11: DB 'OPTIONELE $'
DATA12: DB 'OPTIONELE $'
CHECK_INPUT:
MOV P2, #0F0H
SETB P2.3
JB P2.3, READ_INPUT
NOP
SJMP CHECK_INPUT
READ_INPUT:
MOV P0, #00 H
LCALL VERTRAGING
MOV, P2
ANL A, #0F0H
A RUILEN
RET
CHECK_KEY_RELEASE:
SETB P2.3
NOP
JB P2.3, CHECK_KEY_RELEASE
SETB P2.3
MOV P0, #00 H
RET