Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- P0 EQU 080H ; TRAFFIC
- P1 EQU 090H ; LCD D0-D7
- P2 EQU 0A0H ; TRAFFIC, RS, RW, EN
- P3 EQU 0B0H
- RS EQU 0A5H ; RS is connected to P2.5
- RW EQU 0A6H ; RW is connected to P2.6
- EN EQU 0A7H ; E is connected to P2.7
- TL0 EQU 08AH
- TH0 EQU 08CH
- TL1 EQU 08BH
- TH1 EQU 08DH
- TCON EQU 088H ; TIMER CONTROL
- ; BIT ADDRESSABLE: X.7 -> X.0
- ; TF1-TR1-TF0-TR0-IE1-IT1-IE0-IT0
- TMOD EQU 089H ; GATE - C/T - M1 - M0 - GATE - C/T - M1 - M0
- ; |<-------T1------->| |<-------T0------->|
- IE EQU 0A8H ; INTERRUPT ENABLE
- ; BIT ADDRESSABLE: X.7 -> X.0
- ; EA-X-X-ES-ET1-EX1-ET0-EX0
- NR EQU 080H ; P0.0
- NY EQU 081H ; P0.1
- NG EQU 082H ; P0.2
- ER EQU 083H ; P0.3
- EY EQU 084H ; P0.4
- EG EQU 085H ; P0.5
- SR EQU 086H ; P0.6
- SY EQU 087H ; P0.7
- SG EQU 0A0H ; P2.0
- WR EQU 0A1H ; P2.1
- WY EQU 0A2H ; P2.2
- WG EQU 0A3H ; P2.3
- ;---------==========----------==========---------=========---------
- ; PROCESSOR INTERRUPT AND RESET VECTORS
- ;---------==========----------==========---------=========---------
- ORG 0000H ; SYSTEM RESET
- LJMP MAIN
- ORG 0003H ; EXTERNAL INTERRUPT 0
- LJMP ISR
- ;---------==========----------==========---------=========---------
- ; MAIN PROGRAM
- ;---------==========----------==========---------=========---------
- ORG 0030H
- MAIN:
- SETB IE.7 ; ENABLE ALL INTERRUPT
- SETB IE.0 ; ENABLE EXTERNAL INTERUPT 0
- SETB TCON.0 ; EDGE TRIGGER FOR INTERRUPT 0
- LCALL LCD_INIT
- LCALL LCD_NAME1
- LCALL T0
- LCALL CLEAR
- LCALL LCD_NAME2
- LCALL T0
- LCALL CLEAR
- LCALL LCD_START
- LCALL T0
- LCALL CLEAR
- LCALL TL
- LCALL CLEAR
- LCALL LCD_END
- LCALL DELAY
- ;---------==========----------==========---------=========---------
- ; INTERRUPT SERVICE ROUTINE FOR PEDESTRIAN
- ;---------==========----------==========---------=========---------
- ISR:
- MOV P0, #00H
- MOV P2, #00H
- SETB NR
- SETB ER
- SETB SR
- SETB WR
- MOV R2, #5
- A1: CLR P2.4
- LCALL T0
- SETB P2.4
- LCALL T0
- DJNZ R2, A1
- RETI
- ;---------==========----------==========---------=========---------
- ; TRAFFIC LIGHTS
- ;---------==========----------==========---------=========---------
- TL:
- MOV P0, #00H
- MOV P2, #010H
- SETB NR
- SETB ER
- SETB SR
- SETB WR
- ACALL DELAY
- CLR NR
- SETB NG
- ACALL DELAY
- ; NORTH TO EAST
- ;--------------
- CLR NG
- SETB NY
- ACALL DELAY
- CLR NY
- SETB NR
- CLR ER
- SETB EG
- ACALL DELAY
- ; EAST TO SOUTH
- ;--------------
- CLR EG
- SETB EY
- ACALL DELAY
- CLR EY
- SETB ER
- CLR SR
- SETB SG
- ACALL DELAY
- ; SOUTH TO WEST
- ;--------------
- CLR SG
- SETB SY
- ACALL DELAY
- CLR SY
- SETB SR
- CLR WR
- SETB WG
- ACALL DELAY
- ; LOOPING BACK
- ;-------------
- CLR WG
- SETB WY
- ACALL DELAY
- CLR WY
- SETB WR
- MOV P0, #0FFH
- MOV P2, #0FFH
- RET
- ;---------==========----------==========---------=========---------
- ; LCD DATA
- ;---------==========----------==========---------=========---------
- LCD_NAME1:
- MOV A, #085H ; FIRST LINE
- ACALL COMMAND
- MOV R2,#6
- MOV DPTR,#NAME01
- BACK1: CLR A
- MOVC A, @A+DPTR
- MOV P1,A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK1
- MOV A, #0C2H ; SECOND LINE
- ACALL COMMAND
- MOV R3,#11
- MOV DPTR,#ID01
- BACK2: CLR A
- MOVC A, @A+DPTR
- MOV P1,A
- ACALL DATAWRT
- INC DPTR
- DJNZ R3, BACK2
- RET
- ;==================================================================
- LCD_NAME2:
- MOV A, #084H ; FIRST LINE
- ACALL COMMAND
- MOV R2,#8
- MOV DPTR,#NAME02
- BACK3: CLR A
- MOVC A, @A+DPTR
- MOV P1,A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK3
- MOV A, #0C2H ; SECOND LINE
- ACALL COMMAND
- MOV R3,#11
- MOV DPTR,#ID02
- BACK4: CLR A
- MOVC A, @A+DPTR
- MOV P1,A
- ACALL DATAWRT
- INC DPTR
- DJNZ R3, BACK4
- RET
- ;==================================================================
- LCD_START:
- MOV A, #084H ; FIRST LINE
- ACALL COMMAND
- MOV R2,#5
- MOV DPTR,#DSTART
- BACK5: CLR A
- MOVC A, @A+DPTR
- MOV P1,A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK5
- RET
- ;==================================================================
- LCD_END:
- MOV A, #085H
- ACALL COMMAND
- MOV R2,#3
- MOV DPTR,#DEND
- BACK7: CLR A
- MOVC A, @A+DPTR
- MOV P1,A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK7
- RET
- ;---------==========----------==========---------=========---------
- ; LCD COMMAND
- ;---------==========----------==========---------=========---------
- ; INITIALIZATION OF LCD
- ;----------------------
- LCD_INIT:
- CLR RS
- CLR RW
- CLR EN
- MOV A, #38H ; INITIALIZE, 2-LINES
- ACALL COMMAND
- MOV A, #0FH ; TURN ON VISIBLE BLINKING-BLOCK CCURSOR
- ACALL COMMAND
- MOV A, #01H ; CLEAR LCD SCREEN
- ACALL COMMAND
- MOV A, #06H ; SHIFT CURSOR RIGHT
- ACALL COMMAND
- RET
- ; COMMAND WRITE ROUTINE
- ;----------------------
- COMMAND:
- MOV P1, A ; MOVE ACC DATA TO PORT
- CLR RS ; RS=0 FOR CMD
- CLR RW ; RW=0 FOR WRITE
- SETB EN ; H->L PULSE ON EN
- ACALL LCD_DELAY
- CLR EN
- RET
- ; DATA WRITE ROUTINE
- ;-------------------
- DATAWRT:
- MOV P1, A ; MOVE ACC DATA TO PORT
- SETB RS ; RS=1 FOR DATA
- CLR RW ; RW=0 FOR WRITE
- SETB EN ; H->L PULSE ON EN
- ACALL LCD_DELAY
- CLR EN
- RET
- ; DISPLAY CLEAR
- ;---------------
- CLEAR:
- ACALL LCD_DELAY
- MOV A, #01H ; CLEAR LCD SCREEN
- ACALL COMMAND
- RET
- ;---------==========----------==========---------=========---------
- ; DELAYS
- ;---------==========----------==========---------=========---------
- ; DELAY 1 SECOND
- ;----------------
- T0: MOV TMOD,#01H ; TIMER-0 MODE-1 (16-BITS)
- MOV R3,#14
- A2: MOV TL0,#08
- MOV TH0,#01
- SETB TCON.4 ; START TIMER-0
- JNB TCON.5,$ ; WAIT FOR TIMER-0 OVERFLOW
- CLR TCON.4 ; STOP TIMER-0
- CLR TCON.5 ; CLEAR TIMER-0 OVERFLOW
- DJNZ R3,A2
- RET
- ; DELAY 2 SECOND
- ;---------------
- DELAY:
- MOV TMOD,#10H ; TIMER-1 MODE-1 (16-BITS)
- MOV R4,#28
- A3: MOV TL1,#08
- MOV TH1,#01
- SETB TCON.6 ; START TIMER-1
- JNB TCON.7,$ ; WAIT FOR TIMER-1 OVERFLOW
- CLR TCON.6 ; STOP TIMER-1
- CLR TCON.7 ; CLEAR TIMER-1 OVERFLOW
- DJNZ R4,A3
- RET
- ; MOV R3,#1AH
- ; J3: MOV R1,#0FFH
- ; J2: MOV R2,#0FFH
- ; J1: NOP
- ; DJNZ R2,J1
- ; DJNZ R1,J2
- ; DJNZ R3,J3
- ; RET
- LCD_DELAY:
- MOV R5, #5
- H1: MOV R6, #50
- H2: MOV R7, #200
- H3: DJNZ R7, H3
- DJNZ R6, H2
- DJNZ R5, H1
- RET
- ;---------==========----------==========---------=========---------
- ;TABLE
- ;---------==========----------==========---------=========---------
- ORG 200H
- NAME01 DB 'SYAHIR'
- ID01 DB '51211110052'
- NAME02 DB 'ISKANDAR'
- ID02 DB '51211110112'
- DSTART DB 'START'
- DCROSS DB 'CROSS'
- DEND DB 'END'
- ;---------==========----------==========---------=========---------
- END
Advertisement
Add Comment
Please, Sign In to add comment