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

📄 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,0f6H
// unsigned char volatile __sfr P1INP
P1INP:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0f7H
// unsigned char volatile __sfr P2INP
P2INP:
        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, RunHWTest
        FUNCALL main, mschInit
        FUNCALL main, mtimInit
        FUNCALL main, InitializeCommonStorage
        FUNCALL main, InitializeDma
        FUNCALL main, InitializeRfInterrupts
        FUNCALL main, mpmSetRequest
        FUNCALL main, mpmGetState
        FUNCALL main, halWait
        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();
//   90    initLcd();
//   91    lcdUpdate("Chipcon","Location Engine");
//   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();
//  101 #elif defined CC2430DB
//  102    INIT_LED2();
//  103 #endif
//  104 #endif
//  105 
//  106 
//  107 #ifdef SOC_BB
//  108    RunHWTest();
        ; Setup parameters for call to function RunHWTest
        MOV	DPTR,#(RunHWTest & 0xffff)
        MOV	A,#((RunHWTest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  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
//  117 
//  118    // Wait for device mode selection
//  119    WaitForDeviceModeSelection (&nodeType);
        ANL	0xf6,#0x7f
        ANL	0xf7,#0xbf
        ANL	0xfe,#0x7f
        ORL	0xfe,#0x40
        CLR	0x90.6
        ; Setup parameters for call to function halWait
        MOV	R1,#0x64
        MOV	DPTR,#(halWait & 0xffff)
        MOV	A,#((halWait >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	C,0x90.7
        JC	??main_1
        CLR	A
        SJMP	??main_2
??main_1:
        MOV	A,#0x1
??main_2:
        MOV	DPTR,#nodeType
        MOVX	@DPTR,A
        ANL	0xfe,#0xbf
//  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_3
//  125    {
//  126       resetCoordinates = (BUTTON_PRESSED() ? TRUE : FALSE);
        MOV	C,0x80.1
        JC	??main_4
        SETB	B.0
        SJMP	??main_5
??main_4:
        CLR	B.0
??main_5:
        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_6
//  128    }
//  129    else if (nodeType == BLIND_NODE)
??main_3:
        XRL	A,#0x1
        JNZ	??main_6
//  130    {
//  131       if(CHIPID == 0x89)
        MOV	DPTR,#-0x209f
        MOVX	A,@DPTR
        XRL	A,#0x89
        JNZ	??main_6
//  132       {
//  133          RunBlindNode();
        ; Setup parameters for call to function RunBlindNode
        MOV	DPTR,#(RunBlindNode & 0xffff)
        MOV	A,#((RunBlindNode >> 16) & 0xff)
??main_7:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  134       }
//  135    }
//  136 
//  137    while(TRUE)
//  138    {
//  139       LED1 ^= 1;
??main_6:
        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_7
        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
        MOV	DPTR,#(halInitRandomGenerator & 0xffff)
        MOV	A,#((halInitRandomGenerator >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  158       CLOCK_RANDOM_GENERATOR();
        ORL	0xb4,#0x4
//  159       GET_RANDOM_BYTE(aExtendedAddress[6]);
        ORL	0xb4,#0x4
        MOV	A,0xbd
        MOV	DPTR,#(aExtendedAddress + 6)

⌨️ 快捷键说明

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