onboard.lst
来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,258 行 · 第 1/5 页
LST
1,258 行
\ 000000 DS 1
58
59 // 64-bit Extended Address of this device
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
60 uint8 aExtendedAddress[8];
\ aExtendedAddress:
\ 000000 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.
\ In segment XDATA_I, align 1, keep-with-next
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 43FE02 ORL 0xfe,#0x2
\ 00000E 43FE01 ORL 0xfe,#0x1
\ 000011 438F20 ORL 0x8f,#0x20
97 // Interrupts off
98 osal_int_disable( INTS_ALL );
\ 000014 ; Setup parameters for call to function osal_int_disable
\ 000014 79FF MOV R1,#-0x1
\ 000016 90.... MOV DPTR,#(osal_int_disable & 0xffff)
\ 000019 74.. MOV A,#((osal_int_disable >> 16) & 0xff)
\ 00001B 12.... LCALL ?BCALL ; Banked call to: DPTR()
99 // Turn all LEDs off
100 HalLedSet( HAL_LED_ALL, HAL_LED_MODE_OFF );
\ 00001E ; Setup parameters for call to function HalLedSet
\ 00001E 7A00 MOV R2,#0x0
\ 000020 790F MOV R1,#0xf
\ 000022 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 000025 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 000027 12.... LCALL ?BCALL ; Banked call to: DPTR()
101 // Check for Brown-Out reset
102 ChkReset();
\ 00002A 7418 MOV A,#0x18
\ 00002C 55BE ANL A,0xbe
\ 00002E FA MOV R2,A
\ 00002F 605A JZ ??InitBoard_1
\ 000031 7408 MOV A,#0x8
\ 000033 6A XRL A,R2
\ 000034 6055 JZ ??InitBoard_1
\ 000036 7410 MOV A,#0x10
\ 000038 6A XRL A,R2
\ 000039 6050 JZ ??InitBoard_1
\ 00003B C2AF CLR 0xa8.7
\ 00003D 8048 SJMP ??InitBoard_2
\ ??InitBoard_3:
\ 00003F ; Setup parameters for call to function HalLedSet
\ 00003F 7A01 MOV R2,#0x1
\ 000041 EE MOV A,R6
\ 000042 F9 MOV R1,A
\ 000043 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 000046 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 000048 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00004B ; Setup parameters for call to function Onboard_wait
\ 00004B 7A24 MOV R2,#0x24
\ 00004D 7BF4 MOV R3,#-0xc
\ 00004F 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000052 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000054 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000057 ; Setup parameters for call to function Onboard_wait
\ 000057 7A24 MOV R2,#0x24
\ 000059 7BF4 MOV R3,#-0xc
\ 00005B 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00005D 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000060 ; Setup parameters for call to function HalLedSet
\ 000060 7A00 MOV R2,#0x0
\ 000062 EE MOV A,R6
\ 000063 F9 MOV R1,A
\ 000064 90.... MOV DPTR,#(HalLedSet & 0xffff)
\ 000067 74.. MOV A,#((HalLedSet >> 16) & 0xff)
\ 000069 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00006C ; Setup parameters for call to function Onboard_wait
\ 00006C 7A7C MOV R2,#0x7c
\ 00006E 7B92 MOV R3,#-0x6e
\ 000070 90.... MOV DPTR,#(Onboard_wait & 0xffff)
\ 000073 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 000075 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000078 ; Setup parameters for call to function Onboard_wait
\ 000078 7A7C MOV R2,#0x7c
\ 00007A 7B92 MOV R3,#-0x6e
\ 00007C 74.. MOV A,#((Onboard_wait >> 16) & 0xff)
\ 00007E 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000081 EE MOV A,R6
\ 000082 C3 CLR C
\ 000083 13 RRC A
\ 000084 FE MOV R6,A
\ 000085 70B8 JNZ ??InitBoard_3
\ ??InitBoard_2:
\ 000087 7E08 MOV R6,#0x8
\ 000089 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:
\ 00008B E4 CLR A
\ 00008C 90.... MOV DPTR,#OnboardTimerIntEnable
\ 00008F 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
\ 000090 ; Setup parameters for call to function HalTimerConfig
\ 000090 75.... MOV ?V0 + 0,#(Onboard_TimerCallBack & 0xff)
\ 000093 75.... MOV ?V0 + 1,#((Onboard_TimerCallBack >> 8) & 0xff)
\ 000096 75.... MOV ?V0 + 2,#((Onboard_TimerCallBack >> 16) & 0xff)
\ 000099 78.. MOV R0,#?V0 + 0
\ 00009B 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 00009E 7D00 MOV R5,#0x0
\ 0000A0 7C02 MOV R4,#0x2
\ 0000A2 7B01 MOV R3,#0x1
\ 0000A4 7A02 MOV R2,#0x2
\ 0000A6 7902 MOV R1,#0x2
\ 0000A8 90.... MOV DPTR,#(HalTimerConfig & 0xffff)
\ 0000AB 74.. MOV A,#((HalTimerConfig >> 16) & 0xff)
\ 0000AD 8022 SJMP ??InitBoard_4
116
117 }
118 else // !OB_COLD
119 {
120 #ifdef ZTOOL_PORT
121 MT_IndReset();
\ ??InitBoard_0:
\ 0000AF ; Setup parameters for call to function MT_IndReset
\ 0000AF 90.... MOV DPTR,#(MT_IndReset & 0xffff)
\ 0000B2 74.. MOV A,#((MT_IndReset >> 16) & 0xff)
\ 0000B4 12.... LCALL ?BCALL ; Banked call to: DPTR()
122 #endif
123
124 /* Initialize Key stuff */
125 OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;
\ 0000B7 E4 CLR A
\ 0000B8 90.... MOV DPTR,#OnboardKeyIntEnable
\ 0000BB F0 MOVX @DPTR,A
126 HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
\ 0000BC ; Setup parameters for call to function HalKeyConfig
\ 0000BC 75.... MOV ?V0 + 0,#(OnBoard_KeyCallback & 0xff)
\ 0000BF 75.... MOV ?V0 + 1,#((OnBoard_KeyCallback >> 8) & 0xff)
\ 0000C2 75.... MOV ?V0 + 2,#((OnBoard_KeyCallback >> 16) & 0xff)
\ 0000C5 78.. MOV R0,#?V0 + 0
\ 0000C7 12.... LCALL ?PUSH_XSTACK_I_THREE
\ 0000CA 7900 MOV R1,#0x0
\ 0000CC 90.... MOV DPTR,#(HalKeyConfig & 0xffff)
\ 0000CF 74.. MOV A,#((HalKeyConfig >> 16) & 0xff)
\ ??InitBoard_4:
\ 0000D1 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000D4 7403 MOV A,#0x3
\ 0000D6 12.... LCALL ?DEALLOC_XSTACK8
127 }
128 }
\ 0000D9 7F03 MOV R7,#0x3
\ 0000DB 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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?