📄 sampleapphw.lst
字号:
73 * TYPEDEFS
74 */
75
76 /*********************************************************************
77 * GLOBAL VARIABLES
78 */
79
80 /*********************************************************************
81 * EXTERNAL VARIABLES
82 */
83
84 /*********************************************************************
85 * EXTERNAL FUNCTIONS
86 */
87
88 /*********************************************************************
89 * LOCAL VARIABLES
90 */
91
92 /*********************************************************************
93 * LOCAL FUNCTIONS
94 */
95
96 /*********************************************************************
97 * @fn readCoordinatorJumper
98 *
99 * @brief Checks for a jumper to determine if the device should
100 * become a coordinator
101 *
102 * NOTES: Jumper should be between P7.1 and P7.3 on the CC2430DB.
103 * P7.1 -> CC2430 P1.3
104 * p7.3 -> CC2430 P0.4
105 *
106 * NOTES: Jumper should be between I/O A pin 9 and 11 on the CC2430EB.
107 * I/O A pin 9 -> CC2430 P0.2
108 * I/O A pin 11 -> CC2430 P0.3
109 *
110 * @return TRUE if the jumper is there, FALSE if not
111 */
\ In segment BANKED_CODE, align 1, keep-with-next
112 uint8 readCoordinatorJumper( void )
\ readCoordinatorJumper:
113 {
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
114 uint8 jumpered;
115 uint8 x, y;
116 uint8 result;
117 uint8 saveJumpInSEL;
118 uint8 saveJumpInDIR;
119 uint8 saveJumpInINP;
120 uint8 saveJumpOutSEL;
121 uint8 saveJumpOutDIR;
122 uint8 saveJumpOutINP;
123
124 jumpered = TRUE;
\ 000005 7901 MOV R1,#0x1
125
126 // Setup PORTs
127 saveJumpInSEL = JUMPERIN_SEL;
\ 000007 E5F4 MOV A,0xf4
\ 000009 FC MOV R4,A
128 saveJumpInDIR = JUMPERIN_DIR;
\ 00000A E5FE MOV A,0xfe
\ 00000C FD MOV R5,A
129 saveJumpInINP = JUMPERIN_INP;
\ 00000D E5F6 MOV A,0xf6
\ 00000F FE MOV R6,A
130 saveJumpOutSEL = P0SEL;
\ 000010 E5F3 MOV A,0xf3
\ 000012 FF MOV R7,A
131 saveJumpOutDIR = P0DIR;
\ 000013 E5FD MOV A,0xfd
\ 000015 F5.. MOV ?V0 + 0,A
132 saveJumpOutINP = P0INP;
\ 000017 E58F MOV A,0x8f
\ 000019 F5.. MOV ?V0 + 1,A
133
134 JUMPERIN_SEL &= ~(JUMPERIN_BIT);
\ 00001B 53F4F7 ANL 0xf4,#0xf7
135 JUMPERIN_DIR &= ~(JUMPERIN_BIT);
\ 00001E 53FEF7 ANL 0xfe,#0xf7
136 JUMPERIN_INP &= ~(JUMPERIN_BIT);
\ 000021 53F6F7 ANL 0xf6,#0xf7
137 JUMPEROUT_SEL &= ~(JUMPEROUT_BIT);
\ 000024 53F3EF ANL 0xf3,#0xef
138 JUMPEROUT_DIR |= JUMPEROUT_BIT;
\ 000027 43FD10 ORL 0xfd,#0x10
139 JUMPEROUT_INP &= ~(JUMPERIN_BIT);
\ 00002A 538FF7 ANL 0x8f,#0xf7
140
141 for ( x = 0; x < 8; x++ )
\ 00002D 7B00 MOV R3,#0x0
142 {
143 if ( x & 0x01 )
144 {
145 JUMPEROUT |= JUMPEROUT_BIT;
146 for ( y = 0; y < 8; y++ );
147 result = JUMPERIN & JUMPERIN_BIT;
148 if ( result != JUMPERIN_BIT )
149 jumpered = FALSE;
150 }
151 else
152 {
153 JUMPEROUT &= ~(JUMPEROUT_BIT);
\ ??readCoordinatorJumper_0:
\ 00002F C284 CLR 0x80.4
154 for ( y = 0; y < 8; y++ );
\ 000031 7A08 MOV R2,#0x8
\ ??readCoordinatorJumper_1:
\ 000033 1A DEC R2
\ 000034 EA MOV A,R2
\ 000035 70FC JNZ ??readCoordinatorJumper_1
155 result = JUMPERIN & JUMPERIN_BIT;
\ 000037 7408 MOV A,#0x8
\ 000039 5590 ANL A,0x90
156 if ( result != 0x00 )
\ 00003B 701E JNZ ??readCoordinatorJumper_2
157 jumpered = FALSE;
158 }
\ ??readCoordinatorJumper_3:
\ 00003D 0B INC R3
\ 00003E EB MOV A,R3
\ 00003F C3 CLR C
\ 000040 9408 SUBB A,#0x8
\ 000042 501B JNC ??readCoordinatorJumper_4
\ 000044 EB MOV A,R3
\ 000045 A2E0 MOV C,0xE0 /* A */.0
\ 000047 50E6 JNC ??readCoordinatorJumper_0
\ 000049 D284 SETB 0x80.4
\ 00004B 7A08 MOV R2,#0x8
\ ??readCoordinatorJumper_5:
\ 00004D 1A DEC R2
\ 00004E EA MOV A,R2
\ 00004F 70FC JNZ ??readCoordinatorJumper_5
\ 000051 7408 MOV A,#0x8
\ 000053 5590 ANL A,0x90
\ 000055 FA MOV R2,A
\ 000056 7408 MOV A,#0x8
\ 000058 6A XRL A,R2
\ 000059 60E2 JZ ??readCoordinatorJumper_3
\ ??readCoordinatorJumper_2:
\ 00005B 7900 MOV R1,#0x0
\ 00005D 80DE SJMP ??readCoordinatorJumper_3
159 }
160
161 // Restore directions
162 JUMPERIN_SEL = saveJumpInSEL;
\ ??readCoordinatorJumper_4:
\ 00005F 8CF4 MOV 0xf4,R4
163 JUMPERIN_DIR = saveJumpInDIR;
\ 000061 8DFE MOV 0xfe,R5
164 JUMPERIN_INP = saveJumpInINP;
\ 000063 8EF6 MOV 0xf6,R6
165 JUMPEROUT_SEL = saveJumpOutSEL;
\ 000065 8FF3 MOV 0xf3,R7
166 JUMPEROUT_DIR = saveJumpOutDIR;
\ 000067 85..FD MOV 0xfd,?V0 + 0
167 JUMPEROUT_INP = saveJumpOutINP;
\ 00006A 85..8F MOV 0x8f,?V0 + 1
168
169 return ( jumpered );
\ 00006D 7F02 MOV R7,#0x2
\ 00006F 02.... LJMP ?BANKED_LEAVE_XDATA
170 }
\ In segment SFR_AN, at 0x80
\ union <unnamed> volatile __sfr _A_P0
\ _A_P0:
\ 000000 DS 1
\ In segment SFR_AN, at 0x90
\ union <unnamed> volatile __sfr _A_P1
\ _A_P1:
\ 000000 DS 1
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
readCoordinatorJumper 0 0 10
Segment part sizes:
Function/Label Bytes
-------------- -----
P0INP 1
P0SEL 1
P1SEL 1
P1INP 1
P0DIR 1
P1DIR 1
readCoordinatorJumper 114
_A_P0 1
_A_P1 1
114 bytes in segment BANKED_CODE
8 bytes in segment SFR_AN
114 bytes of CODE memory
0 bytes of DATA memory (+ 8 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -