⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wireasm.asm

📁 1线通讯协议的c51例子程序
💻 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
?PR?readowdatabit?wireasm SEGMENT CODE
;?PR?owtoggle?wireasm SEGMENT CODE
;?PR?delay_10ms?wireasm SEGMENT CODE
;PUBLIC delay_10ms
;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 + -