here is the code
org 000h
mov r1,#30h ;bytes for ack
mov r3,#8 ;counter for ack
mov r0,#28h ;bytes for id tag
mov r4,#32 ;counter for id tag
mov r2,#10
mov p1,#00110011b
mov p2,#00110011b
mov p0,#00110011b
mov A,pcon
setb acc.7
mov pcon,A
mov tmod,#20h
mov th1,#-3
mov scon,#50h
setb tr1
again:mov DPTR,#rfid
h_1: clr A
movc A,@A+dptr
jz b_1
acall send
inc dptr
sjmp h_1
b_1: acall recv
mov p0,@r1
inc r1
djnz r3,b_1
sjmp verify
send:mov sbuf,A
h_2:jnb ti, h_2
clr ti
ret
recv: jnb ri,recv
mov A,sbuf
mov @r1, A
clr ri
ret
verify:
mov r1,#30h
mov p2,@r1
cjne @r1,#'a',bil
sjmp tag_id
bil:sjmp again ;if ack not recieved, send again
tag_id: mov r2,#10
mov r0,#28h ;to keep bytes from 28 to 32
loop:acall recv1
mov p0,@r0
inc r0
djnz r2,loop
djnz r4,tag_id
sjmp verify2
recv1: jnb ri,recv1
mov A,sbuf
mov @r0,A
clr ri
ret
verify2:
mov r0,#28h
cjne @r0,#'3',bil1
mov p1,#11100010b
;set a flag bit,assign space;check sensors
sjmp again
bil1: mov p1,#10010011b
org 0300h
rfid: DB "re364 acknwlge",0
end