📄 attendance.a51
字号:
CALL MDELAY
MOV R1,#NAMES ;store Name
MOV R4,#50H ;Starting Address
MOV R6,#16 ;STORE 16 BYTES
CALL STORE_EEPROM
AJMP JNM
JNM2: CJNE A,#03H,JNM3
MOV R1,#BYTE ;store tag ID
MOV R4,#60H ;Starting Address
MOV R6,#10 ;STORE 10 BYTES
CALL STORE_EEPROM
CALL MDELAY
MOV R1,#NAMES ;store Name
MOV R4,#70H ;Starting Address
MOV R6,#16 ;STORE 16 BYTES
CALL STORE_EEPROM
AJMP JNM
JNM3: CJNE A,#04H,JNM4
MOV R1,#BYTE ;store tag ID
MOV R4,#80H ;Starting Address
MOV R6,#10 ;STORE 10 BYTES
CALL STORE_EEPROM
CALL MDELAY
MOV R1,#NAMES ;store Name
MOV R4,#90H ;Starting Address
MOV R6,#16 ;STORE 16 BYTES
CALL STORE_EEPROM
AJMP JNM
JNM4: CJNE A,#05H,JNM5
MOV R1,#BYTE ;store tag ID
MOV R4,#0A0H ;Starting Address
MOV R6,#10 ;STORE 10 BYTES
CALL STORE_EEPROM
CALL MDELAY
MOV R1,#NAMES ;store Name
MOV R4,#0B0H ;Starting Address
MOV R6,#16 ;STORE 16 BYTES
CALL STORE_EEPROM
AJMP JNM
JNM5: CJNE A,#06H,JNM6
MOV R1,#BYTE ;store tag ID
MOV R4,#0C0H ;Starting Address
MOV R6,#10 ;STORE 10 BYTES
CALL STORE_EEPROM
CALL MDELAY
MOV R1,#NAMES ;store Name
MOV R4,#0D0H ;Starting Address
MOV R6,#16 ;STORE 16 BYTES
CALL STORE_EEPROM
AJMP JNM
JNM6: CJNE A,#07H,JNM
MOV R1,#BYTE ;store tag ID
MOV R4,#0E0H ;Starting Address
MOV R6,#10 ;STORE 10 BYTES
CALL STORE_EEPROM
CALL MDELAY
MOV R1,#NAMES ;store Name
MOV R4,#0F0H ;Starting Address
MOV R6,#16 ;STORE 16 BYTES
CALL STORE_EEPROM
AJMP JNM
JNM: CALL ID_SAVED ;Tag stored sucessfully
CALL WRITE_TOTAL ;WRITE TOTAL ID IN MEMORY
CALL DELAYS
JNB ENTER,$
AJMP REP1
Loop: CALL Check_Keyb
JNB ENTER,GHBH
JNB CANCEL,DCFV1
JNC Loop
MOV R4,KB_DATA
CALL WRLCDDATA
RET
GHBH: JNB ENTER,$
MOV TEMP,#16
RET
DCFV1: JNB CANCEL,$
AJMP LOOP1
;********************************************
OTHER:
CALL READ_TOTAL
MOV R2,TOTAL
CALL CLEAR_RAM
;check first card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#20H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN1
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#30H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN1:
;check 2 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#40H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN3
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#50H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN3:
;check 3 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#60H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN4
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#70H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN4:
;check 2 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#80H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN5
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#90H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN5:
;check 2 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#0A0H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN6
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#0B0H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN6: ;check 2 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#0C0H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN7
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#0D0H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN7: ;check 2 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#0E0H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN8
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#0F0H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN8: ;check 2 card
MOV R1,#BYTES ;GET DATA IN BYTES(RAM)
MOV R4,#30H ;MASTER ADDRESS
MOV R6,#10 ;NUMBER OF BYTES
CALL READ_EEPROM
CLR MAS
CALL COMPARE
JNB MAS,GAN9
MOV R1,#NAMES ;GET DATA IN BYTES(RAM)
MOV R4,#40H ;MASTER ADDRESS
MOV R6,#16 ;NUMBER OF BYTES
CALL READ_EEPROM
CALL NAMES1
CALL DISP_NAME
AJMP GAN2
GAN9:
CALL CARD_ERROR
SETB ES
CALL DELAYS
CALL DELAYS
AJMP TOP
GAN2: CALL TRANSMIT_DATA
SETB ES
CALL DELAYS
CALL DELAYS
AJMP TOP
NAMES1:
JNB AM,ASX1 ;jmp if PM
CALL NAME1
RET
ASX1: CALL NAME3
RET
;##########################################################
; DISPLAY ROUTINES
;##########################################################
TITLES:
MOV DPTR,#MSAG
CALL LCD_MSG
RET
MSAG:
DB 1H,81H,'RFID Based',0C0H,'Attendance Sys',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TITLE1:
MOV DPTR,#MSAG1
CALL LCD_MSG
RET
MSAG1:
DB 1H,81H,'RFID Data:',0C0H,00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISPLAY:
MOV DPTR,#MSAG2
CALL LCD_MSG
RET
MSAG2:
DB 1H,80H,'Master Card',0C0H,'Detected...',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISPLAY1:
MOV DPTR,#MSAG3
CALL LCD_MSG
RET
MSAG3:
DB 1H,80H,'Press Enter...',0C0H,'*** ADD TAG ***',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISPLAY2:
MOV DPTR,#MSAG4
CALL LCD_MSG
RET
MSAG4:
DB 1H,80H,'Press Enter...',0C1H,'** EDIT TAG **',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISPLAY3:
MOV DPTR,#MSAG5
CALL LCD_MSG
RET
MSAG5:
DB 1H,80H,'Please show the',0C3H,'** TAG **',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISPLAY4:
MOV DPTR,#MSAG6
CALL LCD_MSG
RET
MSAG6:
DB 1H,0FH,80H,'Plz enter Name',0C0H,00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISPLAY5:
MOV DPTR,#MSAG7
CALL LCD_MSG
RET
MSAG7:
DB 1H,80H,'Press enter EDIT',0C0H,00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DISP1:
MOV DPTR,#MSG1
CALL LCD_MSG
RET
MSG1:
DB 1H,84H,'Keyboard',0C3H,'* Not Ok *', 00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATE_DISP:
MOV DPTR,#MSG2
CALL LCD_MSG
RET
MSG2:
DB 1H,80H,'Enter Date',0C0H,'(01-31):',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MON_DISP:
MOV DPTR,#MSG3
CALL LCD_MSG
RET
MSG3:
DB 1H,80H,'Enter Month',0C0H,'(01-12):',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
YR_DISP:
MOV DPTR,#MSG4
CALL LCD_MSG
RET
MSG4:
DB 1H,80H,'Enter Year',0C0H,'(00-99):',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
HR_DISP:
MOV DPTR,#MSG5
CALL LCD_MSG
RET
MSG5:
DB 1H,80H,'Enter Hour',0C0H,'(01-12):',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MIN_DISP:
MOV DPTR,#MSG6
CALL LCD_MSG
RET
MSG6:
DB 1H,80H,'Enter Minutes',0C0H,'(00-59):',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DAY_DISP:
MOV DPTR,#MSG7
CALL LCD_MSG
RET
MSG7:
DB 1H,80H,'Enter Day',0C0H,'(0-7):',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AMS_DISP:
MOV DPTR,#MSG8
CALL LCD_MSG
RET
MSG8:
DB 1H,80H,'Enter AM/PM',0C0H,'AM=0,PM=1:',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AM_DISP:
MOV DPTR,#MSG9
CALL LCD_MSG
RET
MSG9:
DB 1H,80H,'Enter AM/PM',0C0H,'AM=0,PM=1: AM',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PM_DISP:
MOV DPTR,#MSG10
CALL LCD_MSG
RET
MSG10:
DB 1H,80H,'Enter AM/PM',0C0H,'AM=0,PM=1: PM',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PRESS_ENTER:
MOV DPTR,#MSG11
CALL LCD_MSG
RET
MSG11:
DB 1H,82H,'Press Enter',0C4H,'to Save',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ID_SAVED:
MOV DPTR,#MSG12
CALL LCD_MSG
RET
MSG12:
DB 1H,83H,'TAG Saved',0C2H,'Sucessfully',00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NAME1:
MOV DPTR,#MSG13
CALL LCD_MSG
RET
MSG13:
DB 1H,80H,'* Good Morning *',0C0H,00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NAME3:
MOV DPTR,#MSG132
CALL LCD_MSG
RET
MSG132:
DB 1H,80H,'* Good Evening *',0C0H,00H
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CARD_ERROR:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -