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

📄 mac.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        FUNCTION miqAddIndirectPacket,0602H
        EXTERN miqExpireIndirectPacketsTask
        FUNCTION miqExpireIndirectPacketsTask,0602H
        EXTERN miqInfo
        EXTERN mpib
        EXTERN mrxInfo
        EXTERN mrxRxEnableRequestTask
        FUNCTION mrxRxEnableRequestTask,0602H
        EXTERN mscInfo
        EXTERN mscScanProcedure
        FUNCTION mscScanProcedure,0602H
        EXTERN msupWaitTask
        FUNCTION msupWaitTask,0602H
        EXTERN mtxInfo
        EXTERN mtxScheduleTransmission
        FUNCTION mtxScheduleTransmission,0602H
        EXTERN pMtxPacketPool
        EXTERN ppib

// E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac.c
//    1 /*******************************************************************************************************
//    2  *                                                                                                     *
//    3  *        **********                                                                                   *
//    4  *       ************                                                                                  *
//    5  *      ***        ***                                                                                 *
//    6  *      ***   +++   ***                                                                                *
//    7  *      ***   + +   ***                                                                                *
//    8  *      ***   +                        CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                  *
//    9  *      ***   + +   ***                                                                                *
//   10  *      ***   +++   ***                                                                                *
//   11  *      ***        ***                                                                                 *
//   12  *       ************                                                                                  *
//   13  *        **********                                                                                   *
//   14  *                                                                                                     *
//   15  *******************************************************************************************************
//   16  * CONFIDENTIAL                                                                                        *
//   17  * The use of this file is restricted by the signed MAC software license agreement.                    *
//   18  *                                                                                                     *
//   19  * Copyright Chipcon AS, 2005                                                                          *
//   20  *******************************************************************************************************
//   21  * This file implements the MAC functions (request and response) to be called by the higher layer      *
//   22  *******************************************************************************************************/
//   23 #include "mac_headers.h"

        ASEGN SFR_AN:DATA:NOROOT,0a1H
// unsigned char volatile __sfr T2OF0
T2OF0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a2H
// unsigned char volatile __sfr T2OF1
T2OF1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0a3H
// unsigned char volatile __sfr T2OF2
T2OF2:
        DS 1
//   24 
//   25 //-------------------------------------------------------------------------------------------------------
//   26 // Extended address, must be set by higher layer
//   27 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   28 BYTE aExtendedAddress[8];
aExtendedAddress:
        DS 8
//   29 //-------------------------------------------------------------------------------------------------------
//   30 
//   31 
//   32 //-------------------------------------------------------------------------------------------------------
//   33 //  MAC_ENUM mlmeResetRequest(BOOL setDefaultPIB)
//   34 //
//   35 //  DESCRIPTION:
//   36 //      Reset the MAC and PHY layers, including CC2430, the microcontroller, and all state variables.
//   37 //      NOTE: The initialization and power-up sequence must be performed according to
//   38 //            the MAC documentation prior to calling mlmeResetRequest or other
//   39 //            MAC primitives
//   40 //
//   41 //  PARAMETERS:
//   42 //      BOOL setDefaultPIB
//   43 //          Reset the PHY and MAC PIBs
//   44 //
//   45 //  RETURN VALUE:
//   46 //      MAC_ENUM
//   47 //          Always SUCCESS
//   48 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   49 ROOT MAC_ENUM mlmeResetRequest(BOOL setDefaultPIB) {
mlmeResetRequest:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function mlmeResetRequest
        FUNCALL mlmeResetRequest, mtimInit
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, mschInit
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, mrxpInit
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, mtxpInit
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, miqInit
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, mschReserveTask
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, msupGetRandomByte
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, msupGetRandomByte
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, memset
        LOCFRAME XSTACK, 13, STACK
        ARGFRAME XSTACK, 13, STACK
        FUNCALL mlmeResetRequest, mpmRestoreRegsAndRam
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL mlmeResetRequest, EnableRfInterrupts
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        MOV	A,#-0xb
        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 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
        MOV	A,R1
        MOV	R6,A
//   50 
//   51     // Disable the FIFOP interrupt
//   52     DISABLE_TIMER2_INT();
        CLR	0xb8.2
//   53 
//   54     // Clear ABORTRX_ON_SRXON and ACCEPT_ACKPKT
//   55     FSMTC1 = 0x00;
        CLR	A
        MOV	DPTR,#-0x20ac
        MOVX	@DPTR,A
//   56 
//   57     // Initialize the MAC timer
//   58     mtimInit(FALSE);
        ; Setup parameters for call to function mtimInit
        MOV	R1,A
        LCALL	mtimInit
//   59 
//   60     // Initialize the scheduler before the other modules (task reservation...)
//   61     mschInit();
        ; Setup parameters for call to function mschInit
        LCALL	mschInit
//   62 
//   63     // Initialize variables in the various modules
//   64     mrxpInit();
        ; Setup parameters for call to function mrxpInit
        LCALL	mrxpInit
//   65     mtxpInit();
        ; Setup parameters for call to function mtxpInit
        LCALL	mtxpInit
//   66 #if MAC_OPT_FFD
//   67     miqInit();
        ; Setup parameters for call to function miqInit
        LCALL	miqInit
//   68 #endif
//   69     mtxInfo.startTxTask = mschReserveTask();
        ; Setup parameters for call to function mschReserveTask
        LCALL	mschReserveTask
        MOV	A,R1
        MOV	DPTR,#(mtxInfo + 12)
        MOVX	@DPTR,A
//   70     mrxInfo.state = MRX_STATE_LEN_FCF_SEQ;
        CLR	A
        MOV	DPTR,#(mrxInfo + 12)
        MOVX	@DPTR,A
//   71     mrxInfo.onCounter = 0;
        MOV	DPTR,#(mrxInfo + 13)
        MOVX	@DPTR,A
//   72     mrxInfo.keepFifopIntOff = FALSE;
        MOV	DPTR,#(mrxInfo + 15)
        MOVX	@DPTR,A
//   73     mrxInfo.handleFifoUnderflow = FALSE;
        MOV	DPTR,#(mrxInfo + 14)
        MOVX	@DPTR,A
//   74     mbcnInfo.trackBeacon = FALSE;
        MOV	DPTR,#(mbcnInfo + 5)
        MOVX	@DPTR,A
//   75     mbcnInfo.findBeacon = FALSE;
        MOV	DPTR,#(mbcnInfo + 6)
        MOVX	@DPTR,A
//   76     mbcnInfo.rxTaskNumber = NO_TASK;
        MOV	A,#-0x1
        MOV	DPTR,#(mbcnInfo + 1)
        MOVX	@DPTR,A
//   77     mbcnInfo.txTaskNumber = NO_TASK;
        MOV	DPTR,#mbcnInfo
        MOVX	@DPTR,A
//   78     mbcnInfo.pTxPacket = NULL;
        MOV	DPTR,#(mbcnInfo + 2)
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//   79     mscInfo.scanStatus = MSC_STATUS_FINISHED;
        MOV	A,#0x1
        MOV	DPTR,#(mscInfo + 10)
        MOVX	@DPTR,A
//   80     mtxInfo.beaconTransmissionInProgress = FALSE;
        CLR	A
        MOV	DPTR,#(mtxInfo + 11)
        MOVX	@DPTR,A
//   81 
//   82     // Reset flags
//   83     RESET_MF();
        MOV	DPTR,#(macInfo + 6)
        MOVX	@DPTR,A
//   84 
//   85     // MAC command state
//   86     macInfo.state = MAC_STATE_DEFAULT;
        MOV	DPTR,#macInfo
        MOVX	@DPTR,A
//   87 
//   88     // Other state variables
//   89     mbcnInfo.lastSfSpec.battLifeExt = FALSE;
        MOV	DPTR,#(mbcnInfo + 9)
        MOVX	@DPTR,A
//   90     mbcnInfo.lastSfSpec.finalCap = USE_WHOLE_SUPERFRAME_FOR_CAP;
        MOV	A,#0xf
        MOV	DPTR,#(mbcnInfo + 8)
        MOVX	@DPTR,A
//   91 
//   92     // Set all MAC/PHY PIB attributes to their default values.
//   93     if (setDefaultPIB) {
        MOV	A,R6
        JNZ	$+5
        LJMP	??mlmeResetRequest_0
//   94         ppib.phyCurrentChannel = 11;
        MOV	A,#0xb
        MOV	DPTR,#ppib
        MOVX	@DPTR,A
//   95         ppib.phyTransmitPower = OUTPUT_POWER_0DBM; //0dBm an +/- 1dBm tolerance
        CLR	A
        MOV	DPTR,#(ppib + 1)
        MOVX	@DPTR,A
//   96         ppib.phyCcaMode = 1;
        MOV	A,#0x1
        MOV	DPTR,#(ppib + 2)
        MOVX	@DPTR,A
//   97 
//   98         mpib.macAckWaitDuration = 54;
        MOV	A,#0x36
        MOV	DPTR,#mpib
        MOVX	@DPTR,A
//   99         mpib.macAssociationPermit = FALSE;
        CLR	A
        MOV	DPTR,#(mpib + 1)
        MOVX	@DPTR,A
//  100         mpib.macAutoRequest = TRUE;
        MOV	A,#0x1
        MOV	DPTR,#(mpib + 2)
        MOVX	@DPTR,A
//  101         mpib.macBattLifeExt = FALSE;
        CLR	A
        MOV	DPTR,#(mpib + 3)
        MOVX	@DPTR,A
//  102         mpib.macBattLifeExtPeriods = 6;
        MOV	A,#0x6
        MOV	DPTR,#(mpib + 4)
        MOVX	@DPTR,A
//  103         mpib.pMacBeaconPayload = NULL;
        MOV	DPTR,#(mpib + 5)
        CLR	A
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  104         mpib.macBeaconPayloadLength = 0;
        MOV	DPTR,#(mpib + 7)
        MOVX	@DPTR,A
//  105         mpib.macBeaconOrder = 15;
        MOV	A,#0xf
        MOV	DPTR,#(mpib + 8)
        MOVX	@DPTR,A
//  106         mpib.macBeaconTxTime = 0;
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	DPTR,#(mpib + 9)
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
//  107         mpib.macBSN = msupGetRandomByte();
        ; Setup parameters for call to function msupGetRandomByte
        LCALL	msupGetRandomByte
        MOV	A,R1
        MOV	DPTR,#(mpib + 13)
        MOVX	@DPTR,A
//  108         mpib.macCoordShortAddress = 0xFFFF;
        MOV	DPTR,#(mpib + 22)
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  109         mpib.macDSN = msupGetRandomByte();
        ; Setup parameters for call to function msupGetRandomByte
        LCALL	msupGetRandomByte
        MOV	A,R1
        MOV	DPTR,#(mpib + 24)
        MOVX	@DPTR,A
//  110         mpib.macGTSPermit = TRUE;
        MOV	A,#0x1
        MOV	DPTR,#(mpib + 25)
        MOVX	@DPTR,A
//  111         mpib.macMaxCsmaBackoffs = 4;
        MOV	A,#0x4
        MOV	DPTR,#(mpib + 26)
        MOVX	@DPTR,A
//  112         mpib.macMinBE = 3;
        MOV	A,#0x3
        MOV	DPTR,#(mpib + 27)
        MOVX	@DPTR,A
//  113         mpib.macPANId = 0xFFFF;
        MOV	DPTR,#(mpib + 28)
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  114         mpib.macPromiscuousMode = FALSE;
        CLR	A
        MOV	DPTR,#(mpib + 30)
        MOVX	@DPTR,A
//  115         mpib.macRxOnWhenIdle = FALSE;
        MOV	DPTR,#(mpib + 31)
        MOVX	@DPTR,A
//  116         mpib.macShortAddress = 0xFFFF;
        MOV	DPTR,#(mpib + 32)
        MOV	A,#-0x1

⌨️ 快捷键说明

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