?? wireasm.asm
字號:
NAME wireasm
;?PR?_usDelay1?wireasm SEGMENT CODE
;?PR?_usDelay2?wireasm SEGMENT CODE
?PR?_docrc8?wireasm SEGMENT CODE
?PR?ow_reset?wireasm SEGMENT CODE
?PR?writedatalow?wireasm SEGMENT CODE
?PR?writedatahigh?wireasm SEGMENT CODE
;PUBLIC delay_10ms
?PR?readowdatabit?wireasm SEGMENT CODE
;?PR?owtoggle?wireasm SEGMENT CODE
;?PR?delay_10ms?wireasm SEGMENT CODE
;PUBLIC owtoggle
PUBLIC readowdatabit
PUBLIC _docrc8
PUBLIC ow_reset
PUBLIC writedatalow
PUBLIC writedatahigh
;rseg ?PR?delay_10ms?wireasm
;delay_10ms:
; mov r6,#19
;delay_10msloop1:
; mov r7,#0fah
; djnz r7,$
; djnz r6,delay_10msloop1
; ret
;rseg ?PR?owtoggle?wireasm
;owtoggle:
; setb P1.2 ;d/clk
; setb P1.3 ;reset
; mov r7,#30
; djnz r7,$
; setb P1.0
; setb P1.1
;clr P1.2
; clr P1.3
;mov r7,#30
; djnz r7,$
; clr P1.0
; call delay_10ms
; ret
rseg ?PR?readowdatabit?wireasm
readowdatabit:
clr P1.2 ;wdata
clr P1.3 ;reset
mov r7,#30
djnz r7,$
setb P1.0
setb P1.1
setb P1.2 ;wdata
setb P1.3 ;wdata
mov r7,#30
djnz r7,$
clr P1.0 ;owen
nop
nop
mov r7,#0ffh
readowdatabit_loop:
jnb P1.1,readowdatabit_cntu
djnz r7,readowdatabit_loop
sjmp readowdatabit_err
readowdatabit_cntu:
;jnb P1.1,$
mov r7,#30
readowdatabitloop3:
jb P1.1,readowdatabitclrwd
djnz r7,readowdatabitloop3
setb P1.1
nop
nop
readowdatabitclrwd:
clr P1.2
nop
nop
mov r7,#30
readowdatabitloop2:
jnb P1.1,readowdatabit_low
djnz r7,readowdatabitloop2
mov r7,#01h
sjmp readowdatabit_rtn
readowdatabit_low:
mov r7,#00h ;return value in r7
sjmp readowdatabit_rtn
readowdatabit_err:
mov r7,#0ffh ;flag=0ffh represent error
readowdatabit_rtn:
setb P1.0 ;disable chip select
RET
rseg ?PR?writedatalow?wireasm
writedatalow:
setb P2.0
setb P2.1
setb P2.2
setb P1.2 ;wdata
clr P1.3 ;reset
mov r7,#30
djnz r7,$
setb P1.0 ;owen
clr P1.2 ;wdata
setb P1.3 ;reset
mov r7,#30
djnz r7,$
clr P1.0
nop
nop
mov r7,#0ffh
writedatalow_bh:
jnb P1.1,wrtdtlow_cntu
djnz r7,writedatalow_bh
sjmp writedatalow_err
wrtdtlow_cntu:
clr P2.0 ;just for test
mov r7,#30
writedatalowloop3:
jb P1.1,writedatalowclrwd
djnz r7,writedatalowloop3
setb P1.1
nop
nop
writedatalowclrwd:
clr P2.1
clr P1.2
nop
nop
mov r7,#0ffh
writedatalowloop2:
jnb P1.1,wrdtl_success
djnz r7,writedatalowloop2
sjmp writedatalow_err
wrdtl_success:
clr P2.2
mov r7,#01h
sjmp writedatalow_rtn
writedatalow_err:
mov r7,#00h
writedatalow_rtn:
setb P1.0 ;disable chip select
; mov r6,#50
; djnz r6,$ ;add delay time
ret
rseg ?PR?writedatahigh?wireasm
writedatahigh:
clr P1.3 ;reset
mov r7,#30
djnz r7,$
setb P1.0
setb P1.1
setb P1.2
setb P1.3
mov r7,#30
djnz r7,$
clr P1.0
nop
nop
mov r7,#0ffh
writedatahigh_bh:
jnb P1.1,wrtdthi_cntu
djnz r7,writedatahigh_bh
sjmp writedatahigh_err
wrtdthi_cntu:
mov r7,#30
writedatahighloop3:
jb P1.1,writedatahighclrda
djnz r7,writedatahighloop3
setb P1.1
nop
nop
writedatahighclrda:
clr P1.2
nop
nop
mov r7,#100
writedatahighloop2:
jb P1.1,wrdthi_success
djnz r7,writedatahighloop2
sjmp writedatahigh_err
wrdthi_success:
mov r7,#01h ;write success;
sjmp writedatahigh_end
writedatahigh_err:
mov r7,#00h
writedatahigh_end:
mov r6,#50
djnz r6,$
setb P1.0 ;disable chip select
ret
rseg ?PR?ow_reset?wireasm
ow_reset:
clr P1.2
mov r7,#30
djnz r7,$
setb P1.5 ;turn off led
setb P1.3
setb P1.0 ;p1.0=owen
setb P1.1
setb P1.2 ;P1.2=wdata
mov r7,#30
djnz r7,$
clr P1.3 ;P1.3=reset
nop
nop
clr P1.0 ;enable=P1.0
mov r7,#30
djnz r7,$
setb P1.3
mov r7,#0ffh
ow_resetloop1:
jnb P1.1,LedLow
djnz r7,ow_resetloop1
sjmp reset_error
LedLow:
clr P2.0
mov r7,#0ffh
ow_resetloop3:
jb P1.1,ow_resetclrda
djnz r7,ow_resetloop3
setb P1.1
nop
nop
;jnb P1.1,$
ow_resetclrda:
clr P1.2
clr P2.1
mov r7,#0ffh
ow_resetloop2:
jnb P1.1,reset_success
djnz r7,ow_resetloop2
sjmp reset_error
reset_success:
clr P2.2
mov r7,#00h
sjmp ow_resetend
reset_error:
mov r7,#01h
ow_resetend:
setb P1.0 ;disable chip select
ret
rseg ?PR?_docrc8?wireasm
_docrc8:
mov a,r5
xrl a,r7
mov dptr,#dscrc_table8
movc a,@a+dptr
mov r7,a
ret
dscrc_table8:
db 0, 94,188,226, 97, 63,221,131,194,156,126, 32,163,253, 31, 65
db 157,195, 33,127,252,162, 64, 30, 95, 1,227,189, 62, 96,130,220
db 35,125,159,193, 66, 28,254,160,225,191, 93, 3,128,222, 60, 98
db 190,224, 2, 92,223,129, 99, 61,124, 34,192,158, 29, 67,161,255
db 70, 24,250,164, 39,121,155,197,132,218, 56,102,229,187, 89, 7
db 219,133,103, 57,186,228, 6, 88, 25, 71,165,251,120, 38,196,154
db 101, 59,217,135, 4, 90,184,230,167,249, 27, 69,198,152,122, 36
db 248,166, 68, 26,153,199, 37,123, 58,100,134,216, 91, 5,231,185
db 140,210, 48,110,237,179, 81, 15, 78, 16,242,172, 47,113,147,205
db 17, 79,173,243,112, 46,204,146,211,141,111, 49,178,236, 14, 80
db 175,241, 19, 77,206,144,114, 44,109, 51,209,143, 12, 82,176,238
db 50,108,142,208, 83, 13,239,177,240,174, 76, 18,145,207, 45,115
db 202,148,118, 40,171,245, 23, 73, 8, 86,180,234,105, 55,213,139
db 87, 9,235,181, 54,104,138,212,149,203, 41,119,244,170, 72, 22
db 233,183, 85, 11,136,214, 52,106, 43,117,151,201, 74, 20,246,168
db 116, 42,200,150, 21, 75,169,247,182,232, 10, 84,215,137,107, 53
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -