The program used for the operation of this system is as follows :
;***************************************************************;
PROCEDURE OF WAIT
;***************************************************************
org 8500h
wait: push dph
push dpl
push r0
push r1
mov dptr,#2042h ;input data from PORT C
wi: movx a,@dptr
mov r2,a
anl a,#20h
jz cont ;check for interrupt from display unit
jmp start
cont: mov a,r2
anl a,#0fh ;to check whether any key is pressed
jz wi
mov r0,#75
lcall 6798h
mov dptr,#2042h
here: movx a,@dptr ;wait for the key to be realesed
jnz here
mov dptr,#2040h ;sending a pulse to the display section
mov a,r2
movx @dptr,a
mov a,#00h
mov dptr,#2041h
movx @dptr,a
mov a,#40h
movx @dptr,a
mov a,r2
mov r0,#75
lcall 6798h
pop r1
pop r0
pop dpl
pop dph
ret
;***************************************************************;
STORING AND RETRIVING OF PASS WORD
;***************************************************************
org 8550h
scan: mov r0,#04h
mov dptr,#2042h
one: movx a,@dptr ;check for lock or unlock buttons
anl a,#0c0h
jz one
ret
lock: lcall wait ;storing of pass word in given location
mov @r1,a
inc r1
djnz r0,lock
lcall out
ret
unlock: clr 0ah
call wait
mov a,@r1
xrl a,r2 ;comparing the entered and the stored code
jz match
setb 0ah ;in case of mismatch set error bit
match: inc r1
djnz r0,unlock
jnb 0ah,go
mov a,#20h
push dptr
mov dptr,#2040h
movx @dptr,a
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
mov a,#00h
movx @dptr,a
pop dptr
jmp not
go: lcall out
not: ret
;***************************************************************;
TO ACCEPT THE DEVICE NUMBER
;***************************************************************
org 9000h
mov sp,#05fh
main: clr 01h ;clearing all the device flags
clr 02h
clr 03h
clr 04h
clr 05h
clr 06h
clr 07h
clr 08h
clr 09h
setb ie.7
setb ie.2
start: mov a,#89h ;C as i\p,A and B as o\p
mov dptr,#2043h
movx @dptr,a
mov r7,#05h ;clearing the display section
rss: mov dptr,#2040h
mov a,#00h
movx @dptr,a
mov a,#00h
mov dptr,#2041h
movx @dptr,a
mov a,#40h
movx @dptr,a
djnz r7,rss
lcall wait
cjne a,#01h,nxt2
jmp dev1
nxt2: cjne a,#02h,nxt3
jmp dev2
nxt3: cjne a,#03h,nxt4
jmp dev3
nxt4: cjne a,#04h,nxt5
jmp dev4
nxt5: cjne a,#05h,nxt6
jmp dev5
nxt6: cjne a,#06h,nxt7
jmp dev6
nxt7: cjne a,#07h,nxt8
jmp dev7
nxt8: cjne a,#08h,nxt9
jmp dev8
nxt9: cjne a,#09h,start
jmp dev9
;***************************************************************;
SELECTED DEVICE ACTIVATION
;***************************************************************
org 9200h
dev1: mov r1,#30h ;Loading the address of the password
mov r3,#01h ;device no. used to give to the decoder
lcall scan
cjne a,#80h,unlock1 ;check for the lock\unlock pressed
jmp lock1
unlock1: jnb 01h,error1 ;generating error if the selected device is already
;activated
lcall unlock
jb 0ah,hr1
clr 01h ;clear lock\unlock flag
hr1: jmp start
lock1: jb 01h,error1
lcall lock
setb 01h ;set lock\unlock flag
jmp start
error1: mov a,#40h ;activating the error LED
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***************************************************************
dev2: mov r1,#035h
mov r3,#02h
lcall scan
cjne a,#80h,unlock2
jmp lock2
unlock2: jnb 02h,error2
lcall unlock
jb 0ah,hr2
clr 02h
hr2: jmp start
lock2: jb 02h,error2
lcall lock
setb 02h
jmp start
error2: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***************************************************************
dev3: mov r1,#03ah
mov r3,#03h
lcall scan
cjne a,#80h,unlock3
jmp lock3
unlock3:jnb 03h,error3
lcall unlock
jb 0ah,hr3
clr 03h
hr3: jmp start
lock3:jb 03h,error3
lcall lock
setb 03h
jmp start
error3: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***************************************************************
dev4: mov r1,#040h
mov r3,#04
lcall scan
cjne a,#80h,unlock4
jmp lock4
unlock4:jnb 04h,error4
lcall unlock
jb 0ah,hr4
clr 04h
hr4: jmp start
lock4:jb 04h,error4
lcall lock
setb 04h
jmp start
error4: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***************************************************************
dev5: mov r1,#045h
mov r3,#05h
lcall scan
cjne a,#80h,unlock5
jmp lock5
unlock5:jnb 05h,error5
lcall unlock
jb 0ah,hr5
clr 05h
hr5: jmp start
lock5:jb 05h,error5
lcall lock
setb 05h
jmp start
error5: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***************************************************************
dev6: mov r1,#04ah
mov r3,#06h
lcall scan
cjne a,#80h,unlock6
jmp lock6
unlock6:jnb 06h,error6
lcall unlock
jb 0ah,hr6
clr 06h
hr6: jmp start
lock6:jb 06h,error6
lcall lock
setb 06h
jmp start
error6: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;**************************************************************
dev7: mov r1,#050h
mov r3,#07h
lcall scan
cjne a,#80h,unlock7
jmp lock7
unlock7:jnb 07h,error7
lcall unlock
jb 0ah,hr7
clr 07h
hr7:jmp start
lock7:jb 07h,error7
lcall lock
setb 07h
jmp start
error7: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***********************************************************
dev8: mov r1,#055h
mov r3,#08h
lcall scan
cjne a,#80h,unlock8
jmp lock8
unlock8:jnb 08h,error8
lcall unlock
jb 0ah,hr8
clr 08h
hr8: jmp start
lock8:jb 08h,error8
lcall lock
setb 08h
jmp start
error8: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***********************************************************
dev9: mov r1,#05ah
mov r3,#09h
lcall scan
cjne a,#80h,unlock9
jmp lock9
unlock9:jnb 09h,error9
lcall unlock
jb 0ah,hr9
clr 09h
hr9: jmp start
lock9:jb 09h,error9
lcall lock
setb 09h
jmp start
error9: mov a,#40h
mov dptr,#2040h
movx @dptr,a
push dptr
push r0
push r1
mov r0,#ffh
lcall 6798h
pop r1
pop r0
pop dptr
jmp start
;***********************************************************
; OUTPUT SECTION
;***********************************************************
org 0a000h
out: mov a,r3 ;loading the device number
mov dptr,#2041h
movx @dptr,a
ret
;***********************************************************