📄 mac_loc.s51
字号:
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 + -