Experimental Physics  wlsyw.com

Home Information Download About Us Comments links

 

 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

 

Home Information Download About Us Comments links

 Institute of Intelligent Machines,Chinese Academy of Sciences   Email: zlk@wlsyw.com