Experimental Physics wlsyw.com
Assembler of CPU
;List=P89C51x2 11.0592MHz SCL bit p3.1 SDA bit p3.0 OED bit p3.3 LED bit p3.7 add1 equ 21h add2 equ 22h adds equ 23h ;sdt0 equ 24h sdt1 equ 25h;1-8=b'11111111' addq equ 26h addh equ 27h new1 equ 2fh new2 equ 30h new3 equ 31h old1 equ 32h old2 equ 33h old3 equ 34h dif1 equ 35h;new-old=cycle dif2 equ 36h dif3 equ 37h; ;sdt0.0=1 start cumulative data ;38h-0add 39h-1add 3ah-2add 3bh-3add ;3ch-4add 3dh-5add 3eh-6add 3fh-7add ;40h-43h;44h-47h;48h-4bh;4ch-4fh ;50h-53h;54h-57h;58h-5bh;5ch-5fh ;************************************************* org 0000h jmp start org 0003h nop nop jmp pulse db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h, jmp main ;************************************************ org 0050h start: nop nop call delay100ms mov r0,#128 cclr: mov @r0,#0 djnz r0,cclr mov sp,#65h mov add1,#00 mov add2,#00 call sta ;Test 24c512 mov a,#0a0h call wbyte call ack mov c,F0 mov LED,c jc start call sto mov r2,#180 ;Wait roate: nop nop mov a,p3 swap a anl a,#00000111b cjne a,adds,rot1 jmp roate rot1: mov adds,a djnz r2,roate nop call clear_24c512 nop jmp main ;************************************************ delay100ms: mov r2,#120 mov r3,#150 delay2:nop nop djnz r3,delay2 nop djnz r2,delay2 nop ret
;***********************Interrupted program pulse: nop nop push psw push acc push b mov a,p3 swap a anl a,#00000111b mov addq,a;Address clr OED clr OED clr LED nop nop mov a,p1 mov new3,a mov a,p0 mov new2,a mov a,p2 mov new1,a nop setb OED setb OED nop clr c mov a,new3 subb a,old3 mov dif3,a mov a,new2 subb a,old2 mov dif2,a mov a,new1 subb a,old1 mov dif1,a mov old3,new3 ;Updata mov old2,new2 mov old1,new1 ; ti101: nop nop mov a,adds nop cjne a,#0,ti102 ;0-address adder mov a,38h cjne a,#128,t1_1 setb sdt1.0 jmp ti_end t1_1: inc 38h clr c mov a,43h addc a,dif3 mov 43h,a mov a,42h addc a,dif2 mov 42h,a mov a,41h addc a,dif1 mov 41h,a mov a,40h addc a,#00h mov 40h,a nop jmp ti_end
ti102: nop nop cjne a,#1,ti103 ;1-address adder mov a,39h cjne a,#128,t2_1 setb sdt1.1 jmp ti_end t2_1: inc 39h clr c mov a,47h addc a,dif3 mov 47h,a mov a,46h addc a,dif2 mov 46h,a mov a,45h addc a,dif1 mov 45h,a mov a,44h addc a,#00h mov 44h,a nop jmp ti_end
ti103: nop nop cjne a,#2,ti104 ;2-address adder mov a,3ah cjne a,#128,t3_1 setb sdt1.2 jmp ti_end t3_1: inc 3ah clr c mov a,4bh addc a,dif3 mov 4bh,a mov a,4ah addc a,dif2 mov 4ah,a mov a,49h addc a,dif1 mov 49h,a mov a,48h addc a,#00h mov 48h,a jmp ti_end
ti104: nop nop cjne a,#3,ti105 ;3-address adder mov a,3bh cjne a,#128,t4_1 setb sdt1.3 jmp ti_end t4_1: inc 3bh clr c mov a,4fh addc a,dif3 mov 4fh,a mov a,4eh addc a,dif2 mov 4eh,a mov a,4dh addc a,dif1 mov 4dh,a mov a,4ch addc a,#00h mov 4ch,a jmp ti_end
ti105: nop nop cjne a,#4,ti106 ;4-address adder mov a,3ch cjne a,#128,t5_1 setb sdt1.4 jmp ti_end t5_1: inc 3ch clr c mov a,53h addc a,dif3 mov 53h,a mov a,52h addc a,dif2 mov 52h,a mov a,51h addc a,dif1 mov 51h,a mov a,50h addc a,#00h mov 50h,a jmp ti_end
ti106: nop nop cjne a,#5,ti107 ;5-address adder mov a,3dh cjne a,#128,t6_1 setb sdt1.5 jmp ti_end t6_1: inc 3dh clr c mov a,57h addc a,dif3 mov 57h,a mov a,56h addc a,dif2 mov 56h,a mov a,55h addc a,dif1 mov 55h,a mov a,54h addc a,#00h mov 54h,a jmp ti_end
ti107: nop nop cjne a,#6,ti108 ;6-address adder mov a,3eh cjne a,#128,t7_1 setb sdt1.6 jmp ti_end t7_1: inc 3eh clr c mov a,5bh addc a,dif3 mov 5bh,a mov a,5ah addc a,dif2 mov 5ah,a mov a,59h addc a,dif1 mov 59h,a mov a,58h addc a,#00h mov 58h,a jmp ti_end
ti108: nop nop cjne a,#7,ti109 ;7-address adder mov a,3fh cjne a,#128,t8_1 setb sdt1.7 jmp ti_end t8_1: inc 3fh clr c mov a,5fh addc a,dif3 mov 5fh,a mov a,5eh addc a,dif2 mov 5eh,a mov a,5dh addc a,dif1 mov 5dh,a mov a,5ch addc a,#00h mov 5ch,a jmp ti_end ti109: ti_end:nop setb LED t_end:nop nop jnb p3.2,t_end nop jnb p3.2,t_end mov adds,#50 mov a,p3 swap a anl a,#00000111b mov addh,a cjne a,addq,dz10 mov adds,a dz10: nop pop b pop acc pop psw nop nop reti reti ; ;*************************************************** nop main: nop nop mov sp,#65h mov p3,#0ffh mov p2,#0ffh mov p1,#0ffh mov p0,#0ffh nop mov b,#40 mov r0,#38h clram: nop mov @r0,#00h inc r0 djnz b,clram mov sdt1,#00h nop mov IE,#10000001b
nex1: nop nop nop mov a,sdt1 nop nop cjne a,#0ffh,nex1 nop nop call w_32byt nop clr c mov a,add2 addc a,#32 mov add2,a mov a,add1 addc a,#0 mov add1,a nop nop jmp main jmp main ;************************************************ rw32b:nop call sto mov r2,#255 djnz r2,$ nop w_32byt:nop clr LED call sta mov a,#0a0h call wbyte call ack jb F0,rw32b mov a,add1; call wbyte call ack jb F0,rw32b mov a,add2; call wbyte call ack jb F0,rw32b mov r0,#40h mov r2,#32 write: nop mov a,@r0 call wbyte call ack jb F0,rw32b inc r0 djnz r2,write call sto setb LED nop ret ;********************************** wbyte: nop ;write a byte mov b,#08 writ: rlc a mov SDA,c nop setb SCL nop nop clr SCL djnz b,writ ret rbyte: nop ;Read a byte mov b,#08 setb SDA read: nop setb SCL nop nop mov c,SDA rlc a clr SCL djnz b,read ret ; sta: setb SDA setb SCL nop nop clr SDA nop nop clr SCL nop ret ack: setb SDA setb SCL nop nop nop mov c,SDA mov F0,c nop clr SCL nop ret ;mack: clr SDA setb SCL nop nop clr SCL nop nop ret ;nack: setb SDA nop setb SCL nop nop clr SCL nop ret sto: nop clr SDA nop nop nop setb SCL nop nop nop setb SDA nop ret ;*************************************** ;All byte =0FFH in 24C512 clear_24c512: nop nop cl_24:nop nop call w_128byt nop mov r2,#175 ;Delay 200us djnz r2,$ nop clr c mov a,add2 addc a,#128 anl a,#10000000b mov add2,a mov a,add1 addc a,#0 mov add1,a nop mov a,add1 jnz cl_24 mov a,add2 jnz cl_24 mov add1,#00h mov add2,#00h nop ret ret
rw128:nop call sto mov r2,#150 djnz r2,$ w_128byt: call sta mov a,#0a0h call wbyte call ack jb F0,rw128 mov a,add1;Address of pages call wbyte call ack jb F0,rw128 mov a,add2;Address in page call wbyte call ack jb F0,rw128 mov r2,#128 w_byt: nop mov a,#0ffh call wbyte call ack jb F0,rw128 nop djnz r2,w_byt call sto nop ret ret ;****************************************** end
Zhan, Li Kui 2007.6.18