📄 onboard.lst
字号:
\ 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
192 if ( registeredKeysTaskID == NO_TASK_ID )
\ 000004 90.... MOV DPTR,#??registeredKeysTaskID
\ 000007 E0 MOVX A,@DPTR
\ 000008 64FF XRL A,#0xff
\ 00000A 7006 JNZ ??RegisterForKeys_0
193 {
194 registeredKeysTaskID = task_id;
\ 00000C E9 MOV A,R1
\ 00000D F0 MOVX @DPTR,A
195 return ( true );
\ 00000E 7901 MOV R1,#0x1
\ 000010 8002 SJMP ??RegisterForKeys_1
196 }
197 else
198 return ( false );
\ ??RegisterForKeys_0:
\ 000012 7900 MOV R1,#0x0
\ ??RegisterForKeys_1:
\ 000014 02.... LJMP ?Subroutine0 & 0xFFFF
199 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 D083 POP DPH
\ 000002 D082 POP DPL
\ 000004 02.... LJMP ?BRET
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 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
211 byte OnBoard_SendKeys( byte keys, byte state )
\ OnBoard_SendKeys:
212 {
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
\ 000005 E9 MOV A,R1
\ 000006 FE MOV R6,A
\ 000007 EA MOV A,R2
\ 000008 FF MOV R7,A
213 keyChange_t *msgPtr;
214
215 if ( registeredKeysTaskID != NO_TASK_ID )
\ 000009 90.... MOV DPTR,#??registeredKeysTaskID
\ 00000C E0 MOVX A,@DPTR
\ 00000D 64FF XRL A,#0xff
\ 00000F 6037 JZ ??OnBoard_SendKeys_0
216 {
217 // Send the address to the task
218 msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );
\ 000011 ; Setup parameters for call to function osal_msg_allocate
\ 000011 7A04 MOV R2,#0x4
\ 000013 7B00 MOV R3,#0x0
\ 000015 90.... MOV DPTR,#(osal_msg_allocate & 0xffff)
\ 000018 74.. MOV A,#((osal_msg_allocate >> 16) & 0xff)
\ 00001A 12.... LCALL ?BCALL ; Banked call to: DPTR()
219 if ( msgPtr )
\ 00001D EA MOV A,R2
\ 00001E 7001 JNZ ??OnBoard_SendKeys_1
\ 000020 EB MOV A,R3
\ ??OnBoard_SendKeys_1:
\ 000021 6021 JZ ??OnBoard_SendKeys_2
220 {
221 msgPtr->hdr.event = KEY_CHANGE;
\ 000023 74C0 MOV A,#-0x40
\ 000025 8A82 MOV DPL,R2
\ 000027 8B83 MOV DPH,R3
\ 000029 F0 MOVX @DPTR,A
222 msgPtr->state = state;
\ 00002A EF MOV A,R7
\ 00002B A3 INC DPTR
\ 00002C A3 INC DPTR
\ 00002D F0 MOVX @DPTR,A
223 msgPtr->keys = keys;
\ 00002E EE MOV A,R6
\ 00002F 8A82 MOV DPL,R2
\ 000031 8B83 MOV DPH,R3
\ 000033 A3 INC DPTR
\ 000034 A3 INC DPTR
\ 000035 A3 INC DPTR
\ 000036 F0 MOVX @DPTR,A
224
225 osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );
\ 000037 ; Setup parameters for call to function osal_msg_send
\ 000037 90.... MOV DPTR,#??registeredKeysTaskID
\ 00003A E0 MOVX A,@DPTR
\ 00003B F9 MOV R1,A
\ 00003C 90.... MOV DPTR,#(osal_msg_send & 0xffff)
\ 00003F 74.. MOV A,#((osal_msg_send >> 16) & 0xff)
\ 000041 12.... LCALL ?BCALL ; Banked call to: DPTR()
226 }
227 return ( ZSuccess );
\ ??OnBoard_SendKeys_2:
\ 000044 7900 MOV R1,#0x0
\ 000046 8002 SJMP ??OnBoard_SendKeys_3
228 }
229 else
230 return ( ZFailure );
\ ??OnBoard_SendKeys_0:
\ 000048 7901 MOV R1,#0x1
\ ??OnBoard_SendKeys_3:
\ 00004A 7F02 MOV R7,#0x2
\ 00004C 02.... LJMP ?BANKED_LEAVE_XDATA
231 }
232
233 /*********************************************************************
234 * @fn OnBoard_KeyCallback
235 *
236 * @brief Callback service for keys
237 *
238 * @param keys - keys that were pressed
239 * state - shifted
240 *
241 * @return void
242 *********************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -