;##############################
;# AUTOMATIC CAR PARKING #
;##############################
CPU "8051.TBL"
HOF "INT8"
ORG 0
START_POINT_BUFFER: EQU 040H ; กำหนดหน่วยความจำสำหรับค่า Data RFID
LCD_ADDR: EQU 030H ; กำหนดหน่วยความสำหรับค่า Address LCD
LCD_DATA: EQU 031H ; กำหนดหน่วยความสำหรับค่า Data LCD
INITIAL: MOV SP,#060H
MOV TMOD,#20H
MOV SCON,#50H
MOV TH1,#0FBH
SETB TR1
MOV P1,#0FFH
MOV P0,#00H ; กำหนดค่าเริ่มต้นให้กับพอร์ต 0
MOV P2,#00011111B
MAIN: LCALL INIT_LCD ; เรียกโปรแกรมย่อยเพื่อเตรียมการทำงานเริ่มต้น LCD
ACALL LCD_CLR ; ล้างจอแสดงผล
LOOP: MOV LCD_ADDR,#10H ; กำหนดค่า Address เริ่มต้นเป็น 00
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_04 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 10H-1FH
MOV DPTR,#TITLE_05 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 20H-2FH
MOV R4,#40 ; เลื่อนชุดแสดงผลไปทาง้ซ้าย 40 ครั้ง
LOOP_LCD_L_SHF: LCALL LCD_LSHF
LCALL DELAY_100ms
LCALL DELAY_100ms
LCALL DELAY_100ms
DJNZ R4,LOOP_LCD_L_SHF
LCALL INIT_LCD
MOV LCD_ADDR,#00H ; กำหนดค่า Address เริ่มต้นเป็น 00
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_01 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 00H-0FH
MOV LCD_ADDR,#40H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_02 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
;------------------------------;
; WAIT RFID DATA ;
;------------------------------;
WAIT_DATA: MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_02 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
MOV R0,#START_POINT_BUFFER
WAIT_DATA1: CLR RI
JNB RI,$
MOV @R0,SBUF
INC R0
CJNE R0,#START_POINT_BUFFER+14,WAIT_DATA1
;------------------------------------;
; CHECK CARD 1 ;
;------------------------------------;
CHK_CARD1: MOV R0,#START_POINT_BUFFER
CJNE @R0,#02H,START_TX_ERROR ;STX=02H
MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD2 ;2
INC R0
CJNE @R0,#41H,CHK_CARD2 ;A
INC R0
CJNE @R0,#30H,CHK_CARD2 ;0
INC R0
CJNE @R0,#30H,CHK_CARD2 ;0
INC R0
CJNE @R0,#39H,CHK_CARD2 ;9
INC R0
CJNE @R0,#41H,CHK_CARD2 ;A
INC R0
CJNE @R0,#46H,CHK_CARD2 ;F
INC R0
CJNE @R0,#39H,CHK_CARD2 ;9
INC R0
CJNE @R0,#41H,CHK_CARD2 ;A
INC R0
CJNE @R0,#46H,CHK_CARD2 ;F
INC R0
CJNE @R0,#45H,CHK_CARD2 ;E
INC R0
CJNE @R0,#36H,CHK_CARD2 ;6
MOV P1,#0FEH
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_1 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
START_TX_ERROR: LCALL CLR_BUFFER
AJMP WAIT_DATA
;------------------------------------;
; CHECK CARD 2 ;
;------------------------------------;
CHK_CARD2: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD3 ;2
INC R0
CJNE @R0,#41H,CHK_CARD3 ;A
INC R0
CJNE @R0,#30H,CHK_CARD3 ;0
INC R0
CJNE @R0,#30H,CHK_CARD3 ;0
INC R0
CJNE @R0,#39H,CHK_CARD3 ;9
INC R0
CJNE @R0,#41H,CHK_CARD3 ;A
INC R0
CJNE @R0,#46H,CHK_CARD3 ;F
INC R0
CJNE @R0,#41H,CHK_CARD3 ;A
INC R0
CJNE @R0,#39H,CHK_CARD3 ;9
INC R0
CJNE @R0,#33H,CHK_CARD3 ;3
INC R0
CJNE @R0,#44H,CHK_CARD3 ;D
INC R0
CJNE @R0,#39H,CHK_CARD3 ;9
MOV P1,#0FDH
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_2 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 3 ;
;---------------------------------;
CHK_CARD3: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD4 ;2
INC R0
CJNE @R0,#41H,CHK_CARD4 ;A
INC R0
CJNE @R0,#30H,CHK_CARD4 ;0
INC R0
CJNE @R0,#30H,CHK_CARD4 ;0
INC R0
CJNE @R0,#39H,CHK_CARD4 ;9
INC R0
CJNE @R0,#44H,CHK_CARD4 ;D
INC R0
CJNE @R0,#46H,CHK_CARD4 ;F
INC R0
CJNE @R0,#44H,CHK_CARD4 ;D
INC R0
CJNE @R0,#42H,CHK_CARD4 ;B
INC R0
CJNE @R0,#33H,CHK_CARD4 ;3
INC R0
CJNE @R0,#46H,CHK_CARD4 ;F
INC R0
CJNE @R0,#39H,CHK_CARD4 ;9
MOV P1,#0FCH
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_3 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 4 ;
;---------------------------------;
CHK_CARD4: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD5 ;2
INC R0
CJNE @R0,#41H,CHK_CARD5 ;A
INC R0
CJNE @R0,#30H,CHK_CARD5 ;0
INC R0
CJNE @R0,#30H,CHK_CARD5 ;0
INC R0
CJNE @R0,#39H,CHK_CARD5 ;9
INC R0
CJNE @R0,#44H,CHK_CARD5 ;D
INC R0
CJNE @R0,#45H,CHK_CARD5 ;E
INC R0
CJNE @R0,#39H,CHK_CARD5 ;9
INC R0
CJNE @R0,#32H,CHK_CARD5 ;2
INC R0
CJNE @R0,#42H,CHK_CARD5 ;B
INC R0
CJNE @R0,#37H,CHK_CARD5 ;7
INC R0
CJNE @R0,#35H,CHK_CARD5 ;5
MOV P1,#0FBH
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_4 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 5 ;
;---------------------------------;
CHK_CARD5: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD6 ;2
INC R0
CJNE @R0,#41H,CHK_CARD6 ;A
INC R0
CJNE @R0,#30H,CHK_CARD6 ;0
INC R0
CJNE @R0,#30H,CHK_CARD6 ;0
INC R0
CJNE @R0,#39H,CHK_CARD6 ;9
INC R0
CJNE @R0,#44H,CHK_CARD6 ;D
INC R0
CJNE @R0,#46H,CHK_CARD6 ;F
INC R0
CJNE @R0,#44H,CHK_CARD6 ;D
INC R0
CJNE @R0,#43H,CHK_CARD6 ;C
INC R0
CJNE @R0,#44H,CHK_CARD6 ;D
INC R0
CJNE @R0,#38H,CHK_CARD6 ;8
INC R0
CJNE @R0,#37H,CHK_CARD6 ;7
MOV P1,#0FAH
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_5 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 6 ;
;---------------------------------;
CHK_CARD6: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD7 ;2
INC R0
CJNE @R0,#41H,CHK_CARD7 ;A
INC R0
CJNE @R0,#30H,CHK_CARD7 ;0
INC R0
CJNE @R0,#30H,CHK_CARD7 ;0
INC R0
CJNE @R0,#39H,CHK_CARD7 ;9
INC R0
CJNE @R0,#44H,CHK_CARD7 ;D
INC R0
CJNE @R0,#45H,CHK_CARD7 ;E
INC R0
CJNE @R0,#39H,CHK_CARD7 ;9
INC R0
CJNE @R0,#46H,CHK_CARD7 ;F
INC R0
CJNE @R0,#34H,CHK_CARD7 ;4
INC R0
CJNE @R0,#41H,CHK_CARD7 ;A
INC R0
CJNE @R0,#41H,CHK_CARD7 ;A
MOV P1,#0F9H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_6 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 7 ;
;---------------------------------;
CHK_CARD7: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD8 ;2
INC R0
CJNE @R0,#41H,CHK_CARD8 ;A
INC R0
CJNE @R0,#30H,CHK_CARD8 ;0
INC R0
CJNE @R0,#30H,CHK_CARD8 ;0
INC R0
CJNE @R0,#39H,CHK_CARD8 ;9
INC R0
CJNE @R0,#42H,CHK_CARD8 ;B
INC R0
CJNE @R0,#30H,CHK_CARD8 ;0
INC R0
CJNE @R0,#42H,CHK_CARD8 ;B
INC R0
CJNE @R0,#42H,CHK_CARD8 ;B
INC R0
CJNE @R0,#34H,CHK_CARD8 ;4
INC R0
CJNE @R0,#30H,CHK_CARD8 ;0
INC R0
CJNE @R0,#45H,CHK_CARD8 ;E
MOV P1,#0F8H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_7 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 8 ;
;---------------------------------;
CHK_CARD8: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD9 ;2
INC R0
CJNE @R0,#41H,CHK_CARD9 ;A
INC R0
CJNE @R0,#30H,CHK_CARD9 ;0
INC R0
CJNE @R0,#30H,CHK_CARD9 ;0
INC R0
CJNE @R0,#39H,CHK_CARD9 ;9
INC R0
CJNE @R0,#42H,CHK_CARD9 ;B
INC R0
CJNE @R0,#35H,CHK_CARD9 ;5
INC R0
CJNE @R0,#43H,CHK_CARD9 ;C
INC R0
CJNE @R0,#42H,CHK_CARD9 ;B
INC R0
CJNE @R0,#34H,CHK_CARD9 ;4
INC R0
CJNE @R0,#35H,CHK_CARD9 ;5
INC R0
CJNE @R0,#39H,CHK_CARD9 ;9
MOV P1,#0F7H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_8 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 9 ;
;---------------------------------;
CHK_CARD9: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD10 ;2
INC R0
CJNE @R0,#41H,CHK_CARD10 ;A
INC R0
CJNE @R0,#30H,CHK_CARD10 ;0
INC R0
CJNE @R0,#30H,CHK_CARD10 ;0
INC R0
CJNE @R0,#39H,CHK_CARD10 ;9
INC R0
CJNE @R0,#42H,CHK_CARD10 ;B
INC R0
CJNE @R0,#32H,CHK_CARD10 ;2
INC R0
CJNE @R0,#44H,CHK_CARD10 ;D
INC R0
CJNE @R0,#46H,CHK_CARD10 ;F
INC R0
CJNE @R0,#44H,CHK_CARD10 ;D
INC R0
CJNE @R0,#36H,CHK_CARD10 ;6
INC R0
CJNE @R0,#31H,CHK_CARD10 ;1
MOV P1,#0F6H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_9 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 10 ;
;---------------------------------;
CHK_CARD10: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD11 ;2
INC R0
CJNE @R0,#43H,CHK_CARD11 ;C
INC R0
CJNE @R0,#30H,CHK_CARD11 ;0
INC R0
CJNE @R0,#30H,CHK_CARD11 ;0
INC R0
CJNE @R0,#34H,CHK_CARD11 ;4
INC R0
CJNE @R0,#37H,CHK_CARD11 ;7
INC R0
CJNE @R0,#42H,CHK_CARD11 ;B
INC R0
CJNE @R0,#44H,CHK_CARD11 ;D
INC R0
CJNE @R0,#39H,CHK_CARD11 ;9
INC R0
CJNE @R0,#39H,CHK_CARD11 ;9
INC R0
CJNE @R0,#34H,CHK_CARD11 ;4
INC R0
CJNE @R0,#46H,CHK_CARD11 ;F
MOV P1,#0F5H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_10 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 11 ;
;---------------------------------;
CHK_CARD11: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD12 ;2
INC R0
CJNE @R0,#43H,CHK_CARD12 ;C
INC R0
CJNE @R0,#30H,CHK_CARD12 ;0
INC R0
CJNE @R0,#30H,CHK_CARD12 ;0
INC R0
CJNE @R0,#34H,CHK_CARD12 ;4
INC R0
CJNE @R0,#37H,CHK_CARD12 ;7
INC R0
CJNE @R0,#42H,CHK_CARD12 ;B
INC R0
CJNE @R0,#44H,CHK_CARD12 ;D
INC R0
CJNE @R0,#34H,CHK_CARD12 ;4
INC R0
CJNE @R0,#42H,CHK_CARD12 ;B
INC R0
CJNE @R0,#39H,CHK_CARD12 ;9
INC R0
CJNE @R0,#44H,CHK_CARD12 ;D
MOV P1,#0F4H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_11 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 12 ;
;---------------------------------;
CHK_CARD12: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD13 ;2
INC R0
CJNE @R0,#43H,CHK_CARD13 ;C
INC R0
CJNE @R0,#30H,CHK_CARD13 ;0
INC R0
CJNE @R0,#30H,CHK_CARD13 ;0
INC R0
CJNE @R0,#34H,CHK_CARD13 ;4
INC R0
CJNE @R0,#37H,CHK_CARD13 ;7
INC R0
CJNE @R0,#42H,CHK_CARD13 ;B
INC R0
CJNE @R0,#44H,CHK_CARD13 ;D
INC R0
CJNE @R0,#36H,CHK_CARD13 ;6
INC R0
CJNE @R0,#35H,CHK_CARD13 ;5
INC R0
CJNE @R0,#42H,CHK_CARD13 ;B
INC R0
CJNE @R0,#33H,CHK_CARD13 ;3
MOV P1,#0F3H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_12 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 13 ;
;---------------------------------;
CHK_CARD13: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD14 ;2
INC R0
CJNE @R0,#43H,CHK_CARD14 ;C
INC R0
CJNE @R0,#30H,CHK_CARD14 ;0
INC R0
CJNE @R0,#30H,CHK_CARD14 ;0
INC R0
CJNE @R0,#34H,CHK_CARD14 ;4
INC R0
CJNE @R0,#37H,CHK_CARD14 ;7
INC R0
CJNE @R0,#42H,CHK_CARD14 ;B
INC R0
CJNE @R0,#44H,CHK_CARD14 ;D
INC R0
CJNE @R0,#35H,CHK_CARD14 ;5
INC R0
CJNE @R0,#38H,CHK_CARD14 ;8
INC R0
CJNE @R0,#38H,CHK_CARD14 ;8
INC R0
CJNE @R0,#45H,CHK_CARD14 ;E
MOV P1,#0F2H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_13 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 14 ;
;---------------------------------;
CHK_CARD14: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD15 ;2
INC R0
CJNE @R0,#43H,CHK_CARD15 ;C
INC R0
CJNE @R0,#30H,CHK_CARD15 ;0
INC R0
CJNE @R0,#30H,CHK_CARD15 ;0
INC R0
CJNE @R0,#34H,CHK_CARD15 ;4
INC R0
CJNE @R0,#37H,CHK_CARD15 ;7
INC R0
CJNE @R0,#42H,CHK_CARD15 ;B
INC R0
CJNE @R0,#44H,CHK_CARD15 ;D
INC R0
CJNE @R0,#38H,CHK_CARD15 ;8
INC R0
CJNE @R0,#43H,CHK_CARD15 ;C
INC R0
CJNE @R0,#35H,CHK_CARD15 ;5
INC R0
CJNE @R0,#41H,CHK_CARD15 ;A
MOV P1,#0F1H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_14 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 15 ;
;---------------------------------;
CHK_CARD15: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD16 ;2
INC R0
CJNE @R0,#43H,CHK_CARD16 ;C
INC R0
CJNE @R0,#30H,CHK_CARD16 ;0
INC R0
CJNE @R0,#30H,CHK_CARD16 ;0
INC R0
CJNE @R0,#34H,CHK_CARD16 ;4
INC R0
CJNE @R0,#37H,CHK_CARD16 ;7
INC R0
CJNE @R0,#42H,CHK_CARD16 ;B
INC R0
CJNE @R0,#44H,CHK_CARD16 ;D
INC R0
CJNE @R0,#37H,CHK_CARD16 ;7
INC R0
CJNE @R0,#32H,CHK_CARD16 ;2
INC R0
CJNE @R0,#41H,CHK_CARD16 ;A
INC R0
CJNE @R0,#34H,CHK_CARD16 ;4
MOV P1,#0F0H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_15 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 16 ;
;---------------------------------;
CHK_CARD16: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD17 ;2
INC R0
CJNE @R0,#43H,CHK_CARD17 ;C
INC R0
CJNE @R0,#30H,CHK_CARD17 ;0
INC R0
CJNE @R0,#30H,CHK_CARD17 ;0
INC R0
CJNE @R0,#34H,CHK_CARD17 ;4
INC R0
CJNE @R0,#37H,CHK_CARD17 ;7
INC R0
CJNE @R0,#42H,CHK_CARD17 ;B
INC R0
CJNE @R0,#44H,CHK_CARD17 ;D
INC R0
CJNE @R0,#37H,CHK_CARD17 ;7
INC R0
CJNE @R0,#46H,CHK_CARD17 ;F
INC R0
CJNE @R0,#41H,CHK_CARD17 ;A
INC R0
CJNE @R0,#39H,CHK_CARD17 ;9
MOV P1,#0E0H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_16 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 17 ;
;---------------------------------;
CHK_CARD17: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD18 ;2
INC R0
CJNE @R0,#43H,CHK_CARD18 ;C
INC R0
CJNE @R0,#30H,CHK_CARD18 ;0
INC R0
CJNE @R0,#30H,CHK_CARD18 ;0
INC R0
CJNE @R0,#34H,CHK_CARD18 ;4
INC R0
CJNE @R0,#37H,CHK_CARD18 ;7
INC R0
CJNE @R0,#42H,CHK_CARD18 ;B
INC R0
CJNE @R0,#44H,CHK_CARD18 ;D
INC R0
CJNE @R0,#41H,CHK_CARD18 ;A
INC R0
CJNE @R0,#36H,CHK_CARD18 ;6
INC R0
CJNE @R0,#37H,CHK_CARD18 ;7
INC R0
CJNE @R0,#30H,CHK_CARD18 ;0
MOV P1,#0D0H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_17 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 18 ;
;---------------------------------;
CHK_CARD18: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD19 ;2
INC R0
CJNE @R0,#43H,CHK_CARD19 ;C
INC R0
CJNE @R0,#30H,CHK_CARD19 ;0
INC R0
CJNE @R0,#30H,CHK_CARD19 ;0
INC R0
CJNE @R0,#34H,CHK_CARD19 ;4
INC R0
CJNE @R0,#37H,CHK_CARD19 ;7
INC R0
CJNE @R0,#42H,CHK_CARD19 ;B
INC R0
CJNE @R0,#39H,CHK_CARD19 ;9
INC R0
CJNE @R0,#45H,CHK_CARD19 ;E
INC R0
CJNE @R0,#35H,CHK_CARD19 ;5
INC R0
CJNE @R0,#33H,CHK_CARD19 ;3
INC R0
CJNE @R0,#37H,CHK_CARD19 ;7
MOV P1,#0C0H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_18 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 19 ;
;---------------------------------;
CHK_CARD19: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD20 ;2
INC R0
CJNE @R0,#43H,CHK_CARD20 ;C
INC R0
CJNE @R0,#30H,CHK_CARD20 ;0
INC R0
CJNE @R0,#30H,CHK_CARD20 ;0
INC R0
CJNE @R0,#34H,CHK_CARD20 ;4
INC R0
CJNE @R0,#37H,CHK_CARD20 ;7
INC R0
CJNE @R0,#42H,CHK_CARD20 ;B
INC R0
CJNE @R0,#39H,CHK_CARD20 ;9
INC R0
CJNE @R0,#43H,CHK_CARD20 ;C
INC R0
CJNE @R0,#42H,CHK_CARD20 ;B
INC R0
CJNE @R0,#31H,CHK_CARD20 ;1
INC R0
CJNE @R0,#39H,CHK_CARD20 ;9
MOV P1,#0B0H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_19 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 20 ;
;---------------------------------;
CHK_CARD20: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD21 ;2
INC R0
CJNE @R0,#43H,CHK_CARD21 ;C
INC R0
CJNE @R0,#30H,CHK_CARD21 ;0
INC R0
CJNE @R0,#30H,CHK_CARD21 ;0
INC R0
CJNE @R0,#34H,CHK_CARD21 ;4
INC R0
CJNE @R0,#37H,CHK_CARD21 ;7
INC R0
CJNE @R0,#42H,CHK_CARD21 ;B
INC R0
CJNE @R0,#39H,CHK_CARD21 ;9
INC R0
CJNE @R0,#46H,CHK_CARD21 ;F
INC R0
CJNE @R0,#32H,CHK_CARD21 ;2
INC R0
CJNE @R0,#32H,CHK_CARD21 ;2
INC R0
CJNE @R0,#30H,CHK_CARD21 ;0
MOV P1,#0A0H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_20 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 21 ;
;---------------------------------;
CHK_CARD21: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD22 ;2
INC R0
CJNE @R0,#43H,CHK_CARD22 ;C
INC R0
CJNE @R0,#30H,CHK_CARD22 ;0
INC R0
CJNE @R0,#30H,CHK_CARD22 ;0
INC R0
CJNE @R0,#34H,CHK_CARD22 ;4
INC R0
CJNE @R0,#42H,CHK_CARD22 ;B
INC R0
CJNE @R0,#44H,CHK_CARD22 ;D
INC R0
CJNE @R0,#44H,CHK_CARD22 ;D
INC R0
CJNE @R0,#42H,CHK_CARD22 ;B
INC R0
CJNE @R0,#33H,CHK_CARD22 ;3
INC R0
CJNE @R0,#30H,CHK_CARD22 ;0
INC R0
CJNE @R0,#39H,CHK_CARD22 ;9
MOV P1,#90H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_21 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 22 ;
;---------------------------------;
CHK_CARD22: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD23 ;2
INC R0
CJNE @R0,#43H,CHK_CARD23 ;C
INC R0
CJNE @R0,#30H,CHK_CARD23 ;0
INC R0
CJNE @R0,#30H,CHK_CARD23 ;0
INC R0
CJNE @R0,#34H,CHK_CARD23 ;4
INC R0
CJNE @R0,#42H,CHK_CARD23 ;B
INC R0
CJNE @R0,#44H,CHK_CARD23 ;D
INC R0
CJNE @R0,#31H,CHK_CARD23 ;1
INC R0
CJNE @R0,#33H,CHK_CARD23 ;3
INC R0
CJNE @R0,#38H,CHK_CARD23 ;8
INC R0
CJNE @R0,#38H,CHK_CARD23 ;8
INC R0
CJNE @R0,#45H,CHK_CARD23 ;E
MOV P1,#80H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_22 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 23 ;
;---------------------------------;
CHK_CARD23: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,CHK_CARD24 ;2
INC R0
CJNE @R0,#43H,CHK_CARD24 ;C
INC R0
CJNE @R0,#30H,CHK_CARD24 ;0
INC R0
CJNE @R0,#30H,CHK_CARD24 ;0
INC R0
CJNE @R0,#34H,CHK_CARD24 ;4
INC R0
CJNE @R0,#42H,CHK_CARD24 ;B
INC R0
CJNE @R0,#44H,CHK_CARD24 ;D
INC R0
CJNE @R0,#31H,CHK_CARD24 ;1
INC R0
CJNE @R0,#34H,CHK_CARD24 ;4
INC R0
CJNE @R0,#33H,CHK_CARD24 ;3
INC R0
CJNE @R0,#46H,CHK_CARD24 ;F
INC R0
CJNE @R0,#35H,CHK_CARD24 ;5
MOV P1,#70H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_23 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; CHECK CARD 24 ;
;---------------------------------;
CHK_CARD24: MOV R0,#START_POINT_BUFFER
INC R0
CJNE @R0,#32H,OUT_OF_DATA ;2
INC R0
CJNE @R0,#43H,OUT_OF_DATA ;C
INC R0
CJNE @R0,#30H,OUT_OF_DATA ;0
INC R0
CJNE @R0,#30H,OUT_OF_DATA ;0
INC R0
CJNE @R0,#34H,OUT_OF_DATA ;4
INC R0
CJNE @R0,#42H,OUT_OF_DATA ;B
INC R0
CJNE @R0,#44H,OUT_OF_DATA ;D
INC R0
CJNE @R0,#31H,OUT_OF_DATA ;1
INC R0
CJNE @R0,#36H,OUT_OF_DATA ;6
INC R0
CJNE @R0,#43H,OUT_OF_DATA ;C
INC R0
CJNE @R0,#44H,OUT_OF_DATA ;D
INC R0
CJNE @R0,#41H,OUT_OF_DATA ;A
MOV P1,#60H
MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_24 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY
MOV P1,#0FFH
AJMP WAIT_DATA
;---------------------------------;
; OUT OF DATA ;
;---------------------------------;
OUT_OF_DATA: MOV LCD_ADDR,#040H ; กำหนดค่า Address เป็น 40H
LCALL SET_ADDR_LCD
MOV DPTR,#TITLE_03 ; กำหนดตัวชี้ตำแหน่งของตัวอักษรที่ต้องการแสดงผล
LCALL WRLINE_LCD ; เรียกโปรแกรมย่อยเพื่อเขียนไปยังตำแหน่ง 40H-4FH
LCALL DELAY_1s
LCALL LCD_OFF ; เรียกโปรแกรมย่อย ปิดจอแสดงผล
LCALL DELAY_1s
LCALL LCD_ON ; เรียกโปรแกรมย่อย เปิดจอแสดงผล
LCALL DELAY_1s
LCALL LCD_OFF ; เรียกโปรแกรมย่อย ปิดจอแสดงผล
LCALL DELAY_1s
LCALL LCD_ON ; เรียกโปรแกรมย่อย เปิดจอแสดงผล
LCALL DELAY_1s
LCALL LCD_OFF ; เรียกโปรแกรมย่อย ปิดจอแสดงผล
LCALL DELAY_1s
LCALL LCD_ON ; เรียกโปรแกรมย่อย เปิดจอแสดงผล
LCALL DELAY
LCALL CLR_BUFFER
LJMP INITIAL
;---------------------------------;
; CLAER RAM BUFFER ;
;---------------------------------;
CLR_BUFFER: MOV R0,#START_POINT_BUFFER
CLR A
CLR_BUFFER1: MOV @R0,A
INC R0
CJNE R0,#START_POINT_BUFFER+14,CLR_BUFFER1
RET
;---------------------------------------------------------------------------------
; LCD Initialize โปรแกรมย่อยเพื่อเตรียมการทำงานเริ่มต้น LCD
;---------------------------------------------------------------------------------
INIT_LCD: LCALL DELAY_100ms ; หน่วงเวลา เพื่อให้จอแอลซีดีพร้อมก่อน
CLR P2.7 ; ขา RS เป็น 0 เพื่อแจ้งให้ทราบว่าเป็นการส่งคำสั่ง
MOV P0,#00111000B ; กำหนดโหมดเป็นแบบ 8bit
LCALL LCD_CLK ; ส่งพัลซ์ 1 ลูก ที่ขา Enable
LCALL DELAY_10ms ; หน่วงเวลาเพื่อให้จอฯพร้อมรับคำสั่งถัดไป
LCALL LCD_OFF ; เรียกโปรแกรมย่อย ปิดจอแสดงผล
LCALL LCD_CLR ; เรียกโปรแกรมย่อย ล้างค่าจอแสดงผล
MOV P0,#00000110B ; กำหนดโหมดการป้อนข้อมูล
LCALL LCD_CLK ; ส่งพัลซ์ 1 ลูก ที่ขา Enable
LCALL LCD_HOME ; เรียกโปรแกรมย่อยเพื่อย้ายเคอร์เซอร์ไปยังตำแหน่งแรก
;-----------------------------------------------------------------
; LCD Clear Display โปรแกรมย่อยล้างค่าจอแสดงผล
;-----------------------------------------------------------------
LCD_CLR: CLR P2.7
MOV P0,#00000001B
ACALL LCD_CLK
RET
;----------------------------------------------------------------------------------------
; LCD Return Home โปรแกรมย่อยเพื่อย้ายเคอร์เซอร์ไปยังตำแหน่งแรก
;----------------------------------------------------------------------------------------
LCD_HOME: CLR P2.7
MOV P0,#00000010B
ACALL LCD_CLK
RET
;----------------------------------------------------------
; LCD Display Off โปรแกรมย่อย ปิดจอแสดงผล
;-----------------------------------------------------------
LCD_OFF: CLR P2.7
MOV P0,#00001000B
ACALL LCD_CLK
RET
;--------------------------------------------------------------------
; LCD Clk โปรแกรมย่อยเพื่อ ส่งพัลซ์ 1 ลูก ที่ขา Enable
;--------------------------------------------------------------------
LCD_CLK: SETB P2.6
LCALL LCD_DELAY
CLR P2.6
LCALL LCD_DELAY
RET
;--------------------------------------------------------------
; LCD Display On โปรแกรมย่อย เปิดจอแสดงผล
;--------------------------------------------------------------
LCD_ON: CLR P2.7
MOV P0,#00001100B
LCALL LCD_CLK
RET
;--------------------------------------------------------
; LCD Cursor On โปรแกรมย่อย เปิดเคอร์เซอร์
;--------------------------------------------------------
LCD_BLINK: CLR P2.7
MOV P0,#00001111B
LCALL LCD_CLK
RET
;-------------------------------------------------------------------------------------------
; LCD Left Shift Display โปรแกรมย่อย เลือกการแสดงผลไปทางซ้าย 1 ครั้ง
;--------------------------------------------------------------------------------------------
LCD_LSHF: CLR P2.7
MOV P0,#00011000B
LCALL LCD_CLK
RET
;---------------------------------------------------------------------------------------------
; LCD Right Shift Display โปรแกรมย่อย เลือกการแสดงผลไปทางขวา 1 ครั้ง
;---------------------------------------------------------------------------------------------
LCD_RSHF: CLR P2.7
MOV P0,#00011100B
LCALL LCD_CLK
RET
;----------------------------------------------------------------------------------
; Set LCD Address โปรแกรมย่อยเพื่อกำหนดตำแหน่งในจอแอลซีดี
;---------------------------------------------------------------------------------
SET_ADDR_LCD: CLR P2.7
MOV A,LCD_ADDR
SETB ACC.7
MOV P0,A
LCALL LCD_CLK
RET
;-------------------------------------------------------------------------------------------
; Write Character to show LCD โปรแกรมย่อยเพื่อแสดงตัวอักษรที่ต้องการ
;-------------------------------------------------------------------------------------------
WRCHAR_LCD: SETB P2.7
MOV P0,LCD_DATA
LCALL LCD_CLK
LCALL LCD_ON
RET
;-------------------------------------------------------------------------------------------------------------------
; Write Line of 16 Character from ROM โปรแกรมย่อยเพื่อส่งตัวอักษรจาก ROM ไปจอแอลซีดี
;-------------------------------------------------------------------------------------------------------------------
WRLINE_LCD: MOV R0,#0
WRLINE_LCD_1: SETB P2.7
CLR A
MOVC A,@A+DPTR
MOV P0,A
LCALL LCD_CLK
INC DPTR
INC R0
CJNE R0,#16,WRLINE_LCD_1
LCALL LCD_ON
RET
;---------------------------------------------------------------------------------------
; DELAY ROUTINE โปรแกรมย่อยสำหรับหน่วงเวลา
;---------------------------------------------------------------------------------------
LCD_DELAY: MOV R7,#002
LCD_DELAY_1: MOV R6,#0E6H
LCD_DELAY_2: NOP
NOP
DJNZ R6,LCD_DELAY_2
DJNZ R7,LCD_DELAY_1
RET
DELAY_10ms: MOV R7,#010
DELAY_10ms_1: MOV R6,#0E6H
DELAY_10ms_2: NOP
NOP
DJNZ R6,DELAY_10ms_2
DJNZ R7,DELAY_10ms_1
RET
DELAY_100ms: MOV R7,#100
DELAY_100ms_1: MOV R6,#0E6H
DELAY_100ms_2: NOP
NOP
DJNZ R6,DELAY_100ms_2
DJNZ R7,DELAY_100ms_1
RET
DELAY_1s: MOV R5,#100
DELAY_1s_1: LCALL DELAY_10ms
DJNZ R5,DELAY_1s_1
RET
DELAY: MOV R2,#250
DEL1: MOV R3,#80
DEL2: MOV R4,#80
DJNZ R4,$
DJNZ R3,DEL2
DJNZ R2,DEL1
RET
;-------------------------------------------------------------------------------------
; กำหนดค่าข้อมูลของตัวอักษรที่ต้องการ เก็บไว้ที่หน่วยความจำ ROM
; Define Constant ( Store in Flash EEPROM Program Memory )
;-------------------------------------------------------------------------------------
TITLE_01: DFB "AUTO CAR PARKING "
TITLE_02: DFB " Proximity card "
TITLE_03: DFB " Unknown card "
TITLE_04: DFB "AUTOMATIC CAR "
TITLE_05: DFB "PARKING "
TITLE_1: DFB " User ID : 1 "
TITLE_2: DFB " User ID : 2 "
TITLE_3: DFB " User ID : 3 "
TITLE_4: DFB " User ID : 4 "
TITLE_5: DFB " User ID : 5 "
TITLE_6: DFB " User ID : 6 "
TITLE_7: DFB " User ID : 7 "
TITLE_8: DFB " User ID : 8 "
TITLE_9: DFB " User ID : 9 "
TITLE_10: DFB " User ID : 10 "
TITLE_11: DFB " User ID : 11 "
TITLE_12: DFB " User ID : 12 "
TITLE_13: DFB " User ID : 13 "
TITLE_14: DFB " User ID : 14 "
TITLE_15: DFB " User ID : 15 "
TITLE_16: DFB " User ID : 16 "
TITLE_17: DFB " User ID : 17 "
TITLE_18: DFB " User ID : 18 "
TITLE_19: DFB " User ID : 19 "
TITLE_20: DFB " User ID : 20 "
TITLE_21: DFB " User ID : 21 "
TITLE_22: DFB " User ID : 22 "
TITLE_23: DFB " User ID : 23 "
TITLE_24: DFB " User ID : 24 "