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 + -
显示快捷键?