the coding is in asm language even i need the same and accurate code in c
the coding is ....
frqflg equ 0fh
freq:
org 0000h
mov sp,#30h
sjmp over
org 001bh
setb psw.3
inc r0
cjne r0,#00h,checktime
inc r1
checktime:
cjne r1,#03h,goback
cjne r0,#0e8h,goback
clr tr0
clr tr1;
setb frqflg
goback:
clr psw.3
reti
over:
mov tcon,#00h
setb psw.3
mov r0,#00h
mov r1,#00h
clr psw.3
mov tmod,#25h
mov tl1,#9ch
mov th1,#9ch
mov tl0,#00h
mov th0,#00h
clr frqflg
mov tcon,#50h
mov ie,#88h
simulate:
jbc frqflg,getfrq
sjmp simulate
getfrq:
mov r0,#000h
mov p2,r0
mov p1,r0
mov a,th0
jb acc.4,fr
jnb acc.4,next
next:
jb acc.3,fr
jnb acc.3,go0
go0:
jb acc.2,fr
jnb acc.2,forw
forw:
//cjne a,#00h,fr
jb acc.1,sr
jnb acc.1,k
k:
/* new1:
cjne a,#00h,fr*/
sjmp over
/* k:ljmp tr
next0:
mov a,tl0
jb acc.7,k1
k1:
ljmp tr
jnb acc.7,go1
go1:
jb acc.6,sr
jnb acc.6,k2
k2:ljmp tr */
fr:
acall delayan
mov a,#002h
mov p2,a
acall delayan
mov p2,r0
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
mov a,#001h
mov p2,a
acall delayan
mov p2,r0
mov r3,#001h
track0:
acall delayan
mov a,#004h
mov p2,a
acall delayan1
mov p2,r0
djnz r3,track0
acall delayan
mov a,#002h
mov p2,a
acall delayan
mov p2,r0
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
mov r5,#002h
close0: mov a,#001h
mov p2,a
acall delayan
acall delayan
mov p2,r0
acall delayan
acall delayan
djnz r5,close0
ljmp over
sr:
acall delayan
mov a,#002h
mov p2,a
acall delayan
mov p2,r0
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
mov a,#001h
mov p2,a
acall delayan
mov p2,r0
mov r3,#002h
track1:
acall delayan
mov a,#004h
mov p2,a
acall delayan1
mov p2,r0
djnz r3,track1
acall delayan
mov a,#002h
mov p2,a
acall delayan
mov p2,r0
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
mov r5,#002h
close1: mov a,#001h
mov p2,a
acall delayan
acall delayan
mov p2,r0
acall delayan
acall delayan
djnz r5,close1
ljmp over
/*tr:
acall delayan
mov a,#002h
mov p2,a
acall delayan
mov p2,r0
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
mov a,#001h
mov p2,a
acall delayan
mov p2,r0
mov r3,#003h
track2:
acall delayan
mov a,#004h
mov p2,a
acall delayan1
mov p2,r0
djnz r3,track2
acall delayan
mov a,#002h
mov p2,a
acall delayan
mov p2,r0
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
acall delayan
mov r5,#002h
close2: mov a,#001h
mov p2,a
acall delayan
acall delayan
mov p2,r0
acall delayan
acall delayan
djnz r5,close2
ljmp over */
delay:
// mov r4,#0ffh
// mov r3,#0ffh
// d0:djnz r4,d0
// d1:djnz r3,d1
ret
delayan: ;antifast delay
push 00h
push 01h
push 04h
push 0f0h
//mov b,r4
mov r6,#0ffh
loop4: mov r0,#0fh
loop2: mov r1,#0ffh
loop3: djnz r1,loop3
djnz r0,loop2
djnz r6,loop4
pop 0f0h
pop 04h
pop 01h
pop 00h
ret
delayan1: ;antifast delay
push 00h
push 01h
push 04h
push 0f0h
//mov b,r4
mov r6,#0ffh
loop8: mov r0,#01h
loop5: mov r1,#0ffh
loop6: djnz r1,loop6
djnz r0,loop5
djnz r6,loop8
pop 0f0h
pop 04h
pop 01h
pop 00h
ret
end