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

📄 mac_loc.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 4 页
字号:
MEMCTR:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0f4H
// unsigned char volatile __sfr P1SEL
P1SEL:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0fdH
// unsigned char volatile __sfr P0DIR
P0DIR:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0feH
// unsigned char volatile __sfr P1DIR
P1DIR:
        DS 1
//   43 #include "hal.h"
//   44 #include "node.h"
//   45 #ifdef CC2430EB
//   46 #include "lcd.h"
//   47 #endif
//   48 
//   49 #define INVALID_STATUS  0x80
//   50 
//   51 // Addresses

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   52 WORD     myShortAddr; // The short address
myShortAddr:
        DS 2

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   53 ADDRESS  extAddr;     // The extended address
extAddr:
        DS 8

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   54 WORD     panId;       // The PAN ID
panId:
        DS 2
//   55 
//   56 
//   57 // hold node type, blind node or reference node
//   58 extern NODE_TYPE nodeType;
//   59 
//   60 // The payload of the packets transmitted by the device

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   61 BYTE pBuffer[128];
pBuffer:
        DS 128
//   62 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   63 BYTE     msduHandle, txOptions;
msduHandle:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
txOptions:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   64 MAC_ENUM dataConfirmStatus, pollConfirmStatus;
dataConfirmStatus:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
pollConfirmStatus:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   65 BYTE     dataConfirmMsduHandle;
dataConfirmMsduHandle:
        DS 1
//   66 
//   67 
//   68 // Prototypes
//   69 ROOT void FetchIeeeAddress(unsigned char *ieeeAddress);
//   70 static void StartDevice(void);
//   71 static void WaitForDeviceModeSelection (NODE_TYPE *deviceMode);
//   72 static void WaitForPacketTransmission (BYTE msduHandle);
//   73 
//   74 #ifdef SOC_BB
//   75 void RunHWTest(void);
//   76 #endif
//   77 
//   78 
//   79 /******************************************************************************
//   80 *
//   81 * Startup sequence and main loop.
//   82 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   83 void main(void)
main:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function main
//   84 {
        FUNCALL main, initLcd
        FUNCALL main, lcdUpdate
        FUNCALL main, mschInit
        FUNCALL main, mtimInit
        FUNCALL main, InitializeCommonStorage
        FUNCALL main, InitializeDma
        FUNCALL main, InitializeRfInterrupts
        FUNCALL main, mpmSetRequest
        FUNCALL main, mpmGetState
        FUNCALL main, getJoystickDirection
        FUNCALL main, ??StartDevice
        FUNCALL main, RunRefNode
        FUNCALL main, RunBlindNode
        FUNCALL main, halWait
        ; Auto size: 0
//   85    BOOL resetCoordinates;
//   86 
//   87    INIT_BUTTON();
        ANL	0xfd,#0xfd
//   88 #if defined CC2430EB
//   89    INIT_JOYSTICK();
        ANL	0xfd,#0xbf
//   90    initLcd();
        ; Setup parameters for call to function initLcd
        MOV	DPTR,#(initLcd & 0xffff)
        MOV	A,#((initLcd >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   91    lcdUpdate("Chipcon","Location Engine");
        ; Setup parameters for call to function lcdUpdate
        MOV	R4,#(`?<Constant "Location Engine">` & 0xff)
        MOV	R5,#((`?<Constant "Location Engine">` >> 8) & 0xff)
        MOV	R2,#(`?<Constant "Chipcon">` & 0xff)
        MOV	R3,#((`?<Constant "Chipcon">` >> 8) & 0xff)
        MOV	DPTR,#(lcdUpdate & 0xffff)
        MOV	A,#((lcdUpdate >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   92 #elif defined CC2430DB
//   93    INIT_JOYSTICK();
//   94    ENABLE_DB_PERIPHERALS();
//   95 #endif
//   96 
//   97 #ifdef USE_LED
//   98    INIT_LED1();
        SETB	0x90.0
        ORL	0xfe,#0x1
        ANL	0xf4,#0xfe
//   99 #if defined CC2430EB
//  100    INIT_LED3();
        SETB	0x90.3
        ORL	0xfe,#0x8
        ANL	0xf4,#0xf7
//  101 #elif defined CC2430DB
//  102    INIT_LED2();
//  103 #endif
//  104 #endif
//  105 
//  106 
//  107 #ifdef SOC_BB
//  108    RunHWTest();
//  109 #endif
//  110 
//  111    // Setup MAC framework
//  112    MAC_INIT();
        CLR	0xa8.7
        CLR	A
        MOV	DPTR,#(mpib + 8)
        MOVX	@DPTR,A
        MOV	DPTR,#(mpib + 31)
        MOVX	@DPTR,A
        ; Setup parameters for call to function mschInit
        LCALL	mschInit & 0xFFFF
        ; Setup parameters for call to function mtimInit
        MOV	R1,#0x0
        LCALL	mtimInit & 0xFFFF
        SETB	0xb8.2
        CLR	A
        MOV	DPTR,#macInfo
        MOVX	@DPTR,A
        MOV	A,#0x2
        MOV	DPTR,#mpmInfo
        MOVX	@DPTR,A
        MOV	DPTR,#(mpmInfo + 1)
        MOVX	@DPTR,A
        MOV	A,#0x1
        MOV	DPTR,#(mrxInfo + 15)
        MOVX	@DPTR,A
        ; Setup parameters for call to function InitializeCommonStorage
        LCALL	InitializeCommonStorage & 0xFFFF
        ; Setup parameters for call to function InitializeDma
        LCALL	InitializeDma & 0xFFFF
        ; Setup parameters for call to function InitializeRfInterrupts
        LCALL	InitializeRfInterrupts & 0xFFFF
        SETB	0xa8.7
