匯編時鐘(帶控制) ;K1調節(jié)小時,K2調節(jié)分鐘 k1 bit p1.4 k2 bit p1.5 org 0h jmp begin org 0bh jmp to_int begin:mov a,#0 mov r0,#70h mov r1,#7bh again:mov @r0,a inc r0 djnz r1,again mov tmod,#0h mov ie,#10000010b mov tl0,#24 mov th0,#99 mov r2,#200 setb tr0 loop: call scan jb k1,m1 call s1 jmp loop m1: jb k2,m2 call s2 jmp loop m2: jmp loop to_int: PUSH a PUSH psw clr et0 clr tr0 mov tl0,#24 mov th0,#99 setb tr0 djnz r2,out0 mov r2,#200 mov r0,#75h call add1 mov a,r4 cjne a,#60h,out0 call clean mov r0,#73h call add1 mov a,r4 cjne a,#60h,out0 call clean mov r0,#71h call add1 mov a,r4 cjne a,#24h,out0 call clean out0: pop psw pop a setb et0 reti add1: mov a,@r0 dec r0 swap a orl a,@r0 swap a inc a da a mov r4,a anl a,#0fh inc r0 mov @r0,a mov a,r4 anl a,#0f0h swap a dec r0 mov @r0,a ret clean:mov a,#0 mov @r0,a inc r0 mov @r0,a ret scan: MOV R1,#70H mov a,#0feh mov r5,#6 mov dptr,#tab again1:PUSH a mov a,@r1 movc a,@a+dptr mov p0,a pop a mov p2,a call delay rl a inc r1 djnz r5,again1 ret TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0fFH delay:mov r6,#200 djnz r6,$ ret s1: jnb k1,$ clr tr0 mov 74h,#0h mov 75h,#0h mov r0,#70h mov a,@r0 inc r0 mov b,#10 mul ab add a,@r0 inc a cjne a,#24,s11 mov a,#0 s11: mov b,#10 div ab mov @r0,b dec r0 mov @r0,a call scan setb tr0 ret s2: jnb k2,$ clr tr0 mov 74h,#0h mov 75h,#0h mov r0,#72h mov a,@r0 inc r0 mov b,#10 mul ab add a,@r0 inc a cjne a,#60,s12 mov a,#0 s12: mov b,#10 div ab mov @r0,b dec r0 mov @r0,a call scan setb tr0 ret end
|