cc2420db_library.lst
来自「MatLab图像传感器网络仿真平台WiSNAP」· LST 代码 · 共 1,465 行 · 第 1/5 页
LST
1,465 行
1 .file "cc2420db_library.c"
2 .arch atmega128
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
12 .text
13 .Ltext0:
97 .global basicRfReceivePacket
99 basicRfReceivePacket:
1:cc2420db_library.c **** /*******************************************************************************
2:cc2420db_library.c **** * Chipcon CC2420DB Library. *
3:cc2420db_library.c **** * *
4:cc2420db_library.c **** * Functions: *
5:cc2420db_library.c **** * ========== *
6:cc2420db_library.c **** * *
7:cc2420db_library.c **** * o Read ATmega128 Register *
8:cc2420db_library.c **** * Command..: 'axx<CR/LF>' *
9:cc2420db_library.c **** * Response.: ':AXXYY<CR><LF>' *
10:cc2420db_library.c **** * *
11:cc2420db_library.c **** * o Write ATmega128 Register *
12:cc2420db_library.c **** * Command..: 'bxxyy<CR/LF>' *
13:cc2420db_library.c **** * Response.: ':BXXYY<CR><LF>' *
14:cc2420db_library.c **** * *
15:cc2420db_library.c **** * o Read CC2420 Register *
16:cc2420db_library.c **** * Command..: 'cxx<CR/LF>' *
17:cc2420db_library.c **** * Response.: ':CXXYY<CR><LF>' *
18:cc2420db_library.c **** * *
19:cc2420db_library.c **** * o Write CC2420 Register *
20:cc2420db_library.c **** * Command..: 'dxxyy<CR/LF>' *
21:cc2420db_library.c **** * Response.: ':DXXYY<CR><LF>' *
22:cc2420db_library.c **** * *
23:cc2420db_library.c **** * o Initialize CC2420 Transceiver *
24:cc2420db_library.c **** * Command..: 'iccppppaaaa<CR/LF>' *
25:cc2420db_library.c **** * Response.: ':ICCPPPPAAAA<CR><LF>' *
26:cc2420db_library.c **** * *
27:cc2420db_library.c **** * o Receive CC2420 Packet *
28:cc2420db_library.c **** * Command..: 'r<CR/LF>' *
29:cc2420db_library.c **** * Response.: ':R<CR><LF>' if no packet received. *
30:cc2420db_library.c **** * ':RSSAAAAPPPPLLD...KKRR<CR><LF>' if packet received. *
31:cc2420db_library.c **** * *
32:cc2420db_library.c **** * o Send CC2420 Packet *
33:cc2420db_library.c **** * Command..: 'sppppaaaalld...kk<CR/LF>' *
34:cc2420db_library.c **** * Response.: ':SEE<CR><LF>' *
35:cc2420db_library.c **** * *
36:cc2420db_library.c **** * o Toggle Location LED *
37:cc2420db_library.c **** * Command..: 't<CR/LF>' *
38:cc2420db_library.c **** * Response.: ':T<CR><LF>' *
39:cc2420db_library.c **** * *
40:cc2420db_library.c **** * o Unknown and Invalid Commands *
41:cc2420db_library.c **** * Response.: ':?<CR><LF>' *
42:cc2420db_library.c **** * *
43:cc2420db_library.c **** * Arguments: *
44:cc2420db_library.c **** * ========== *
45:cc2420db_library.c **** * *
46:cc2420db_library.c **** * 'A...' Transceiver/packet source/destination address (hexadecimal). *
47:cc2420db_library.c **** * 'C...' Transceiver ISM channel number (hexdecimal). *
48:cc2420db_library.c **** * 'D...' Packet payload (hexadecimal). *
49:cc2420db_library.c **** * 'E...' Success status (hexadecimal: 0 = error, 1 = success). *
50:cc2420db_library.c **** * 'K...' Packet acknowledge request (hexadecimal). *
51:cc2420db_library.c **** * 'L...' Packet payload length in bytes (hexadecimal). *
52:cc2420db_library.c **** * 'P...' Transceiver/packet source/destination PAN ID (hexadecimal). *
53:cc2420db_library.c **** * 'R...' Packet received signal strength indicator (hexadecimal). *
54:cc2420db_library.c **** * 'S...' Packet sequence number (hexadecimal). *
55:cc2420db_library.c **** * 'X...' Register address (hexadecimal). *
56:cc2420db_library.c **** * 'Y...' Register value (hexadecimal). *
57:cc2420db_library.c **** * *
58:cc2420db_library.c **** * Hardware Setup: *
59:cc2420db_library.c **** * =============== *
60:cc2420db_library.c **** * *
61:cc2420db_library.c **** * *
62:cc2420db_library.c **** * Compiler: AVR-GCC *
63:cc2420db_library.c **** * Platform: Chipcon CC2420DB *
64:cc2420db_library.c **** * Revision: 02-21-2005 *
65:cc2420db_library.c **** * *
66:cc2420db_library.c **** * (C) 2005 Stephan Hengstler, Stanford Wireless Sensor Networks Lab *
67:cc2420db_library.c **** *******************************************************************************/
68:cc2420db_library.c ****
69:cc2420db_library.c **** #include <include.h>
70:cc2420db_library.c **** #include <ctype.h>
71:cc2420db_library.c **** #include <stdio.h>
72:cc2420db_library.c ****
73:cc2420db_library.c **** /*******************************************************************************
74:cc2420db_library.c **** * Global Variables *
75:cc2420db_library.c **** *******************************************************************************/
76:cc2420db_library.c ****
77:cc2420db_library.c **** /* basic rf transmission and reception structures */
78:cc2420db_library.c **** BASIC_RF_RX_INFO rfRxInfo;
79:cc2420db_library.c **** BASIC_RF_TX_INFO rfTxInfo;
80:cc2420db_library.c **** BYTE pTxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
81:cc2420db_library.c **** BYTE pRxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
82:cc2420db_library.c ****
83:cc2420db_library.c **** /* library-specific packet transmission and reception structures */
84:cc2420db_library.c **** BOOL sig_packet_rx;
85:cc2420db_library.c ****
86:cc2420db_library.c **** /*******************************************************************************
87:cc2420db_library.c **** * Function: BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI) *
88:cc2420db_library.c **** * *
89:cc2420db_library.c **** * DESCRIPTION: *
90:cc2420db_library.c **** * This function is a part of the basic RF library, but must be declared by *
91:cc2420db_library.c **** * the application. Once the application has turned on the receiver, using *
92:cc2420db_library.c **** * basicRfReceiveOn(), all incoming packets will be received by the FIFOP *
93:cc2420db_library.c **** * interrupt service routine. When finished, the ISR will call the *
94:cc2420db_library.c **** * basicRfReceivePacket() function. Please note that this function must *
95:cc2420db_library.c **** * return quickly, since the next received packet will overwrite the active *
96:cc2420db_library.c **** * BASIC_RF_RX_INFO structure (pointed to by pRRI). *
97:cc2420db_library.c **** * *
98:cc2420db_library.c **** * ARGUMENTS: *
99:cc2420db_library.c **** * BASIC_RF_RX_INFO *pRRI *
100:cc2420db_library.c **** * The reception structure, which contains all relevant info about the *
101:cc2420db_library.c **** * received packet. *
102:cc2420db_library.c **** * *
103:cc2420db_library.c **** * RETURN VALUE: *
104:cc2420db_library.c **** * BASIC_RF_RX_INFO* *
105:cc2420db_library.c **** * The pointer to the next BASIC_RF_RX_INFO structure to be used by the *
106:cc2420db_library.c **** * FIFOP ISR. If there is only one buffer, then return pRRI. *
107:cc2420db_library.c **** *******************************************************************************/
108:cc2420db_library.c **** BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI)
109:cc2420db_library.c **** {
101 .LM1:
102 /* prologue: frame size=0 */
103 0000 0F93 push r16
104 0002 1F93 push r17
105 /* prologue end (size=2) */
106 0004 8C01 movw r16,r24
110:cc2420db_library.c ****
111:cc2420db_library.c **** /* blink the red led */
112:cc2420db_library.c **** SET_RLED();
108 .LM2:
109 0006 1B9A sbi 35-0x20,3
113:cc2420db_library.c **** halWait(10000);
111 .LM3:
112 0008 80E1 ldi r24,lo8(10000)
113 000a 97E2 ldi r25,hi8(10000)
114 000c 0E94 0000 call halWait
114:cc2420db_library.c **** CLR_RLED();
116 .LM4:
117 0010 1B98 cbi 35-0x20,3
115:cc2420db_library.c ****
116:cc2420db_library.c **** /* signal packet reception */
117:cc2420db_library.c **** sig_packet_rx = TRUE;
119 .LM5:
120 0012 81E0 ldi r24,lo8(1)
121 0014 8093 0000 sts sig_packet_rx,r24
118:cc2420db_library.c ****
119:cc2420db_library.c **** /* continue using the (one and only) reception structure */
120:cc2420db_library.c **** return pRRI;
121:cc2420db_library.c **** }
123 .LM6:
124 0018 C801 movw r24,r16
125 /* epilogue: frame size=0 */
126 001a 1F91 pop r17
127 001c 0F91 pop r16
128 001e 0895 ret
129 /* epilogue end (size=3) */
130 /* function basicRfReceivePacket size 16 (11) */
132 .Lscope0:
136 .global RfSendPacket
138 RfSendPacket:
122:cc2420db_library.c ****
123:cc2420db_library.c **** /*******************************************************************************
124:cc2420db_library.c **** * Function: RF Send Packet. *
125:cc2420db_library.c **** *******************************************************************************/
126:cc2420db_library.c **** int RfSendPacket(BASIC_RF_TX_INFO *rfTxInfo)
127:cc2420db_library.c **** {
140 .LM7:
141 /* prologue: frame size=0 */
142 0020 CF93 push r28
143 0022 DF93 push r29
144 /* prologue end (size=2) */
128:cc2420db_library.c **** int status;
129:cc2420db_library.c ****
130:cc2420db_library.c **** status = basicRfSendPacket(rfTxInfo);
146 .LM8:
147 0024 0E94 0000 call basicRfSendPacket
148 0028 C82F mov r28,r24
149 002a DD27 clr r29
131:cc2420db_library.c **** if (status)
151 .LM9:
152 002c 2097 sbiw r28,0
153 002e 39F0 breq .L3
132:cc2420db_library.c **** {
133:cc2420db_library.c ****
134:cc2420db_library.c **** /* blink the yellow led */
135:cc2420db_library.c **** SET_YLED();
155 .LM10:
156 0030 1C9A sbi 35-0x20,4
136:cc2420db_library.c **** halWait(10000);
158 .LM11:
159 0032 80E1 ldi r24,lo8(10000)
160 0034 97E2 ldi r25,hi8(10000)
161 0036 0E94 0000 call halWait
137:cc2420db_library.c **** CLR_YLED();
163 .LM12:
164 003a 1C98 cbi 35-0x20,4
165 003c 06C0 rjmp .L4
166 .L3:
138:cc2420db_library.c ****
139:cc2420db_library.c **** }
140:cc2420db_library.c **** else
141:cc2420db_library.c **** {
142:cc2420db_library.c ****
143:cc2420db_library.c **** /* blink the orange led */
144:cc2420db_library.c **** SET_OLED();
168 .LM13:
169 003e C49A sbi 56-0x20,4
145:cc2420db_library.c **** halWait(10000);
171 .LM14:
172 0040 80E1 ldi r24,lo8(10000)
173 0042 97E2 ldi r25,hi8(10000)
174 0044 0E94 0000 call halWait
146:cc2420db_library.c **** CLR_OLED();
176 .LM15:
177 0048 C498 cbi 56-0x20,4
178 .L4:
147:cc2420db_library.c ****
148:cc2420db_library.c **** }
149:cc2420db_library.c ****
150:cc2420db_library.c **** /* return status */
151:cc2420db_library.c **** return status;
152:cc2420db_library.c **** }
180 .LM16:
181 004a CE01 movw r24,r28
182 /* epilogue: frame size=0 */
183 004c DF91 pop r29
184 004e CF91 pop r28
185 0050 0895 ret
186 /* epilogue end (size=3) */
187 /* function RfSendPacket size 25 (20) */
190 .Lscope1:
192 .data
193 .LC0:
194 0000 2532 5800 .string "%2X"
195 .LC1:
196 0004 3A25 6325 .string ":%c%02X%02X\r\n"
196 3032 5825
196 3032 580D
196 0A00
197 .text
201 .global read_at_register
203 read_at_register:
153:cc2420db_library.c ****
154:cc2420db_library.c **** /*******************************************************************************
155:cc2420db_library.c **** * Function: Read ATmega128 register. *
156:cc2420db_library.c **** *******************************************************************************/
157:cc2420db_library.c **** int read_at_register(char *command, char *response)
158:cc2420db_library.c **** {
205 .LM17:
206 /* prologue: frame size=2 */
207 0052 EF92 push r14
208 0054 FF92 push r15
209 0056 0F93 push r16
210 0058 1F93 push r17
211 005a CF93 push r28
212 005c DF93 push r29
213 005e CDB7 in r28,__SP_L__
214 0060 DEB7 in r29,__SP_H__
215 0062 2297 sbiw r28,2
216 0064 0FB6 in __tmp_reg__,__SREG__
217 0066 F894 cli
218 0068 DEBF out __SP_H__,r29
219 006a 0FBE out __SREG__,__tmp_reg__
220 006c CDBF out __SP_L__,r28
221 /* prologue end (size=14) */
222 006e 8C01 movw r16,r24
223 0070 7B01 movw r14,r22
159:cc2420db_library.c **** int status;
160:cc2420db_library.c **** unsigned int address = 0, value = 0;
225 .LM18:
226 0072 1982 std Y+1,__zero_reg__
227 0074 1A82 std Y+2,__zero_reg__
161:cc2420db_library.c ****
162:cc2420db_library.c **** /* parse command argument(s) */
163:cc2420db_library.c **** status = sscanf(&command[1], "%2X", &address);
229 .LM19:
230 0076 CE01 movw r24,r28
231 0078 0196 adiw r24,1
232 007a 9F93 push r25
233 007c 8F93 push r24
234 007e 80E0 ldi r24,lo8(.LC0)
235 0080 90E0 ldi r25,hi8(.LC0)
236 0082 9F93 push r25
237 0084 8F93 push r24
238 0086 0F5F subi r16,lo8(-(1))
239 0088 1F4F sbci r17,hi8(-(1))
240 008a 1F93 push r17
241 008c 0F93 push r16
242 008e 0E94 0000 call sscanf
164:cc2420db_library.c ****
165:cc2420db_library.c **** /* execute command */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?