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

📄 mac_support.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        ASEGN SFR_AN:DATA:NOROOT,0b4H
// unsigned char volatile __sfr ADCCON1
ADCCON1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0bcH
// unsigned char volatile __sfr RNDL
RNDL:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0bdH
// unsigned char volatile __sfr RNDH
RNDH:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e1H
// unsigned char volatile __sfr RFST
RFST:
        DS 1
//   24 
//   25 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   26 UINT8 oldPhyTransmitPower = OUTPUT_POWER_0DBM;
oldPhyTransmitPower:
        DS 1
//   27 
//   28 /*******************************************************************************************************
//   29  *******************************************************************************************************
//   30  **************************                 GENERAL FUNCTIONS                 **************************
//   31  *******************************************************************************************************
//   32  *******************************************************************************************************/
//   33 
//   34 
//   35 //-------------------------------------------------------------------------------------------------------
//   36 //  void msupWaitTask(MAC_TASK_INFO *pTask)
//   37 //
//   38 //  DESCRIPTION:
//   39 //      This task is meant to be placed behind another task to make sure that this task has finihed.
//   40 //      When the task is run, it will set an 8-bit boolean value, pointed to by the taskData, to FALSE.
//   41 //
//   42 //  TASK DATA:
//   43 //      A BOOL pointer to the flag to be changed to FALSE
//   44 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   45 void msupWaitTask(MAC_TASK_INFO   *pTask) NEAR {
msupWaitTask:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function msupWaitTask
        FUNCALL msupWaitTask, mschRemoveTask
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
        MOV	A,R2
        MOV	R0,A
        MOV	A,R3
        MOV	R1,A
//   46     *((BOOL   *) pTask->taskData) = FALSE;
        MOV	DPL,R0
        MOV	DPH,R1
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPL,R2
        MOV	DPH,R3
        CLR	A
        MOVX	@DPTR,A
//   47     mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
        ; Setup parameters for call to function mschRemoveTask
        MOV	R2,#0x2
        MOV	DPL,R0
        MOV	DPH,R1
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	mschRemoveTask & 0xFFFF
//   48 } // msupWaitTask
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-4
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-3
        LJMP	?BRET
        CFI EndBlock cfiBlock0
//   49 
//   50 
//   51 
//   52 
//   53 //-------------------------------------------------------------------------------------------------------
//   54 //  BOOL msupCompareAddress(ADDRESS *pA, ADDRESS *pB)
//   55 //
//   56 //  DESCRIPTION:
//   57 //      Support function for comparing two 64-bit ADDRESS, A and B
//   58 //
//   59 //  PARAMETERS:
//   60 //      ADDRESS *pA
//   61 //          pointer to ADDRESS A
//   62 //      ADDRESS *pB
//   63 //          pointer to ADDRESS B
//   64 //
//   65 //  RETURN VALUE:
//   66 //      BOOL
//   67 //          TRUE if A and B are equal, false otherwise
//   68 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   69 ROOT BOOL msupCompareExtendedAddress(ADDRESS   *pA, ADDRESS   *pB) {
msupCompareExtendedAddress:
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function msupCompareExtendedAddress
        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: 0
//   70     UINT8 n;
//   71     n = sizeof(ADDRESS);
        MOV	R7,#0x8
//   72     do {
//   73         if (*((BYTE  *) pA) != *((BYTE  *) pB)) return FALSE;
??msupCompareExtendedAddress_0:
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	A,@DPTR
        MOV	R6,A
        MOV	DPL,R4
        MOV	DPH,R5
        MOVX	A,@DPTR
        XRL	A,R6
        JZ	??msupCompareExtendedAddress_1
        MOV	R1,#0x0
        SJMP	??msupCompareExtendedAddress_2
//   74         pA = (ADDRESS  *) ((BYTE  *) pA + 1);
??msupCompareExtendedAddress_1:
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        MOV	R2,DPL
        MOV	R3,DPH
//   75         pB = (ADDRESS  *) ((BYTE  *) pB + 1);
        MOV	DPL,R4
        MOV	DPH,R5
        INC	DPTR
        MOV	R4,DPL
        MOV	R5,DPH
//   76     } while (--n);
        DEC	R7
        MOV	A,R7
        JNZ	??msupCompareExtendedAddress_0
//   77     return TRUE;
        MOV	R1,#0x1
        CFI EndBlock cfiBlock1
??msupCompareExtendedAddress_2:
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0
//   78 } // msupCompareAddress

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock2 Using cfiCommon1
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        MOV	R7,#0x1
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//   79 
//   80 
//   81 
//   82 
//   83 //-------------------------------------------------------------------------------------------------------
//   84 //  void msupReverseCopy(BYTE *pDestination, BYTE *pSource, UINT8 length)
//   85 //
//   86 //  DESCRIPTION:
//   87 //      Copies an array of data in the reverse order, so that the first part of the destination can
//   88 //      overlap with the last part of the source:
//   89 //
//   90 //      Source      F---------------L        (last byte "L" is moved first -> avoids overwriting)
//   91 //      Destination        F---------------L
//   92 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   93 ROOT void msupReverseCopy(BYTE   *pDestination, BYTE   *pSource, UINT8 length) {
msupReverseCopy:
        CFI Block cfiBlock3 Using cfiCommon1
        CFI Function msupReverseCopy
        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: 0
//   94     pDestination += length;
        MOV	DPL,R1
        MOV	R6,DPL
        MOV	A,R2
        ADD	A,R6
        MOV	R2,A
        MOV	A,R3
        ADDC	A,#0x0
        MOV	R3,A
//   95     pSource += length;
        MOV	A,R4
        ADD	A,R6
        MOV	R4,A
        MOV	A,R5
        ADDC	A,#0x0
        MOV	R5,A
        SJMP	??msupReverseCopy_0
//   96     while (length--) {
//   97         *(--pDestination) = *(--pSource);
??msupReverseCopy_1:
        MOV	A,R2
        ADD	A,#-0x1
        DEC	R2
        MOV	A,R3
        ADDC	A,#-0x1
        MOV	R3,A
        MOV	A,R4
        ADD	A,#-0x1
        DEC	R4
        MOV	A,R5
        ADDC	A,#-0x1
        MOV	R5,A
        MOV	DPL,R4
        MOV	DPH,R5
        MOVX	A,@DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
//   98     }
??msupReverseCopy_0:
        MOV	A,R1
        DEC	R1
        JNZ	??msupReverseCopy_1
//   99 } // msupReverseCopy
        SJMP	?Subroutine0
        CFI EndBlock cfiBlock3
//  100 
//  101 
//  102 
//  103 
//  104 //-------------------------------------------------------------------------------------------------------
//  105 // The random generator polynom
//  106 #define RANDOM_POLY 0x1021
//  107 
//  108 // The 16-bit shift register which is used to generate random numbers

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  109 WORD random;
random:
        DS 2
//  110 //-------------------------------------------------------------------------------------------------------
//  111 
//  112 
//  113 //-------------------------------------------------------------------------------------------------------
//  114 //  void msupSetTransmitPower(void)
//  115 //
//  116 //  DESCRIPTION:
//  117 //      Changes the Transiver transmit power.
//  118 //      The function checks the ppib.phyTransmitPower to see if it has changed.
//  119 //      if the parameter is changed the changes will be writen to the radio chip.
//  120 //      Alowed values of ppib.phyTransmitPower are: OUTPUT_POWER_0DBM, OUTPUT_POWER_N1DBM
//  121 //      OUTPUT_POWER_N3DBM, OUTPUT_POWER_N5DBM, OUTPUT_POWER_N7DBM, OUTPUT_POWER_N10DBM
//  122 //      OUTPUT_POWER_N15DBM and OUTPUT_POWER_N25DBM
//  123 //
//  124 //  PARAMETERS:
//  125 //------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  126 ROOT void msupSetTransmitPower(void) {
msupSetTransmitPower:
        CFI Block cfiBlock4 Using cfiCommon1
        CFI Function msupSetTransmitPower
        ; Saved register size: 0
        ; Auto size: 0
//  127 // TBD: Not safe (should disable interrupts or something...)
//  128 /*    UINT16 txctrl;
//  129 
//  130     //If parameter is changed verify and write to chip.
//  131     if (oldPhyTransmitPower != ppib.phyTransmitPower) {
//  132         switch(ppib.phyTransmitPower) {
//  133         case OUTPUT_POWER_0DBM:
//  134             txctrl = CC2430_0DBM;
//  135             break;
//  136         case OUTPUT_POWER_N1DBM:
//  137             txctrl = CC2430_N1DBM;
//  138             break;
//  139         case OUTPUT_POWER_N3DBM:
//  140             txctrl = CC2430_N3DBM;
//  141             break;
//  142         case OUTPUT_POWER_N5DBM:
//  143             txctrl = CC2430_N5DBM;
//  144             break;
//  145         case OUTPUT_POWER_N7DBM:
//  146             txctrl = CC2430_N7DBM;
//  147             break;
//  148         case OUTPUT_POWER_N10DBM:
//  149             txctrl = CC2430_N10DBM;
//  150             break;
//  151         case OUTPUT_POWER_N15DBM:
//  152             txctrl = CC2430_N15DBM;
//  153             break;
//  154         case OUTPUT_POWER_N25DBM:
//  155             txctrl = CC2430_N25DBM;
//  156             break;
//  157         //No valid value reset to old
//  158         default:
//  159             ppib.phyTransmitPower = oldPhyTransmitPower;
//  160             txctrl = CC2430_0DBM;
//  161             break;
//  162         }
//  163         oldPhyTransmitPower = ppib.phyTransmitPower;
//  164         WRITE_RFR16(RFR_TXCTRL, txctrl);
//  165     }
//  166 */
//  167 }// msupSetTransmitPower
        RET
        CFI EndBlock cfiBlock4
//  168 
//  169 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  170 ROOT BOOL msupIsSfdActive(void) {
msupIsSfdActive:
        CFI Block cfiBlock5 Using cfiCommon1
        CFI Function msupIsSfdActive
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 3)

⌨️ 快捷键说明

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