📄 onboard.s51
字号:
// 54 */
// 55
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 56 uint8 OnboardKeyIntEnable;
OnboardKeyIntEnable:
DS 1
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 57 uint8 OnboardTimerIntEnable;
OnboardTimerIntEnable:
DS 1
// 58
// 59 // 64-bit Extended Address of this device
RSEG XDATA_Z:XDATA:NOROOT(0)
REQUIRE __INIT_XDATA_Z
// 60 uint8 aExtendedAddress[8];
aExtendedAddress:
DS 8
// 61
// 62 /*********************************************************************
// 63 * EXTERNAL VARIABLES
// 64 */
// 65
// 66 /*********************************************************************
// 67 * EXTERNAL FUNCTIONS
// 68 */
// 69
// 70 extern uint8 macMcuRandomByte(void);
// 71
// 72 /*********************************************************************
// 73 * LOCAL VARIABLES
// 74 */
// 75
// 76 // Registered keys task ID, initialized to NOT USED.
RSEG XDATA_I:XDATA:NOROOT(0)
// 77 static byte registeredKeysTaskID = NO_TASK_ID;
??registeredKeysTaskID:
DS 1
REQUIRE `?<Initializer for registeredKeysTaskID>`
REQUIRE __INIT_XDATA_I
// 78
// 79 /*********************************************************************
// 80 * LOCAL FUNCTIONS
// 81 */
// 82
// 83 static void ChkReset( void );
// 84
// 85 /*********************************************************************
// 86 * @fn InitBoard()
// 87 * @brief Initialize the CC2420DB Board Peripherals
// 88 * @param level: COLD,WARM,READY
// 89 * @return None
// 90 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 91 void InitBoard( byte level )
InitBoard:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function InitBoard
// 92 {
FUNCALL InitBoard, osal_int_disable
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, HalLedSet
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, HalLedSet
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, Onboard_wait
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, Onboard_wait
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, HalLedSet
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, Onboard_wait
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, Onboard_wait
LOCFRAME XSTACK, 11, STACK
ARGFRAME XSTACK, 11, STACK
FUNCALL InitBoard, HalTimerConfig
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
FUNCALL InitBoard, HalKeyConfig
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
MOV A,#-0xb
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 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
// 93 if ( level == OB_COLD )
MOV A,R1
JZ $+5
LJMP ??InitBoard_0 & 0xFFFF
// 94 {
// 95 // Initialize HAL
// 96 HAL_BOARD_INIT();
ORL 0xfe,#0x1
ORL 0xfe,#0x2
ORL 0xf7,#0x1
ORL 0xfe,#0x4
CLR 0x90.2
// 97 // Interrupts off
// 98 osal_int_disable( INTS_ALL );
; Setup parameters for call to function osal_int_disable
MOV R1,#-0x1
MOV DPTR,#(osal_int_disable & 0xffff)
MOV A,#((osal_int_disable >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 99 // Turn all LEDs off
// 100 HalLedSet( HAL_LED_ALL, HAL_LED_MODE_OFF );
; Setup parameters for call to function HalLedSet
MOV R2,#0x0
MOV R1,#0xf
MOV DPTR,#(HalLedSet & 0xffff)
MOV A,#((HalLedSet >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 101 // Check for Brown-Out reset
// 102 ChkReset();
MOV A,#0x18
ANL A,0xbe
MOV R2,A
JZ ??InitBoard_1
MOV A,#0x8
XRL A,R2
JZ ??InitBoard_1
MOV A,#0x10
XRL A,R2
JZ ??InitBoard_1
CLR 0xa8.7
SJMP ??InitBoard_2
??InitBoard_3:
; Setup parameters for call to function HalLedSet
MOV R2,#0x1
MOV A,R6
MOV R1,A
MOV DPTR,#(HalLedSet & 0xffff)
MOV A,#((HalLedSet >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; Setup parameters for call to function Onboard_wait
MOV R2,#0x24
MOV R3,#-0xc
MOV DPTR,#(Onboard_wait & 0xffff)
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; Setup parameters for call to function Onboard_wait
MOV R2,#0x24
MOV R3,#-0xc
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; Setup parameters for call to function HalLedSet
MOV R2,#0x0
MOV A,R6
MOV R1,A
MOV DPTR,#(HalLedSet & 0xffff)
MOV A,#((HalLedSet >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; Setup parameters for call to function Onboard_wait
MOV R2,#0x7c
MOV R3,#-0x6e
MOV DPTR,#(Onboard_wait & 0xffff)
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
; Setup parameters for call to function Onboard_wait
MOV R2,#0x7c
MOV R3,#-0x6e
MOV A,#((Onboard_wait >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R6
CLR C
RRC A
MOV R6,A
JNZ ??InitBoard_3
??InitBoard_2:
MOV R6,#0x8
SJMP ??InitBoard_3
// 103
// 104 /* Timer2 for Osal timer
// 105 * This development board uses ATmega128 Timer/Counter3 to provide
// 106 * system clock ticks for the OSAL scheduler. These functions perform
// 107 * the hardware specific actions required by the OSAL_Timers module.
// 108 */
// 109 OnboardTimerIntEnable = FALSE;
??InitBoard_1:
CLR A
MOV DPTR,#OnboardTimerIntEnable
MOVX @DPTR,A
// 110 HalTimerConfig (OSAL_TIMER, // 8bit timer2
// 111 HAL_TIMER_MODE_CTC, // Clear Timer on Compare
// 112 HAL_TIMER_CHANNEL_SINGLE, // Channel 1 - default
// 113 HAL_TIMER_CH_MODE_OUTPUT_COMPARE, // Output Compare mode
// 114 OnboardTimerIntEnable, // Use interrupt
// 115 Onboard_TimerCallBack); // Channel Mode
; Setup parameters for call to function HalTimerConfig
MOV ?V0 + 0,#(Onboard_TimerCallBack & 0xff)
MOV ?V0 + 1,#((Onboard_TimerCallBack >> 8) & 0xff)
MOV ?V0 + 2,#((Onboard_TimerCallBack >> 16) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R5,#0x0
MOV R4,#0x2
MOV R3,#0x1
MOV R2,#0x2
MOV R1,#0x2
MOV DPTR,#(HalTimerConfig & 0xffff)
MOV A,#((HalTimerConfig >> 16) & 0xff)
SJMP ??InitBoard_4
CFI CFA_XSP16 add(XSP16, 11)
// 116
// 117 }
// 118 else // !OB_COLD
// 119 {
// 120 #ifdef ZTOOL_PORT
// 121 MT_IndReset();
// 122 #endif
// 123
// 124 /* Initialize Key stuff */
// 125 OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;
??InitBoard_0:
CLR A
MOV DPTR,#OnboardKeyIntEnable
MOVX @DPTR,A
// 126 HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
; Setup parameters for call to function HalKeyConfig
MOV ?V0 + 0,#(OnBoard_KeyCallback & 0xff)
MOV ?V0 + 1,#((OnBoard_KeyCallback >> 8) & 0xff)
MOV ?V0 + 2,#((OnBoard_KeyCallback >> 16) & 0xff)
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R1,#0x0
MOV DPTR,#(HalKeyConfig & 0xffff)
MOV A,#((HalKeyConfig >> 16) & 0xff)
??InitBoard_4:
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 11)
// 127 }
// 128 }
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock0
// 129
// 130 /*********************************************************************
// 131 * @fn ChkReset()
// 132 * @brief Check reset bits - if reset cause is unknown, assume a
// 133 * brown-out (low power), assume batteries are not reliable,
// 134 * hang in a loop and sequence through the LEDs.
// 135 * @param None
// 136 * @return None
// 137 *********************************************************************/
// 138 void ChkReset( void )
// 139 {
// 140 uint8 led;
// 141 uint8 rib;
// 142
// 143 // Isolate reset indicator bits
// 144 rib = SLEEP & LRESET;
// 145
// 146 if ( rib == RESETPO )
// 147 {
// 148 // Put code here to handle Power-On reset
// 149 }
// 150 else if ( rib == RESETEX )
// 151 {
// 152 // Put code here to handle External reset
// 153 }
// 154 else if ( rib == RESETWD )
// 155 {
// 156 // Put code here to handle WatchDog reset
// 157 }
// 158 else
// 159 {
// 160 // Unknown, hang and blink
// 161 HAL_DISABLE_INTERRUPTS();
// 162 led = HAL_LED_4;
// 163 while ( 1 ) {
// 164 HalLedSet( led, HAL_LED_MODE_ON );
// 165 MicroWait( 62500 );
// 166 MicroWait( 62500 );
// 167 HalLedSet( led, HAL_LED_MODE_OFF );
// 168 MicroWait( 37500 );
// 169 MicroWait( 37500 );
// 170 if ( !(led >>= 1) )
// 171 led = HAL_LED_4;
// 172 }
// 173 }
// 174 }
// 175
// 176 /*********************************************************************
// 177 * "Keyboard" Support
// 178 *********************************************************************/
// 179
// 180 /*********************************************************************
// 181 * Keyboard Register function
// 182 *
// 183 * The keyboard handler is setup to send all keyboard changes to
// 184 * one task (if a task is registered).
// 185 *
// 186 * If a task registers, it will get all the keys. You can change this
// 187 * to register for individual keys.
// 188 *********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 189 byte RegisterForKeys( byte task_id )
RegisterForKeys:
CFI Block cfiBlock1 Using cfiCommon0
CFI Function RegisterForKeys
// 190 {
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
// 191 // Allow only the first task
// 192 if ( registeredKeysTaskID == NO_TASK_ID )
MOV DPTR,#??registeredKeysTaskID
MOVX A,@DPTR
XRL A,#0xff
JNZ ??RegisterForKeys_0
// 193 {
// 194 registeredKeysTaskID = task_id;
MOV A,R1
MOVX @DPTR,A
// 195 return ( true );
MOV R1,#0x1
SJMP ??RegisterForKeys_1
// 196 }
// 197 else
// 198 return ( false );
??RegisterForKeys_0:
MOV R1,#0x0
??RegisterForKeys_1:
LJMP ?Subroutine0 & 0xFFFF
CFI EndBlock cfiBlock1
// 199 }
// 200
// 201 /*********************************************************************
// 202 * @fn OnBoard_SendKeys
// 203 *
// 204 * @brief Send "Key Pressed" message to application.
// 205 *
// 206 * @param keys - keys that were pressed
// 207 * state - shifted
// 208 *
// 209 * @return status
// 210 *********************************************************************/
RSEG BANKED_CODE:CODE:NOROOT(0)
// 211 byte OnBoard_SendKeys( byte keys, byte state )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -