📄 mac-common.s51
字号:
// 55 &dmaChannelConfiguration);
; Setup parameters for call to function FetchDmaChannelConfiguration
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R2,DPL
MOV R3,DPH
MOV R1,#0x3
LCALL FetchDmaChannelConfiguration
// 56 dmaChannelConfiguration->srcMsb = HIBYTE(source);
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
MOV A,R7
MOVX @DPTR,A
// 57 dmaChannelConfiguration->srcLsb = LOBYTE(source);
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
MOV A,R6
MOVX @DPTR,A
// 58 dmaChannelConfiguration->destMsb = HIBYTE(destination);
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
MOV A,?V0 + 1
MOVX @DPTR,A
// 59 dmaChannelConfiguration->destLsb = LOBYTE(destination);
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
MOV A,?V0 + 0
MOVX @DPTR,A
// 60 dmaChannelConfiguration->lenMsb = USE_LEN;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
CLR A
MOVX @DPTR,A
// 61 dmaChannelConfiguration->lenLsb = noOfBytes;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,?V0 + 2
MOVX @DPTR,A
// 62 dmaChannelConfiguration->wsizeTmodeTrigger = BYTE_TRANSFER + TRANSFER_MODE_BLOCK;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#0x20
MOVX @DPTR,A
// 63 dmaChannelConfiguration->incIrqM8Pri = SRC_INC_ONE_BYTE +
// 64 DST_INC_ONE_BYTE +
// 65 DMA_IRQ_DISABLE +
// 66 DMA_8_BIT_TRANSFER_COUNT +
// 67 DMA_PRIORITY_HIGH;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#0x52
MOVX @DPTR,A
// 68
// 69 StartDma(DMA_CHANNEL_NO_3);
; Setup parameters for call to function StartDma
MOV R1,#0x3
LCALL StartDma
// 70 ENABLE_GLOBAL_INT();
SETB 0xa8.7
// 71 }
// 72 }
??DmaMemcpy_1:
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
MOV R7,#0x4
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 73
// 74 //-------------------------------------------------------------------------------------------------------
// 75 //
// 76 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 77 ROOT void DmaWriteFrameToTxFifo(FRAME *frame)
DmaWriteFrameToTxFifo:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function DmaWriteFrameToTxFifo
// 78 {
FUNCALL DmaWriteFrameToTxFifo, FetchDmaChannelConfiguration
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
FUNCALL DmaWriteFrameToTxFifo, StartDma
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
MOV A,#-0x8
LCALL ?FUNC_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 8)
; Saved register size: 8
; Auto size: 2
MOV A,#-0x2
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 10)
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
// 79 DMA_CHANNEL_CONFIGURATION *dmaChannelConfiguration;
// 80
// 81 DISABLE_GLOBAL_INT();
CLR 0xa8.7
// 82 while (DMAARM & DMA_CHANNEL_NO_3);
??DmaWriteFrameToTxFifo_0:
MOV A,#0x3
ANL A,0xd6
JNZ ??DmaWriteFrameToTxFifo_0
// 83
// 84 FetchDmaChannelConfiguration (DMA_CHANNEL_NO_3,
// 85 &dmaChannelConfiguration);
; Setup parameters for call to function FetchDmaChannelConfiguration
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R2,DPL
MOV R3,DPH
MOV R1,#0x3
LCALL FetchDmaChannelConfiguration
// 86 dmaChannelConfiguration->srcMsb = HIBYTE(frame);
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
MOV A,R7
MOVX @DPTR,A
// 87 dmaChannelConfiguration->srcLsb = LOBYTE(frame);
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
MOV A,R6
MOVX @DPTR,A
// 88 dmaChannelConfiguration->destMsb = HIBYTE(&X_RFD);
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
MOV A,#-0x21
MOVX @DPTR,A
// 89 dmaChannelConfiguration->destLsb = LOBYTE(&X_RFD);
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
MOV A,#-0x27
MOVX @DPTR,A
// 90 dmaChannelConfiguration->lenMsb = USE_FIRST_BYTE_AS_LEN;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#0x20
MOVX @DPTR,A
// 91 dmaChannelConfiguration->lenLsb = aMaxPHYPacketSize + FRAME_LENGTH_SIZE;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#-0x80
MOVX @DPTR,A
// 92 dmaChannelConfiguration->wsizeTmodeTrigger = BYTE_TRANSFER + TRANSFER_MODE_BLOCK;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#0x20
MOVX @DPTR,A
// 93 dmaChannelConfiguration->incIrqM8Pri = SRC_INC_ONE_BYTE +
// 94 DST_INC_NONE +
// 95 DMA_IRQ_DISABLE +
// 96 DMA_8_BIT_TRANSFER_COUNT +
// 97 DMA_PRIORITY_HIGH;
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV DPH,A
MOV DPL,R0
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOV A,#0x42
MOVX @DPTR,A
// 98
// 99 StartDma(DMA_CHANNEL_NO_3);
; Setup parameters for call to function StartDma
MOV R1,#0x3
LCALL StartDma
// 100 ENABLE_GLOBAL_INT();
SETB 0xa8.7
// 101 }
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 8)
MOV R7,#0x1
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock2
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
END
//
// 469 bytes in segment NEAR_CODE
// 2 bytes in segment SFR_AN
// 146 bytes in segment XDATA_Z
//
// 469 bytes of CODE memory
// 0 bytes of DATA memory (+ 2 bytes shared)
// 146 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -