⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phy.s51

📁 无线单片机cc2430简化协议的无线收发程序
💻 S51
📖 第 1 页 / 共 2 页
字号:
        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 + -