Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- P0 EQU 080H
- P1 EQU 090H
- P2 EQU 0A0H
- P3 EQU 0B0H
- TL0 EQU 08AH
- TH0 EQU 08CH
- TL1 EQU 08BH
- TH1 EQU 08DH
- TCON EQU 088H ;CONTROL OF TIMER
- TMOD EQU 089H
- IE EQU 0A8H ;ENABLE INTERRUPT
- ;xxxxxxxxxXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxx
- ORG 0000H ;RESET
- LJMP MAIN
- ORG 0003H ;EXTERNAL 0
- LJMP ISR
- ;xxxxxxxxxxxXXXXXXXXXXXXXXXXXXxxxxxxxxxxx
- ORG 0030H
- MAIN:
- SETB IE.7 ;ENABLE ALL INTERRUPT
- SETB IE.0 ;ENABLE EXTERNAL INTERRUPT 0
- SETB TCON.0 ;EDGE TRIGGER FOR INTERRUPT 0
- LCALL INITIAL
- LCALL LCD
- LCALL T0
- LCALL CLEAR
- LCALL LCD1
- LCALL T0
- LCALL CLEAR
- LCALL LCD_GREETING
- LCALL CLEAR
- LCALL T0
- LCALL LCD_POGRESS
- LCALL CLEAR
- LCALL T0
- LCALL TRAFFIC_LIGHT
- LCALL CLEAR
- ;xxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXXXXXXXxxx
- ;INTRRUPT SERVICE SUBROUTINE
- ISR:
- MOV P0,#0FFH
- MOV P2,#11110000B
- CLR P0.0
- CLR P0.3
- CLR P0.6
- CLR P2.5
- MOV R2,#5
- A1: CLR P2.3
- LCALL T0
- SETB P2.3
- LCALL T0
- DJNZ R2,A1
- RETI
- ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXxxxxxxxxxx
- TRAFFIC_LIGHT:
- MOV P0, #00H
- MOV P2, #010H
- HERE1: MOV P0,#0F6H ;RED STRAIGHT&TURN LEFT
- MOV P2,#0CFH ;RED TL2,GREEN TL3
- ACALL DELAY
- MOV P0,#076H ;RED STRAIGHT&TURN LEFT
- MOV P2,#0DFH ;RED TL2,YELLOW TL3
- ACALL DELAY
- MOV P0,#09BH ;GREEN STRAIGHT&TURN LEFT
- MOV P2,#0DFH ;RED TL2,RED TL3
- ACALL DELAY
- MOV P0,#0ABH ;GREEN STRAIGHT, YELLOW LEFT
- MOV P2,#0DFH ;RED TL2, RED TL3
- ACALL DELAY
- MOV P0,#0B3H ;GREEN STRAIGHT. RED LEFT
- MOV P2,#07FH ;GREEN TL2, RED TL3
- ACALL DELAY
- MOV P0,#0B5H ;YELLOW STRAIGHT, RED LEFT
- MOV P2,#0BFH ;YELLOW TL2, RED TL3
- ACALL DELAY
- MOV P0, #0FFH
- MOV P2, #0FFH
- SJMP HERE1
- RET
- ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxx
- LCD: ;NAME AND ID
- MOV A, #38H ;INITIALIZE COMMAND
- ACALL COMMAND
- MOV A, #0EH
- ACALL COMMAND
- MOV A, #01H
- ACALL COMMAND
- MOV A, #06H
- ACALL COMMAND
- MOV A,#080H ;LHS START, FIRST LINE
- ACALL COMMAND
- MOV R2,#4 ;LOOP 4 TIMES
- MOV DPTR,#DNAME
- BACK1: CLR A
- MOVC A, @A+DPTR
- MOV P1, A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK1
- MOV A, #0C0H ;LHS START, SECOND LINE
- ACALL COMMAND
- MOV R2,#11 ;LOOP 11 TIMES
- MOV DPTR, #DMATRIX_NO
- BACK2: CLR A
- MOVC A, @A+DPTR
- MOV P1, A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK2
- RET
- ;xxxxxxxxxxXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxx
- LCD1: ;NAME AND ID
- MOV A,#080H ;LHS START, FIRST LINE
- ACALL COMMAND
- MOV R2,#6 ;LOOP 6 TIMES
- MOV DPTR,#DNAME1
- BACK3: CLR A
- MOVC A, @A+DPTR
- MOV P1, A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK3
- MOV A, #0C0H ;LHS START, SECOND LINE
- ACALL COMMAND
- MOV R2,#11 ;LOOP 11 TIMES
- MOV DPTR, #DMATRIX_NO1
- BACK4: CLR A
- MOVC A, @A+DPTR
- MOV P1, A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK4
- RET
- ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXxxxxxxxxx
- LCD_GREETING:
- MOV A,#080H ;LHS START, FIRST LINE
- ACALL COMMAND
- MOV R2,#10 ;LOOP 10 TIMES
- MOV DPTR,#DGREET
- BACK5: CLR A
- MOVC A, @A+DPTR
- MOV P1, A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK5
- RET
- ;xxxxxxxxxxxxxXXXXXXXXXXXXXXXXXXXXXxxxxxxxxx
- LCD_POGRESS:
- MOV A,#080H ;LHS START, FIRST LINE
- ACALL COMMAND
- MOV R2,#10 ;LOOP 10 TIMES
- MOV DPTR,#DPOGRESS
- BACK7: CLR A
- MOVC A, @A+DPTR
- MOV P1, A
- ACALL DATAWRT
- INC DPTR
- DJNZ R2, BACK7
- RET
- ;XxxxxxxxxXXXXXXXXXXXXxxxxxxxxxXXXXXXXXxxx
- ;LCD INITIAL
- INITIAL:
- CLR P2.0
- CLR P2.1
- CLR P2.2
- MOV A, #38H
- ACALL COMMAND
- MOV A,#0FH ;VISIBLE BLINKING
- MOV A,#01H ;CLEAR SCREEN
- ACALL COMMAND
- MOV A,#04H ;SHIFT CURSOR RIGHT
- ACALL COMMAND
- RET
- ;COMMAND WRITE
- COMMAND:
- MOV P1, A
- CLR P2.0 ;RS=0 SELCET COMMAND REGISTER
- CLR P2.1 ;RW=0 FOR WRITE
- SETB P2.2 ;PULSE ON EN
- ACALL DELAY4
- CLR P2.2
- RET
- ;DATA WRITE
- DATAWRT:
- MOV P1, A
- SETB P2.0 ;RS=1 SELECT DATA
- CLR P2.1 ;RW=0 FOR WRITE
- SETB P2.2 ;PULSE ON EN
- ACALL DELAY4
- CLR P2.2 ;CLR EN
- RET
- ;CLEAR DISPLAY
- CLEAR:
- ACALL DELAY4
- MOV A, #01H ; CLEAR LCD SCREEN
- ACALL COMMAND
- ; SETB EN ; ENABLE EN
- ; CLR RS ; RS=0 FOR CMD
- ; MOV DATAWRT, #01H
- ; CLR EN ; DISABLE EN
- RET
- ;XxxxxxxxxXXXXXXXXxxxxxxxxxXXXXXXXXXXxxxx
- ;DELAYS
- DELAY4: ;LCD DELAY
- MOV R5, #11
- L3: MOV R4, #24
- L2: MOV R3, #255
- L1: DJNZ R3, L1
- DJNZ R4, L2
- DJNZ R5, L3
- RET
- ;1 SECONDS DELAY
- T0: MOV TMOD,#01H ;TIMER 0, MODE 1
- MOV R3,#14
- A2: MOV TL0,#08
- MOV TH0,#01
- SETB TCON.4 ;START TIMER 0
- JNB TCON.5,$ ;WAIT TIMER 0 OVERFLOW
- CLR TCON.4 ;STOP TIMER
- CLR TCON.5 ;CLEAR TIMER 0 OVERFLOW
- DJNZ R3,A2
- RET
- ;DELAY 2 SECOND
- DELAY:
- MOV TMOD,#10H ;TIMER 1 MODE 1
- MOV R4,#28
- A3: MOV TL1,#08
- MOV TH1,#01
- SETB TCON.6 ;START TIMER 1
- JNB TCON.7,$ ;WAIT TIMER 1 OVERFLOW
- CLR TCON.6 ;STOP TIMER 1
- CLR TCON.7 ;CLR TIMER 1 OVERFLOW
- DJNZ R4,A3
- RET
- ;xxxxxxxxxxxXXXXXXXXXXXXXXXXXXxxxxxxxxxxxx
- DNAME: DB 'EZAL'
- DMATRIX_NO DB '51210110176'
- DNAME1: DB 'SYAFIQ'
- DMATRIX_NO1 DB '51210110017'
- DGREET DB 'T JUNCTION'
- DPOGRESS DB 'ON THE RUN'
- END
Advertisement
Add Comment
Please, Sign In to add comment