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

📄 ps2.asm

📁 P/S 测试程序
💻 ASM
字号:
sbit  _data   = P3.4
sbit  _clock  = P3.3
sbit  _parity = 0x00

    ORG   0x0000
    AJMP  Main
Main:
    MOV   SP,     #0x60
Loop:

    MOV   A,      #0xe0
    MOV   C,      P
    CPL   C
    MOV   _parity,C   ;Init reg for parity calc
    ACALL CodeOut
    MOV   A,      #0x37
    MOV   C,      P
    CPL   C
    MOV   _parity,C   ;Init reg for parity calc
    ACALL CodeOut

    MOV   R6,     #0
De1:
    MOV   R5,     #0
    DJNZ  R5,     $
    DJNZ  R6,     De1

    MOV   A,      #0xe0
    MOV   C,      P
    CPL   C
    MOV   _parity,C   ;Init reg for parity calc
    ACALL CodeOut
    MOV   A,      #0xf0
    MOV   C,      P
    CPL   C
    MOV   _parity,C   ;Init reg for parity calc
    ACALL CodeOut
    MOV   A,      #0x37
    MOV   C,      P
    CPL   C
    MOV   _parity,C   ;Init reg for parity calc
    ACALL CodeOut

    MOV   R7,     #8
Del:
    MOV   R6,     #0
De:
    MOV   R5,     #0
    DJNZ  R5,     $
    DJNZ  R6,     De
    DJNZ  R7,     Del
    AJMP  Loop


CodeOut:
    MOV   R7,     #0x08
InhibitLoop:
    JNB   _clock, InhibitLoop ;Check for inhibit
    ACALL Delay50us           ;Delay 50 microseconds
    JNB   _clock, InhibitLoop ;Check again for inhibit
    JB    _data,  EnSend      ;Check for request-to-send
    CLR   C
    RET
EnSend:
    ;Output Start bit (0)
    CLR   C
    ACALL BitOut
    ;Output Keycode
ByteOutLoop:
    RRC   A
    ACALL BitOut
    DJNZ  R7,     ByteOutLoop
    ;Output Parity bit (odd parity)
    MOV   C,      _parity
    ACALL BitOut
    ;Output Stop bit (1)
    SETB  C
    MOV   _data,  C
    ACALL Delay20us
    CLR   _clock
    ACALL Delay370us
    SETB  _data       ;data=1
    SETB  _clock      ;clock=1
    RET

BitOut:
    MOV   _data,  C
    ACALL Delay20us
    CLR   _clock
    ACALL Delay40us
    SETB  _clock
    ACALL Delay20us
    RET

Delay370us:
    ACALL Delay50us
    ACALL Delay50us
    ACALL Delay50us
    ACALL Delay50us
    ACALL Delay50us
    ACALL Delay50us
    ACALL Delay50us
    ACALL Delay20us
    RET

Delay50us:
    ACALL Delay10us
Delay40us:
    ACALL Delay20us
    ACALL Delay20us
    RET

Delay20us:
    ACALL Delay10us
    ACALL Delay10us
    RET

Delay10us:
    NOP
    NOP
    RET

    END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -