macros.inc

来自「usb serial converter」· INC 代码 · 共 203 行

INC
203
字号
;****************************************************************
; MACRO: JNE
;****************************************************************

MACRO       JNE destination

    jnz     destination                     ; [5/4]

ENDM

;****************************************************************
; MACRO: JEQ
;****************************************************************

MACRO       JEQ destination

    jz      destination                     ; [5/4]

ENDM

;****************************************************************
; MACRO: DISABLE_SE0
;****************************************************************

MACRO   DISABLE_SE0

    mov     A, 10h                          ;
    iowr    F2h                             ;

ENDM

;****************************************************************
; MACRO: CLR_C
;****************************************************************

MACRO   CLR_C

    add     A, 00h                          ;

ENDM


;****************************************************************
; MACRO: 4_CYCLE_DELAY
;****************************************************************

MACRO       4_CYCLE_DELAY

    nop                                     ; [4]

ENDM

;****************************************************************
; MACRO: 5_CYCLE_DELAY
;****************************************************************

MACRO       5_CYCLE_DELAY

    cmp     A, 00h                          ; [5]

ENDM

;****************************************************************
; MACRO: 6_CYCLE_DELAY
;****************************************************************

MACRO       6_CYCLE_DELAY

    or      A, [00h]                        ; [6]

ENDM

;****************************************************************
; MACRO: 7_CYCLE_DELAY
;****************************************************************

MACRO       7_CYCLE_DELAY

    cmp     A, [00h]                        ; [7]

ENDM

;****************************************************************
; MACRO: 8_CYCLE_DELAY
;****************************************************************

MACRO       8_CYCLE_DELAY

    cmp     A, [X + 0]                      ; [8]

ENDM

;****************************************************************
; MACRO: BIT_DELAY
;****************************************************************

MACRO       BIT_DELAY

    mov     A, [bit_rate]                   ; [5]     
    or      A, 00h                          ; [4]     
    jz      Bd_Exit                         ; [5/4]   

    ; This loop has to be 104 cycles.
Bd_Loop:
    iowr    WDT                             ; [5]
    call    50_Cycle_Delay                  ; [50]
    call    22_Cycle_Delay                  ; [22]
    call    18_Cycle_Delay                  ; [18]
    dec     A                               ; [4]
    jnz     Bd_Loop                         ; [5/4]

Bd_Exit:

ENDM

;****************************************************************
; MACRO: HALF_BIT_DELAY
;****************************************************************

MACRO       HALF_BIT_DELAY

    mov     A, [bit_rate]                   ; [5]     
    or      A, 00h                          ; [4]     
    jz      Hbd_Exit                        ; [5/4]   

    ; This loop has to be 52 cycles.
Hbd_Loop:
    iowr    WDT                             ; [5]
    call    38_Cycle_Delay                  ; [26]
    dec     A                               ; [4]
    jnz     Hbd_Loop                        ; [5/4]
    
Hbd_Exit:
ENDM

;****************************************************************
; MACRO: QUARTER_BIT_DELAY
;****************************************************************

MACRO       QUARTER_BIT_DELAY

    mov     A, [bit_rate]                   ; [5]     
    or      A, 00h                          ; [4]     
    jz      Qbd_Exit                        ; [5/4]   

    ; This loop has to be 26 cycles.
Qbd_Loop:
    iowr    WDT                             ; [5]
    6_CYCLE_DELAY                           ; [6]
    6_CYCLE_DELAY                           ; [6]
    dec     A                               ; [4]
    jnz     Qbd_Loop                        ; [5/4]
    
Qbd_Exit:
ENDM

;****************************************************************
; MACRO: EIGHTH_BIT_DELAY
;****************************************************************

MACRO       EIGHTH_BIT_DELAY

    mov     A, [bit_rate]                   ; [5]     
    or      A, 00h                          ; [4]     
    jz      Ebd_Exit                        ; [5/4]   

    ; This loop has to be 13 cycles.
Ebd_Loop:
    4_CYCLE_DELAY                           ; [4]
    dec     A                               ; [4]
    jnz     Ebd_Loop                        ; [5/4]
    
Ebd_Exit:
ENDM


;****************************************************************
; MACRO: BEGIN_JUMP_TABLE
;****************************************************************

MACRO   BEGIN_JUMP_TABLE

IF ($ & 0001h)

    ORG     (($ & FFFEh) + 2)

ENDIF

XPAGEOFF

ENDM

;****************************************************************
; MACRO: END_JUMP_TABLE
;****************************************************************

MACRO   END_JUMP_TABLE

XPAGEON

ENDM

⌨️ 快捷键说明

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