canapif.mac

来自「infineon C515C RTX51 example. it contain」· MAC 代码 · 共 125 行

MAC
125
字号
;-----------------------------------------------------------------------
;
;  Definition der im Modul CANAPIF.A51 ben攖igten Macros
;
;
;-----------------------------------------------------------------------


XCHR            MACRO   REG1, REG2
;; vertauscht den Inhalt von REG2 mit REG1 via A
                   MOV  A, REG2
                   XCH  A, REG1
                   MOV  REG2, A
                ENDM


; Das folgende Macro sichert die Register R3 bis R7 in den XDATA-Bereich
; ab X_ADR (INPAGE alloziert)
STORE_REGS     MACRO  X_ADR
                  MOV DPTR,#X_ADR
                  MOV A,R3
                  MOVX @DPTR,A
                  INC DPL
                  MOV A,R4
                  MOVX @DPTR,A
                  INC DPL
                  MOV A,R5
                  MOVX @DPTR,A
                  INC DPL
                  MOV A,R6
                  MOVX @DPTR,A
                  INC DPL
                  MOV A,R7
                  MOVX @DPTR,A
               ENDM


; Das folgende Macro holt die Daten ab X_ADR zur乧k in die Register
; R3 bis R7 (Inpage alloziert)
RESTORE_REGS   MACRO  X_ADR
                  MOV DPTR,#X_ADR
                  MOVX A,@DPTR
                  MOV R3,A
                  INC DPL
                  MOVX A,@DPTR
                  MOV R4,A
                  INC DPL
                  MOVX A,@DPTR
                  MOV R5,A
                  INC DPL
                  MOVX A,@DPTR
                  MOV R6,A
                  INC DPL
                  MOVX A,@DPTR
                  MOV R7,A
               ENDM


; Das folgende Macro setzt den C_ORDER_BUF (Inpage alloziert)
; f乺 die Befehls乥ergabe an den CAN-Task auf.
; ORDER ist der zu 乥ergebende Befehl, MAX_REG ist das gr攕ste R-Register,
; dass 乥ergeben werden muss :
; --> MAX_REG = 5, es werden R3, R4, R5, R6, R7 乥ergeben
; --> MAX_REG = 0, es werden keine Register 乥ergeben
SETUP_ORDER    MACRO  ORDER, MAX_REG
                  MOV     DPTR, #C_ORDER_BUF_ORDER
                  MOV     A, #ORDER
                  MOVX    @DPTR, A
                  INC     DPL
                  IF MAX_REG = 0
                     CALL    os_running_task_id
                     MOV     DPTR, #C_ORDER_BUF_ORDER+1
                     MOV     A, R7
                     MOVX    @DPTR, A
                     EXITM
                  ENDIF
                  INC     DPL
                  MOV     A, R3
                  MOVX    @DPTR, A
                  IF MAX_REG = 1
                     CALL    os_running_task_id
                     MOV     DPTR, #C_ORDER_BUF_ORDER+1
                     MOV     A, R7
                     MOVX    @DPTR, A
                     EXITM
                  ENDIF
                  INC     DPL
                  MOV     A, R4
                  MOVX    @DPTR, A
                  IF MAX_REG = 2
                     CALL    os_running_task_id
                     MOV     DPTR, #C_ORDER_BUF_ORDER+1
                     MOV     A, R7
                     MOVX    @DPTR, A
                     EXITM
                  ENDIF
                  INC     DPL
                  MOV     A, R5
                  MOVX    @DPTR, A
                  IF MAX_REG = 3
                     CALL    os_running_task_id
                     MOV     DPTR, #C_ORDER_BUF_ORDER+1
                     MOV     A, R7
                     MOVX    @DPTR, A
                     EXITM
                  ENDIF
                  INC     DPL
                  MOV     A, R6
                  MOVX    @DPTR, A
                  IF MAX_REG = 4
                     CALL    os_running_task_id
                     MOV     DPTR, #C_ORDER_BUF_ORDER+1
                     MOV     A, R7
                     MOVX    @DPTR, A
                     EXITM
                  ENDIF
                  INC     DPL
                  MOV     A, R7
                  MOVX    @DPTR, A
                  CALL    os_running_task_id
                  MOV     DPTR, #C_ORDER_BUF_ORDER+1
                  MOV     A, R7
                  MOVX    @DPTR, A
               ENDM

⌨️ 快捷键说明

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