;calculator&timer ;cal(3*1.2.3-2*1.2.3-1*1.2.3) ;time=0 ;mul(3*3) ;seg be off if no digit ;don't need key for calculator org 0h ljmp main org 013h ;int1 lcall function reti org 00bh ;timer0,counter lcall counter reti org 01bh ;timer1,timer lcall timer reti ;.............................. n0 equ 31h n1 equ 32h n2 equ 33h w0 equ 34h m0 equ 35h m1 equ 36h m2 equ 37h x equ 38h k1 equ 3ah k2 equ 3bh k3 equ 3ch bi0 equ 40h bi1 equ 41h bi2 equ 42h bi3 equ 43h h0 equ 4ah h1 equ 4bh h2 equ 4ch h3 equ 4dh h4 equ 4eh 7seg0 equ 50h 7seg1 equ 51h 7seg2 equ 52h 7seg3 equ 53h o0 equ 55h o1 equ 56h o2 equ 57h o3 equ 58h fk1 equ 7ah fk2 equ 7bh fk3 equ 7ch fk4 equ 7dh u1 equ 60h u2 equ 61h u3 equ 62h u4 equ 63h u5 equ 64h u6 equ 65h u7 equ 66h u8 equ 67h u9 equ 68h u10 equ 69h u11 equ 6ah u12 equ 6bh ;................................... org 030h main: mov n0,#0 mov n1,#0 mov n2,#0 mov w0,#0 mov m0,#0 mov m1,#0 mov m2,#0 mov x,#0 mov k1,#0 mov k2,#0 mov k3,#0 mov bi0,#0 mov bi1,#0 mov bi2,#0 mov bi3,#0 mov h0,#0 mov h1,#0 mov h2,#0 mov h3,#0 mov h4,#0 mov 7seg0,#0 mov 7seg1,#0 mov 7seg2,#0 mov 7seg3,#0 mov o0,#0 mov o1,#0 mov o2,#0 mov o3,#0 mov fk1,#0 mov fk2,#0 mov fk3,#0 mov u1,#0 mov u2,#0 mov u3,#0 mov u4,#0 mov u5,#0 mov u6,#0 mov u7,#0 mov u8,#0 mov u9,#0 mov u10,#0 mov u11,#0 mov u12,#0 setb p3.7 setb p3.6 setb p3.5 mov ie,#10000100b setb it0 mov bi0,#0ah mov bi1,#0ah mov bi2,#0ah mov bi3,#0ah mov n0,#0ah mov n1,#0ah mov n2,#0ah mov w0,#0 mov m0,#0ah mov m1,#0ah mov m2,#0ah mov x,#0 mov k1,#0 mov k2,#0 mov k3,#0 mov h0,#0 mov h1,#0 mov h2,#0 mov h3,#0 mov h4,#0 mov u1,#0 mov u2,#0 mov u3,#0 mov u4,#0 mov u5,#0 mov u6,#0 mov u7,#0 mov u8,#0 mov u9,#0 mov u10,#0 mov u11,#0 mov u12,#0 mov r0,#n0 ;setb it0 ;mov ie,#10001010b ;mov tmod,#00010110b ;mov tl1,#0f0h ;mov th1,#0d8h ;mov tl0,#09ch ;mov th0,#09ch ;setb tr0 ;setb tr1 ;mov r0,#n0 up: mov p2,#11110000b lcall 7segment lcall display sjmp up display: mov p0,7seg0 mov p1,#00000111b lcall delay0 mov p0,7seg1 mov p1,#00001011b lcall delay0 mov p0,7seg2 mov p1,#00001101b lcall delay0 mov p0,7seg3 mov p1,#00001110b lcall delay0 ret 7segment: mov dptr,#number mov a,bi3 movc a,@a+dptr mov 7seg3,a mov a,bi2 movc a,@a+dptr mov 7seg2,a mov a,bi1 movc a,@a+dptr mov 7seg1,a mov a,bi0 movc a,@a+dptr mov 7seg0,a ret key: jnb p3.7,kk1 jnb p3.6,kk2 ljmp end0 kk1:jnb p3.7,kk1 mov ie,#10000100b setb it0 mov bi0,#0ah mov bi1,#0ah mov bi2,#0ah mov bi3,#0ah mov n0,#0ah mov n1,#0ah mov n2,#0ah mov w0,#0 mov m0,#0ah mov m1,#0ah mov m2,#0ah mov x,#0 mov k1,#0 mov k2,#0 mov k3,#0 mov h0,#0 mov h1,#0 mov h2,#0 mov h3,#0 mov h4,#0 mov u1,#0 mov u2,#0 mov u3,#0 mov u4,#0 mov u5,#0 mov u6,#0 mov u7,#0 mov u8,#0 mov u9,#0 mov u10,#0 mov u11,#0 mov u12,#0 mov r0,#n0 sjmp end0 kk2:jnb p3.6,kk2 mov ie,#10001010b mov bi0,#0 mov bi1,#0 mov bi2,#0 mov bi3,#0 mov o0,#0 mov o1,#0 mov o2,#0 mov o3,#0 sjmp end0 end0:nop ret keyboard: mov p2,#0ffh clr p2.0 jb p2.4,s2.1 mov r2,#0ah ;f1 ljmp eedd s2.1:jb p2.5,s3.1 mov r2,#1 ;1 ljmp eedd s3.1:jb p2.6,s4.1 mov r2,#2 ;2 ljmp eedd s4.1:jb p2.7,s1.2 mov r2,#3 ;3 ljmp eedd s1.2:setb p2.0 clr p2.1 jb p2.4,s2.2 mov r2,#0bh ;f2 ljmp eedd s2.2:jb p2.5,s3.2 mov r2,#4 ;4 ljmp eedd s3.2:jb p2.6,s4.2 mov r2,#5 ;5 ljmp eedd s4.2:jb p2.7,s1.3 mov r2,#6 ;6 ljmp eedd s1.3:setb p2.1 clr p2.2 jb p2.4,s2.3 mov r2,#0ch ;f3 ljmp eedd s2.3:jb p2.5,s3.3 mov r2,#7 ;7 ljmp eedd s3.3:jb p2.6,s4.3 mov r2,#8 ;8 ljmp eedd s4.3:jb p2.7,s1.4 mov r2,#9 ;9 ljmp eedd s1.4:setb p2.2 clr p2.3 jb p2.4,s2.4 mov r2,#0dh ;stop ljmp eedd s2.4:jb p2.5,s3.4 mov r2,#0eh ;start ljmp eedd s3.4:jb p2.6,s4.4 mov r2,#0 ;0 ljmp eedd s4.4:jb p2.7,eed mov r2,#0fh ;enter ljmp eedd eedd:jnb p3.3,eedd ret eed:reti function: lcall keyboard clr c cjne r0,#w0,downn mov w0,r2 ;mov b,r2 ;mov r6,b inc r0 mov bi3,#0ah mov bi2,#0ah mov bi1,#0ah mov bi0,#0ah ljmp ee downn:jnc downm clr c cjne r2,#10,ooo0 ggg0:mov w0,r2 mov r0,#m0 mov bi3,#0ah mov bi2,#0ah mov bi1,#0ah mov bi0,#0ah ljmp ee ooo0:jnc ggg0 mov n2,n1 mov n1,n0 mov n0,r2 inc r0 mov bi2,n2 mov bi1,n1 mov bi0,n0 ljmp ee downm:clr c cjne r0,#x,downm0 lcall funct mov bi3,h3 mov bi2,h2 mov bi1,h1 mov bi0,h0 lcall continue ljmp ee downm0:clr c cjne r2,#10,ooo1 ggg1: mov r0,#x lcall funct mov bi3,h3 mov bi2,h2 mov bi1,h1 mov bi0,h0 ljmp ee ooo1:jnc ggg1 mov m2,m1 mov m1,m0 mov m0,r2 inc r0 mov bi2,m2 mov bi1,m1 mov bi0,m0 ee:nop ret continue: mov bi0,#0ah mov bi1,#0ah mov bi2,#0ah mov bi3,#0ah mov n0,#0ah mov n1,#0ah mov n2,#0ah mov w0,#0 mov m0,#0ah mov m1,#0ah mov m2,#0ah mov x,#0 mov k1,#0 mov k2,#0 mov k3,#0 mov h0,#0 mov h1,#0 mov h2,#0 mov h3,#0 mov h4,#0 mov u1,#0 mov u2,#0 mov u3,#0 mov u4,#0 mov u5,#0 mov u6,#0 mov u7,#0 mov u8,#0 mov u9,#0 mov u10,#0 mov u11,#0 mov u12,#0 mov r0,#n0 lcall function ret funct: mov r7,w0 clr c cjne r7,#0ah,fun0 lcall addition ljmp ed fun0:clr c cjne r7,#0bh,fun1 lcall subtract ljmp ed fun1:clr c cjne r7,#0ch,fun2 lcall multiply ljmp ed fun2:clr c cjne r7,#0dh,fun3 lcall division ljmp ed fun3:mov h0,#0 mov h1,#0 mov h2,#0 mov h3,#0 ed:nop ret addition: lcall xx clr c mov a,n0 mov r7,m0 add a,r7 mov b,#10 div ab mov h0,b mov r3,a clr c mov a,n1 mov r7,m1 add a,r7 clr c add a,r3 mov b,#10 div ab mov h1,b mov r3,a clr c mov a,n2 mov r7,m2 add a,r7 clr c add a,r3 mov h2,a ret subtract: lcall xx mov a,n0 mov r7,m0 cjne a,m0,sub0 mov h0,#0 sjmp sub2 sub0:jnc sub3 mov r6,n1 cjne r6,#0,sub4 mov n1,#9h dec n2 add a,#10 sjmp sub3 sub4:dec n1 add a,#10 sub3:clr c subb a,r7 mov h0,a sub2:mov a,n1 mov r7,m1 cjne a,m1,sub5 mov h1,#0 sjmp sub6 sub5:jnc sub7 dec n2 add a,#10 sub7:clr c subb a,r7 mov h1,a sub6:mov a,n2 mov r7,m2 clr c subb a,r7 mov h2,a ret division: lcall xx mov a,n2 mov b,#10 mul ab add a,n1 mov k1,a mov a,m2 mov b,#10 mul ab add a,m1 mov k2,a mov a,k1 mov b,k2 div ab mov b,#10 div ab mov h1,b mov h2,a mov h0,#0 ret multiply: lcall xx mov a,n0 mov b,m0 mul ab mov b,#10 div ab mov u1,b mov r3,a mov a,n1 mov b,m0 mul ab add a,r3 mov b,#10 div ab mov u2,b mov r3,a mov a,n2 mov b,m0 mul ab add a,r3 mov b,#10 div ab mov u3,b mov u10,a mov a,n0 mov b,m1 mul ab mov b,#10 div ab mov u4,b mov r3,a mov a,n1 mov b,m1 mul ab add a,r3 mov b,#10 div ab mov u5,b mov r3,a mov a,n2 mov b,m1 mul ab add a,r3 mov b,#10 div ab mov u6,b mov u11,a mov a,n0 mov b,m2 mul ab mov b,#10 div ab mov u7,b mov r3,a mov a,n1 mov b,m2 mul ab add a,r3 mov b,#10 div ab mov u8,b mov r3,a mov a,n2 mov b,m2 mul ab add a,r3 mov b,#10 div ab mov u9,b mov u12,a mov h0,u1 mov a,u2 add a,u4 mov b,#10 div ab mov h1,b mov r3,a mov a,u3 add a,u5 add a,u7 add a,r3 mov b,#10 div ab mov h2,b mov r3,a mov a,u10 add a,u6 add a,u8 add a,r3 mov b,#10 div ab mov h3,b mov r3,a mov a,u11 add a,u9 add a,r3 mov b,#10 div ab mov h4,b mov a,h1 mov h0,a mov a,h2 mov h1,a mov a,h3 mov h2,a mov a,h4 mov h3,a ret timer: clr tr1 clr p3.5 mov tl1,#0f0h mov th1,#0d8h setb tr1 setb p3.5 ret counter: clr tr0 lcall clock setb tr0 ret clock: inc o0 mov r3,o0 cjne r3,#10,z1 sjmp z3 z1:ljmp fil z3:mov o0,#0 inc o1 mov r3,o1 cjne r3,#6,z4 sjmp z5 z4:ljmp fil z5:mov o1,#0 inc o2 mov r3,o2 cjne r3,#10,z6 sjmp z7 z6:ljmp fil z7:mov o2,#0 inc o3 mov r3,o3 cjne r3,#6,z8 sjmp z9 z8:ljmp fil z9:mov o0,#0 mov o1,#0 mov o2,#0 mov o3,#0 fil: mov bi3,o3 mov bi2,o2 mov bi1,o1 mov bi0,o0 ret xx: mov r4,n0 cjne r4,#10,nr1 mov n0,#0 nr1:mov r4,n1 cjne r4,#10,nr2 mov n1,#0 nr2:mov r4,n2 cjne r4,#10,nr3 mov n2,#0 nr3:mov r4,m0 cjne r4,#10,nr5 mov m0,#0 nr5:mov r4,m1 cjne r4,#10,nr6 mov m1,#0 nr6:mov r4,m2 cjne r4,#10,nr7 mov m2,#0 nr7:clr c ret delay0: mov fk1,#33h mm:mov fk2,#104h nn:djnz fk2,nn lcall key djnz fk1,mm ret number: db 3fh,6h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fh,80h,80h,80h,80h,80h end