//  113 
//  114    // Power up
//  115    mpmSetRequest(MPM_CC2430_ON);
        ; Setup parameters for call to function mpmSetRequest
        MOV	R1,#0x0
        LCALL	mpmSetRequest & 0xFFFF
//  116    while (mpmGetState() != MPM_CC2430_ON);
??main_0:
        ; Setup parameters for call to function mpmGetState
        LCALL	mpmGetState & 0xFFFF
        MOV	A,R1
        JNZ	??main_0
??main_1:
        ; Setup parameters for call to function getJoystickDirection
        MOV	DPTR,#(getJoystickDirection & 0xffff)
        MOV	A,#((getJoystickDirection >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        MOV	R2,A
        MOV	A,#0x3
        XRL	A,R2
        JNZ	??main_2
        CLR	A
        SJMP	??main_3
??main_2:
        MOV	A,#0x4
        XRL	A,R2
        JNZ	??main_1
        MOV	A,#0x1
??main_3:
        MOV	DPTR,#nodeType
        MOVX	@DPTR,A
//  117 
//  118    // Wait for device mode selection
//  119    WaitForDeviceModeSelection (&nodeType);
//  120 
//  121    StartDevice ();
        ; Setup parameters for call to function StartDevice
        MOV	DPTR,#(??StartDevice & 0xffff)
        MOV	A,#((??StartDevice >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  122    txOptions = TX_OPT_ACK_REQ;
        MOV	A,#0x1
        MOV	DPTR,#txOptions
        MOVX	@DPTR,A
//  123 
//  124    if (nodeType == REF_NODE)
        MOV	DPTR,#nodeType
        MOVX	A,@DPTR
        JNZ	??main_4
//  125    {
//  126       resetCoordinates = (BUTTON_PRESSED() ? TRUE : FALSE);
        MOV	C,0x80.1
        JC	??main_5
        SETB	B.0
        SJMP	??main_6
??main_5:
        CLR	B.0
??main_6:
        MOV	C,B.0
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R1,A
//  127       RunRefNode(resetCoordinates);
        ; Setup parameters for call to function RunRefNode
        LCALL	RunRefNode & 0xFFFF
        SJMP	??main_7
//  128    }
//  129    else if (nodeType == BLIND_NODE)
??main_4:
        XRL	A,#0x1
        JNZ	??main_7
//  130    {
//  131       if(CHIPID == 0x89)
        MOV	DPTR,#-0x209f
        MOVX	A,@DPTR
        XRL	A,#0x89
        JNZ	??main_7
//  132       {
//  133          RunBlindNode();
        ; Setup parameters for call to function RunBlindNode
        MOV	DPTR,#(RunBlindNode & 0xffff)
        MOV	A,#((RunBlindNode >> 16) & 0xff)
??main_8:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  134       }
//  135    }
//  136 
//  137    while(TRUE)
//  138    {
//  139       LED1 ^= 1;
??main_7:
        XRL	0x90,#0x1
        MOV	A,0x90
//  140       halWait(200);
        ; Setup parameters for call to function halWait
        MOV	R1,#-0x38
        MOV	DPTR,#(halWait & 0xffff)
        MOV	A,#((halWait >> 16) & 0xff)
        SJMP	??main_8
        CFI EndBlock cfiBlock0
//  141    }
//  142 }
//  143 
//  144 
//  145 /******************************************************************************
//  146 *
//  147 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  148 static void StartDevice (void)
??StartDevice:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function ??StartDevice
//  149 {
        FUNCALL ??StartDevice, FetchIeeeAddress
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, halInitRandomGenerator
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeResetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, mlmeSetRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, STACK
        FUNCALL ??StartDevice, msupSetChannel
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 1, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 1, 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: 1
        MOV	A,#-0x1
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 1)
//  150    BYTE setAttributeValue;
//  151 
//  152    // Fetch IEEE Address
//  153    FetchIeeeAddress(aExtendedAddress);
        ; Setup parameters for call to function FetchIeeeAddress
        MOV	R2,#(aExtendedAddress & 0xff)
        MOV	R3,#((aExtendedAddress >> 8) & 0xff)
        LCALL	FetchIeeeAddress & 0xFFFF
//  154    // Set Short Address to random if not set
//  155    if (aExtendedAddress[7] == 0xFF)
        MOV	DPTR,#(aExtendedAddress + 7)
        MOVX	A,@DPTR
        XRL	A,#0xff
        JNZ	??StartDevice_1
//  156    {
//  157       halInitRandomGenerator();
        ; Setup parameters for call to function halInitRandomGenerator

⌨️ 快捷键说明

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