|
如標題如何改讀寫 8 位元,目前是讀寫 16 位元
;;;93C46 TEST
;;8051 PORT A / C
clr ck ;
clr sk ;
clr di ;
clr do ;
call ewen ;
mov temp,#00h ;
mov data0,#27h ;
mov data1,#38h ;
call write ;
call delay ;
mov temp,#00h ;
call read ;
mov a,rdata0 ;
mov a,rdata1 ;
nop ;
call ewds ;
;;---------------------------------------
ewen: ;
call comm ;
mov a,#00h ;
call opcode ;
mov a,#0c0h ;
call wybyte ;
clr ck ;
clr sk ;
clr di ;
ret ;
;;---------------------------------------
ewds: ;
call comm ;
mov a,#00h ;
call opcode ;
mov a,#00h ;
call wybyte ;
clr ck ;
clr sk ;
clr di ;
ret ;
;;---------------------------------------
comm: ;START BIT ENTER
setb ck ;
setb sk ;
clr di ;
nop ;
clr sk ;
setb di ;
nop ;
setb sk ;
ret ;
;;---------------------------------------
opcode: ;
mov r5,#02h ;
op1: ;
clr sk ;
rlc a ;
mov di,c ;
nop ;
setb sk ;
djnz r5,op1 ;
ret ;
;;---------------------------------------
wybyte: ;
mov r5,#08h ;
wb1: ;
clr sk ;
rlc a ;
mov di,c ;
nop ;
setb sk ;
nop ;
djnz r5,wb1 ;
rlc a ;
ret ;
;;---------------------------------------
delay: ;
push psw ;
clr psw.3 ;
clr psw.4 ;
mov r6,#0a0h ;
del1: ;
mov r7,#00h ;
djnz r7,$ ;
djnz r6,del1 ;
pop psw ;
ret ;
;;---------------------------------------
write: ;
call comm ;
mov a,temp ;
orl a,#40h ;
call wybyte ;
mov a,data0 ;
call wybyte ;
mov a,data1 ;
call wybyte ;
clr ck ;
clr di ;
setb ck ;
setb do ;
call delay ;
clr ck ;
ret ;
;;---------------------------------------
read: ;
call comm ;
mov a,temp ;
orl a,#80h ;
call wybyte ;
clr di ;
call rebyte ;
mov rdata0,a ;
call rebyte ;
mov rdata1,a ;
clr ck ;
ret ;
;;---------------------------------------
rebyte: ;
setb do ;
rlc a ;
mov r5,#08h ;
re1: ;
clr sk ;
nop ;
setb sk ;
nop ;
mov c,do ;
rlc a ;
djnz r5,re1 ;
ret ;
;;---------------------------------------
end ;
;;--------------------------------------- |
|