📄 onboard.lst
字号:
77 static byte registeredKeysTaskID = NO_TASK_ID;
\ ??registeredKeysTaskID:
\ 000000 DS 1
\ 000001 REQUIRE `?<Initializer for registeredKeysTaskID>`
\ 000001 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 */
\ In segment BANKED_CODE, align 1, keep-with-next
91 void InitBoard( byte level )
\ InitBoard:
92 {
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
93 if ( level == OB_COLD )
\ 000005 E9 MOV A,R1
\ 000006 6003 JZ $+5
\ 000008 02.... LJMP ??InitBoard_0 & 0xFFFF
94 {
95 // Initialize HAL
96 HAL_BOARD_INIT();
\ 00000B 43FE01 ORL 0xfe,#0x1
\ 00000E 43FE02 ORL 0xfe,#0x2
\ 000011 43F701 ORL 0xf7,#0x1
\ 000014 43FE04 ORL 0xfe,#0x4
\ 000017 C292 CLR 0x90.2
97 // Interrupts off
98 osal_int_disable( INTS_ALL );
\ 000019 ; Setup parameters for call to function osal_int_disable
\ 000019 79FF MOV R1,#-0x1
\ 00001B 90.... MOV DPTR,#(osal_int_disable & 0xffff)
\ 00001E 74.. MOV A,#((osal_int_disable >> 16) & 0xff)
\ 000020 12.... LCALL ?BCALL ; Banked call to: DPTR()
99 // Turn all LEDs off
100 HalLedSet( HAL_LED_ALL, HAL_LED_MODE_OFF );
\ 000023 ; Setup parameters for call to function HalLedSet
\ 000023 7A00 MOV R2,#0x0
\ 000025 790F MOV R1,#0xf
\ 000027 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 00002A 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 00002C 12.... LCALL ?BCALL ; Banked call to: DPTR()
101 // Check for Brown-Out reset
102 ChkReset();
\ 00002F 7418 MOV A,#0x18
\ 000031 55BE ANL A,0xbe
\ 000033 FA MOV R2,A
\ 000034 605A JZ ??InitBoard_1
\ 000036 7408 MOV A,#0x8
\ 000038 6A XRL A,R2
\ 000039 6055 JZ ??InitBoard_1
\ 00003B 7410 MOV A,#0x10
\ 00003D 6A XRL A,R2
\ 00003E 6050 JZ ??InitBoard_1
\ 000040 C2AF CLR 0xa8.7
\ 000042 8048 SJMP ??InitBoard_2
\ ??InitBoard_3:
\ 000044 ; Setup parameters for call to function HalLedSet
\ 000044 7A01 MOV R2,#0x1
\ 000046 EE MOV A,R6
\ 000047 F9 MOV R1,A
\ 000048 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 00004B 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 00004D 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000050 ; Setup parameters for call to function Onboard_wait
\ 000050 7A24 MOV R2,#0x24
\ 000052 7BF4 MOV R3,#-0xc
\ 000054 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000057 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000059 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00005C ; Setup parameters for call to function Onboard_wait
\ 00005C 7A24 MOV R2,#0x24
\ 00005E 7BF4 MOV R3,#-0xc
\ 000060 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000062 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000065 ; Setup parameters for call to function HalLedSet
\ 000065 7A00 MOV R2,#0x0
\ 000067 EE MOV A,R6
\ 000068 F9 MOV R1,A
\ 000069 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 00006C 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 00006E 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000071 ; Setup parameters for call to function Onboard_wait
\ 000071 7A7C MOV R2,#0x7c
\ 000073 7B92 MOV R3,#-0x6e
\ 000075 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000078 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00007A 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00007D ; Setup parameters for call to function Onboard_wait
\ 00007D 7A7C MOV R2,#0x7c
\ 00007F 7B92 MOV R3,#-0x6e
\ 000081 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000083 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000086 EE MOV A,R6
\ 000087 C3 CLR C
\ 000088 13 RRC A
\ 000089 FE MOV R6,A
\ 00008A 70B8 JNZ ??InitBoard_3
\ ??InitBoard_2:
\ 00008C 7E08 MOV R6,#0x8
\ 00008E 80B4 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:
\ 000090 E4 CLR A
\ 000091 90.... MOV DPTR,#OnboardTimerIntEnable
\ 000094 F0 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
\ 000095 ; Setup parameters for call to function HalTimerConfig
\ 000095 75.... MOV ?V0 + 0,#(Onboard_TimerCallBack & 0xff)
\ 000098 75.... MOV ?V0 + 1,#((Onboard_TimerCallBack >> 8) & 0xff)
\ 00009B 75.... MOV ?V0 + 2,#((Onboard_TimerCallBack >> 16) & 0xff)
\ 00009E 78.. MOV R0,#?V0 + 0
\ 0000A0 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000A3 7D00 MOV R5,#0x0
\ 0000A5 7C02 MOV R4,#0x2
\ 0000A7 7B01 MOV R3,#0x1
\ 0000A9 7A02 MOV R2,#0x2
\ 0000AB 7902 MOV R1,#0x2
\ 0000AD 90.... MOV DPTR,#(HalTimerConfig & 0xffff)
\ 0000B0 74.. MOV A,#((HalTimerConfig >> 16) & 0xff)
\ 0000B2 801A SJMP ??InitBoard_4
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:
\ 0000B4 E4 CLR A
\ 0000B5 90.... MOV DPTR,#OnboardKeyIntEnable
\ 0000B8 F0 MOVX @DPTR,A
126 HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
\ 0000B9 ; Setup parameters for call to function HalKeyConfig
\ 0000B9 75.... MOV ?V0 + 0,#(OnBoard_KeyCallback & 0xff)
\ 0000BC 75.... MOV ?V0 + 1,#((OnBoard_KeyCallback >> 8) & 0xff)
\ 0000BF 75.... MOV ?V0 + 2,#((OnBoard_KeyCallback >> 16) & 0xff)
\ 0000C2 78.. MOV R0,#?V0 + 0
\ 0000C4 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000C7 7900 MOV R1,#0x0
\ 0000C9 90.... MOV DPTR,#(HalKeyConfig & 0xffff)
\ 0000CC 74.. MOV A,#((HalKeyConfig >> 16) & 0xff)
\ ??InitBoard_4:
\ 0000CE 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000D1 7403 MOV A,#0x3
\ 0000D3 12.... LCALL ?DEALLOC_XSTACK8
127 }
128 }
\ 0000D6 7F03 MOV R7,#0x3
\ 0000D8 02.... LJMP ?BANKED_LEAVE_XDATA
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 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
189 byte RegisterForKeys( byte task_id )
\ RegisterForKeys:
190 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
191 // Allow only the first task
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -