Sunteți pe pagina 1din 5

ORG 2000H

EN BIT P3.4
RS BIT P3.5
MAIN:
CALL SP_KD
CALL LCD_KD
CALL XOA

LONG: MOV A,#85H


CALL WRITE_COM
PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#TABLE3
MA: MOV A,#0
MOVC A,@A+DPTR
INC DPTR
CALL WRITE_TEXT
CJNE A,#0,MA
POP ACC
POP DPL
POP DPH
MOV A,#85H
CALL WRITE_COM
MOV R5,#6
LOOP1:
CALL IN
CJNE A,#'D',LOOP
CALL OUT
CALL WRITE_TEXT
DEC R5
CALL IN
CJNE A,#'H',LOOP
CALL OUT
CALL WRITE_TEXT
DEC R5
CALL IN
CJNE A,#'B',LOOP
CALL OUT
CALL WRITE_TEXT
DEC R5
CALL IN
CJNE A,#'K',LOOP
CALL OUT
CALL WRITE_TEXT
DEC R5
CALL IN
CJNE A,#'1',LOOP
CALL OUT
CALL WRITE_TEXT
DEC R5
CALL IN
CJNE A,#'0',LOOP
CALL OUT
CALL WRITE_TEXT
DEC R5
ENTER1: CALL IN
CJNE A,#13,ENTER1
HA1: CALL TCONG
CALL DELAY1S
CALL XOACHU
JNB RI,TIEP1
ESC1: CALL IN
CJNE A,#27,ESC1
JMP LONG
TIEP1: CALL DELAY1S
SJMP HA1
LOOP: CALL OUT
CALL WRITE_TEXT
DEC R5
LOOP2: CALL IN
CALL OUT
CALL WRITE_TEXT
DJNZ R5,LOOP2
ENTER2: CALL IN
CJNE A,#13,ENTER2
HA2: CALL TBAI
CALL DELAY1S
CALL XOACHU
JNB RI,TIEP2
ESC2: CALL IN
CJNE A,#27,ESC2
JMP LONG
TIEP2: CALL DELAY1S
SJMP HA2
SP_KD:
MOV SCON,#52H ;CHE DO 2:8 BIT
MOV TMOD,#21H ;NAP TIMER 0 DE TAO DELAY ....TIMER 1
TAO TOC DO BAUD
MOV TH1,#-3
MOV A,87H ;PHAI CHON THACH ANH DUNG TAN SO -> CO SAI
SO LA SAI KY TU
SETB ACC.7
MOV 87H,A ;DUA TOC DO BAUD LEN 19200....
SETB TR1
RET
LCD_KD:
MOV A,#38H
CALL WRITE_COM
MOV A,#0EH
CALL WRITE_COM
MOV A,#06H
CALL WRITE_COM
RET
XOA:
MOV A,#01H
ACALL WRITE_COM
RET
IN: JNB RI,$
CLR RI
MOV A,SBUF
RET
OUT:
JNB TI,$
CLR TI
MOV A,#'*'
MOV SBUF,A
RET

WRITE_COM: ;KHONG DUNG PUSH ACC DO KHONG SU


DUNG TRA BANG
SETB EN
CLR RS
MOV DPTR,#8000H
MOVX @DPTR, A
CLR EN
LCALL WAIT_LCD
RET
WRITE_TEXT:PUSH DPH
PUSH DPL
PUSH ACC
SETB EN
SETB RS
MOV DPTR,#8000H
;MOV A,#'*'
MOVX @DPTR, A
CLR EN
LCALL WAIT_LCD1
POP ACC
POP DPL
POP DPH
RET
WAIT_LCD:
MOV TH0,#HIGH(-40000)
MOV TL0,#LOW(-40000)
SETB TR0
JNB TF0 ,$
CLR TR0
CLR TF0
RET
WAIT_LCD1:
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
JNB TF0 ,$
CLR TR0
CLR TF0
RET
DELAY1S:
MOV R0,#10
DEL1: MOV TH0,#HIGH(-50000)
MOV TL0,#LOW(-50000)
SETB TR0
JNB TF0 ,$
CLR TR0
CLR TF0
DJNZ R0,DEL1
RET
DELAY1MS:
MOV TH0,#HIGH(-5000)
MOV TL0,#LOW(-5000)
SETB TR0
JNB TF0 ,$
CLR TR0
CLR TF0
RET
TCONG: MOV A,#0C3H
CALL WRITE_COM
PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#TABLE1
MA1: MOV A,#0
MOVC A,@A+DPTR
INC DPTR
CALL WRITE_TEXT
CJNE A,#0,MA1
POP ACC
POP DPL
POP DPH
RET
TBAI: MOV A,#0C0H
CALL WRITE_COM
PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#TABLE2
MA2: MOV A,#0
MOVC A,@A+DPTR
INC DPTR
CALL WRITE_TEXT
CJNE A,#0,MA2
POP ACC
POP DPL
POP DPH
RET
XOACHU: MOV A,#0C0H
CALL WRITE_COM
PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR,#TABLE4
MA3: MOV A,#0
MOVC A,@A+DPTR
INC DPTR
CALL WRITE_TEXT
CJNE A,#0,MA3
POP ACC
POP DPL
POP DPH
RET
TABLE1: DB 'Successful! ',0
TABLE2: DB ' AccessDenied! ',0
TABLE3: DB' ' ,0
TABLE4: DB ' ',0

END

S-ar putea să vă placă și