📄 mac_radio.s51
字号:
// 65 * ------------------------------------------------------------------------------------------------
// 66 */
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 67 static uint8 reqChannel;
??reqChannel:
DS 1
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 68 static uint8 reqTxPower;
??reqTxPower:
DS 1
// 69
// 70
// 71 /* ------------------------------------------------------------------------------------------------
// 72 * Local Functions
// 73 * ------------------------------------------------------------------------------------------------
// 74 */
// 75 static uint8 radioComputeED(int8 rssiDbm);
// 76
// 77
// 78 /**************************************************************************************************
// 79 * @fn macRadioInit
// 80 *
// 81 * @brief Initialize radio software.
// 82 *
// 83 * @param none
// 84 *
// 85 * @return none
// 86 **************************************************************************************************
// 87 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 88 void macRadioInit(void)
macRadioInit:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function macRadioInit
// 89 {
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
// 90 /* variable initialization for this module */
// 91 reqChannel = MAC_RADIO_CHANNEL_DEFAULT;
MOV A,#0xb
MOV DPTR,#??reqChannel
MOVX @DPTR,A
// 92 macPhyChannel = MAC_RADIO_CHANNEL_DEFAULT;
MOV DPTR,#macPhyChannel
MOVX @DPTR,A
// 93 reqTxPower = MAC_RADIO_TX_POWER_DEFAULT;
MOV A,#0x1f
MOV DPTR,#??reqTxPower
MOVX @DPTR,A
// 94 macPhyTxPower = MAC_RADIO_TX_POWER_DEFAULT;
MOV DPTR,#macPhyTxPower
SJMP ??Subroutine2_0
CFI EndBlock cfiBlock0
// 95 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOV DPTR,#-0x20b5
??Subroutine2_0:
MOVX @DPTR,A
SJMP ??Subroutine0_1
CFI EndBlock cfiBlock1
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
MOV DPTR,#(??radioComputeED & 0xffff)
MOV A,#((??radioComputeED >> 16) & 0xff)
??Subroutine0_0:
LCALL ?BCALL ; Banked call to: DPTR()
??Subroutine0_1:
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock2
// 96
// 97
// 98 /**************************************************************************************************
// 99 * @fn macRadioReset
// 100 *
// 101 * @brief Resets the radio module.
// 102 *
// 103 * @param none
// 104 *
// 105 * @return none
// 106 **************************************************************************************************
// 107 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 108 void macRadioReset(void)
macRadioReset:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function macRadioReset
// 109 {
FUNCALL macRadioReset, macRadioStopScan
LOCFRAME ISTACK, 2, STACK
ARGFRAME ISTACK, 2, STACK
FUNCALL macRadioReset, macRadioEnergyDetectStop
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
// 110 macRadioStopScan();
; Setup parameters for call to function macRadioStopScan
MOV DPTR,#(macRadioStopScan & 0xffff)
MOV A,#((macRadioStopScan >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 111 macRadioEnergyDetectStop();
; Setup parameters for call to function macRadioEnergyDetectStop
MOV DPTR,#(macRadioEnergyDetectStop & 0xffff)
MOV A,#((macRadioEnergyDetectStop >> 16) & 0xff)
SJMP ??Subroutine0_0
CFI EndBlock cfiBlock3
// 112 }
// 113
// 114
// 115 /**************************************************************************************************
// 116 * @fn macRadioRandomByte
// 117 *
// 118 * @brief Return a random byte derived from previously set random seed.
// 119 *
// 120 * @param none
// 121 *
// 122 * @return a random byte
// 123 **************************************************************************************************
// 124 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 125 uint8 macRadioRandomByte(void)
macRadioRandomByte:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function macRadioRandomByte
// 126 {
FUNCALL macRadioRandomByte, macMcuRandomByte
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
// 127 return(MAC_RADIO_RANDOM_BYTE());
; Setup parameters for call to function macMcuRandomByte
MOV DPTR,#(macMcuRandomByte & 0xffff)
MOV A,#((macMcuRandomByte >> 16) & 0xff)
SJMP ??Subroutine0_0
CFI EndBlock cfiBlock4
// 128 }
// 129
// 130
// 131 /**************************************************************************************************
// 132 * @fn macRadioSetPanCoordinator
// 133 *
// 134 * @brief Configure the pan coordinator status of the radio
// 135 *
// 136 * @param panCoordFlag - non-zero to configure radio to be pan coordinator
// 137 * zero to configure radio as NON pan coordinator
// 138 *
// 139 * @return none
// 140 **************************************************************************************************
// 141 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 142 void macRadioSetPanCoordinator(uint8 panCoordFlag)
macRadioSetPanCoordinator:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function macRadioSetPanCoordinator
// 143 {
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
// 144 /* abstracted radio configuration */
// 145 MAC_RADIO_SET_PAN_COORDINATOR(panCoordFlag);
MOV DPTR,#-0x20fe
MOVX A,@DPTR
MOV R2,A
MOV A,R1
JZ ??macRadioSetPanCoordinator_0
SETB B.0
SJMP ??macRadioSetPanCoordinator_1
??macRadioSetPanCoordinator_0:
CLR B.0
??macRadioSetPanCoordinator_1:
MOV C,B.0
CLR A
MOV 0xE0 /* A */.0,C
SWAP A
PUSH A
CFI CFA_SP SP+-6
MOV A,#-0x11
ANL A,R2
MOV R2,A
POP A
CFI CFA_SP SP+-5
ORL A,R2
SJMP ??Subroutine2_0
CFI EndBlock cfiBlock5
// 146 }
// 147
// 148
// 149 /**************************************************************************************************
// 150 * @fn macRadioSetPanID
// 151 *
// 152 * @brief Set the pan ID on the radio.
// 153 *
// 154 * @param panID - 16 bit PAN identifier
// 155 *
// 156 * @return none
// 157 **************************************************************************************************
// 158 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 159 void macRadioSetPanID(uint16 panID)
macRadioSetPanID:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function macRadioSetPanID
// 160 {
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
// 161 /* abstracted radio configuration */
// 162 MAC_RADIO_SET_PAN_ID(panID);
MOV A,R2
MOV DPTR,#-0x20b4
MOVX @DPTR,A
MOV A,R3
SJMP ?Subroutine2
CFI EndBlock cfiBlock6
// 163 }
// 164
// 165
// 166 /**************************************************************************************************
// 167 * @fn macRadioSetShortAddr
// 168 *
// 169 * @brief Set the short addrss on the radio.
// 170 *
// 171 * @param shortAddr - 16 bit short address
// 172 *
// 173 * @return none
// 174 **************************************************************************************************
// 175 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 176 void macRadioSetShortAddr(uint16 shortAddr)
macRadioSetShortAddr:
CFI Block cfiBlock7 Using cfiCommon0
CFI Function macRadioSetShortAddr
// 177 {
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
// 178 /* abstracted radio configuration */
// 179 MAC_RADIO_SET_SHORT_ADDR(shortAddr);
MOV A,R2
MOV DPTR,#-0x20b2
MOVX @DPTR,A
MOV A,R3
MOV DPTR,#-0x20b3
SJMP ??Subroutine2_0
CFI EndBlock cfiBlock7
// 180 }
// 181
// 182
// 183 /**************************************************************************************************
// 184 * @fn macRadioSetIEEEAddr
// 185 *
// 186 * @brief Set the IEEE address on the radio.
// 187 *
// 188 * @param pIEEEAddr - pointer to array holding 64 bit IEEE address; array must be little
// 189 * endian format (starts with lowest signficant byte)
// 190 *
// 191 * @return none
// 192 **************************************************************************************************
// 193 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 194 void macRadioSetIEEEAddr(uint8 * pIEEEAddr)
macRadioSetIEEEAddr:
CFI Block cfiBlock8 Using cfiCommon0
CFI Function macRadioSetIEEEAddr
// 195 {
FUNCALL macRadioSetIEEEAddr, macMemWriteRam
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 R4,A
MOV A,R3
MOV R5,A
// 196 /* abstracted radio configuration */
// 197 MAC_RADIO_SET_IEEE_ADDR(pIEEEAddr);
; Setup parameters for call to function macMemWriteRam
MOV R1,#0x8
MOV R2,#0x43
MOV R3,#-0x21
MOV DPTR,#(macMemWriteRam & 0xffff)
MOV A,#((macMemWriteRam >> 16) & 0xff)
SJMP ??Subroutine0_0
CFI EndBlock cfiBlock8
// 198 }
// 199
// 200
// 201 /**************************************************************************************************
// 202 * @fn macRadioSetTxPower
// 203 *
// 204 * @brief Set transmitter power of the radio.
// 205 *
// 206 * @param txPower - the minus dBm for power but as a postive integer (or if configured
// 207 * for it, txPower is the raw register value).
// 208 *
// 209 * @return none
// 210 **************************************************************************************************
// 211 */
// 212 #ifndef HAL_MAC_USE_REGISTER_POWER_VALUES
// 213 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
// 214
RSEG BANKED_CODE:CODE:NOROOT(0)
// 215 void macRadioSetTxPower(uint8 txPower)
macRadioSetTxPower:
CFI Block cfiBlock9 Using cfiCommon0
CFI Function macRadioSetTxPower
// 216 {
FUNCALL macRadioSetTxPower, macRadioUpdateTxPower
LOCFRAME XSTACK, 10, STACK
ARGFRAME XSTACK, 10, STACK
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -