📄 phy.s51
字号:
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
; Saved register size: 11
; Auto size: 0
// 35 phy_pib.txStartTime = halGetMACTimer();
; Setup parameters for call to function halGetMACTimer
LCALL halGetMACTimer
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 2,R4
MOV ?V0 + 3,R5
MOV DPTR,#(phy_pib + 10)
MOV R0,#?V0 + 0
LCALL ?L_MOV_TO_X
// 36 }
MOV R7,#0x4
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock2
// 37
// 38
RSEG NEAR_CODE:CODE:NOROOT(0)
// 39 void phyFSM(void) {
phyFSM:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function phyFSM
FUNCALL phyFSM, halSendPacket
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
FUNCALL phyFSM, conPrintROMString_func
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
FUNCALL phyFSM, halGetMACTimer
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
FUNCALL phyFSM, conPrintROMString_func
LOCFRAME XSTACK, 15, STACK
ARGFRAME XSTACK, 15, STACK
MOV A,#-0xf
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 V7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 15)
; Saved register size: 15
; Auto size: 0
// 40
// 41 switch (phyState)
MOV DPTR,#phyState
MOVX A,@DPTR
LCALL ?UC_SWITCH_DENSE
`?<Jumptable for phyFSM>_0`:
DB 1
DB 1
DW ??phyFSM_0
DW ??phyFSM_1
DW ??phyFSM_2
// 42 {
// 43 case PHY_STATE_IDLE:
// 44 break;
// 45
// 46 case PHY_STATE_COMMAND_START:
// 47 switch(a_phy_service.cmd)
??phyFSM_1:
MOV DPTR,#a_phy_service
MOVX A,@DPTR
LCALL ?UC_SWITCH_DENSE
`?<Jumptable for phyFSM>_1`:
DB 2
DB 0
DW ??phyFSM_0
DW ??phyFSM_3
// 48 {
// 49 case LRWPAN_SVC_PHY_TX_DATA:
// 50 phy_pib.flags.bits.txFinished = 0;
??phyFSM_3:
MOV DPTR,#(phy_pib + 8)
MOVX A,@DPTR
ANL A,#0xfe
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#0xff
MOVX @DPTR,A
// 51
// 52 a_phy_service.status =halSendPacket(phy_pib.currentTxFlen,tmpTxBuff);
; Setup parameters for call to function halSendPacket
MOV R2,#(tmpTxBuff & 0xff)
MOV R3,#((tmpTxBuff >> 8) & 0xff)
MOV DPTR,#(phy_pib + 16)
MOVX A,@DPTR
MOV R1,A
LCALL halSendPacket
MOV A,R1
MOV DPTR,#(a_phy_service + 3)
MOVX @DPTR,A
// 53 if (a_phy_service.status == LRWPAN_STATUS_SUCCESS)
MOV DPTR,#(a_phy_service + 3)
MOVX A,@DPTR
JNZ ??phyFSM_4
// 54 {
// 55 phyState = PHY_STATE_TX_WAIT;//TX started, wait for it to end.
MOV A,#0x2
MOV DPTR,#phyState
MOVX @DPTR,A
LJMP ??phyFSM_0
// 56 }
// 57 else
// 58 {
// 59 DEBUG_STRING(1,"PHY: TX did not start\n");
??phyFSM_4:
MOV DPTR,#debug_level
MOVX A,@DPTR
CLR C
SUBB A,#0x1
JC ??phyFSM_5
; Setup parameters for call to function conPrintROMString_func
MOV R2,#(??xxxxromstr & 0xff)
MOV R3,#((??xxxxromstr >> 8) & 0xff)
LCALL conPrintROMString_func
// 60 phyState = PHY_STATE_IDLE;
??phyFSM_5:
MOV A,#0x0
MOV DPTR,#phyState
MOVX @DPTR,A
SJMP ??phyFSM_0
// 61 }
// 62 break;
// 63
// 64 default: break;
// 65 }//end switch cmd
// 66 break;
// 67
// 68 case PHY_STATE_TX_WAIT: //wait for TX out of radio to complete or timeout
// 69 if (phy_pib.flags.bits.txFinished)
??phyFSM_2:
MOV DPTR,#(phy_pib + 8)
MOVX A,@DPTR
ANL A,#0x1
MOV C,0xE0 /* A */.0
JNC ??phyFSM_6
// 70 {
// 71 phyState = PHY_STATE_IDLE;
MOV A,#0x0
MOV DPTR,#phyState
MOVX @DPTR,A
// 72 phyReleaseTxLock();
MOV DPTR,#(phy_pib + 8)
MOVX A,@DPTR
ANL A,#0xfd
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#0xff
MOVX @DPTR,A
SJMP ??phyFSM_0
// 73 }
// 74 else if (halMACTimerNowDelta(phy_pib.txStartTime) > MAX_TX_TRANSMIT_TIME)
??phyFSM_6:
; Setup parameters for call to function halGetMACTimer
LCALL halGetMACTimer
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV ?V0 + 2,R4
MOV ?V0 + 3,R5
MOV DPTR,#(phy_pib + 10)
MOV R0,#?V0 + 0
LCALL ?L_SUB_X
MOV DPTR,#__Constant_fffff
MOV R0,#?V0 + 0
LCALL ?L_AND_X
MOV DPTR,#__Constant_97
MOV R0,#?V0 + 4
LCALL ?L_MOV_X
MOV R0,#?V0 + 4
MOV R1,#?V0 + 0
LCALL ?UL_GT
JC ??phyFSM_0
// 75 {
// 76 DEBUG_STRING(1,"PHY: MAX_TX_TRANSMIT_TIME timeout\n");//should not happen, indicate an error to console
MOV DPTR,#debug_level
MOVX A,@DPTR
CLR C
SUBB A,#0x1
JC ??phyFSM_7
; Setup parameters for call to function conPrintROMString_func
MOV R2,#(??xxxxromstr_1 & 0xff)
MOV R3,#((??xxxxromstr_1 >> 8) & 0xff)
LCALL conPrintROMString_func
// 77 a_phy_service.status = LRWPAN_STATUS_PHY_TX_FINISH_FAILED;
??phyFSM_7:
MOV A,#0x5
MOV DPTR,#(a_phy_service + 3)
MOVX @DPTR,A
// 78 phyState = PHY_STATE_IDLE;
MOV A,#0x0
MOV DPTR,#phyState
MOVX @DPTR,A
// 79 phyReleaseTxLock();
MOV DPTR,#(phy_pib + 8)
MOVX A,@DPTR
ANL A,#0xfd
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#0xff
MOVX @DPTR,A
// 80 }
// 81 break;
// 82 default: break;
// 83 }//end switch phyState
// 84 }
??phyFSM_0:
MOV R7,#0x8
LJMP ?FUNC_LEAVE_XDATA
CFI EndBlock cfiBlock3
RSEG CODE_C:CODE:REORDER:NOROOT(0)
??xxxxromstr:
DB "PHY: TX did not start\012"
RSEG CODE_C:CODE:REORDER:NOROOT(0)
??xxxxromstr_1:
DB "PHY: MAX_TX_TRANSMIT_TIME timeout\012"
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_fffff:
DS 4
REQUIRE `?<Initializer for __Constant_fffff>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_fffff>`:
DD 1048575
RSEG XDATA_I:XDATA:NOROOT(0)
__Constant_97:
DS 4
REQUIRE `?<Initializer for __Constant_97>`
REQUIRE __INIT_XDATA_I
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for __Constant_97>`:
DD 151
END
// 85
//
// 58 bytes in segment CODE_C
// 283 bytes in segment NEAR_CODE
// 8 bytes in segment XDATA_I
// 8 bytes in segment XDATA_ID
// 149 bytes in segment XDATA_Z
//
// 341 bytes of CODE memory (+ 8 bytes shared)
// 149 bytes of XDATA memory (+ 8 bytes shared)
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -