📄 rf_blink_led.lst
字号:
1 .file "rf_blink_led.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:
91 .global basicRfReceivePacket
93 basicRfReceivePacket:
1:rf_blink_led.c **** /**************************************************************************************************
2:rf_blink_led.c **** *
3:rf_blink_led.c **** * **********
4:rf_blink_led.c **** * ************
5:rf_blink_led.c **** * *** ***
6:rf_blink_led.c **** * *** +++ ***
7:rf_blink_led.c **** * *** + + ***
8:rf_blink_led.c **** * *** + CHIPCON CC2420DBK EXAMPLES
9:rf_blink_led.c **** * *** + + *** Simple wireless dimmer / RF range tester demo
10:rf_blink_led.c **** * *** +++ ***
11:rf_blink_led.c **** * *** ***
12:rf_blink_led.c **** * ************
13:rf_blink_led.c **** * **********
14:rf_blink_led.c **** *
15:rf_blink_led.c **** **************************************************************************************************
16:rf_blink_led.c **** * This program demonstrates the use of the CC2420DB library, including the basic RF library. The
17:rf_blink_led.c **** * packet protocol being used is a small subset of the IEEE 802.15.4 standard. It uses an 802.15.4
18:rf_blink_led.c **** * compatible frame format, but does not implement any other MAC functions/mechanisms (e.g. CSMA-CA
19:rf_blink_led.c **** * The basic RF library can thus not be used to communicate with compliant 802.15.4 networks.
20:rf_blink_led.c **** *
21:rf_blink_led.c **** * A pair of CC2420DBs running this program will establish a point-to-point RF link on channel 26,
22:rf_blink_led.c **** * using the following node addresses:
23:rf_blink_led.c **** * - PAN ID: 0x2420 (both nodes)
24:rf_blink_led.c **** * - Short address:
25:rf_blink_led.c **** * 0x1234 if the joystick is moved in any direction at startup
26:rf_blink_led.c **** * 0x5678 if the joystick button is pressed down at startup
27:rf_blink_led.c **** *
28:rf_blink_led.c **** * Please note that there is no so-called (PAN) coordinator.
29:rf_blink_led.c **** *
30:rf_blink_led.c **** * INSTRUCTIONS:
31:rf_blink_led.c **** * Data packets containing a 5-byte payload will be transmitted when the pot meter is turned, or S2
32:rf_blink_led.c **** * held down. The first byte of the payload contains the pot meter value, which is used to control
33:rf_blink_led.c **** * PWM duty cycle on the receiving node. The other bytes are random (never initialized).
34:rf_blink_led.c **** *
35:rf_blink_led.c **** * LED indicators:
36:rf_blink_led.c **** * - Red: Transmission failed (acknowledgment not received)
37:rf_blink_led.c **** * - Yellow: Transmission OK (acknowledgment received)
38:rf_blink_led.c **** * - Orange: Remote controlled dimmer *
39:rf_blink_led.c **** * - Green: Packet received
40:rf_blink_led.c **** **************************************************************************************************
41:rf_blink_led.c **** * Compiler: AVR-GCC
42:rf_blink_led.c **** * Target platform: CC2420DB (can easily be ported to other platforms)
43:rf_blink_led.c **** **************************************************************************************************
44:rf_blink_led.c **** * Revision history:
45:rf_blink_led.c **** * $Log: rf_blink_led.c,v $
46:rf_blink_led.c **** * Revision 1.5 2004/07/26 11:18:13 mbr
47:rf_blink_led.c **** * Changed PANID from 0xDEAD to 0x2420
48:rf_blink_led.c **** *
49:rf_blink_led.c **** * Revision 1.4 2004/04/05 08:25:52 mbr
50:rf_blink_led.c **** * Comments changed in header
51:rf_blink_led.c **** *
52:rf_blink_led.c **** * Revision 1.3 2004/03/30 14:58:27 mbr
53:rf_blink_led.c **** * Release for web
54:rf_blink_led.c **** *
55:rf_blink_led.c **** *
56:rf_blink_led.c **** *
57:rf_blink_led.c **** *
58:rf_blink_led.c **** *
59:rf_blink_led.c **** *
60:rf_blink_led.c **** **************************************************************************************************
61:rf_blink_led.c **** #include <include.h>
62:rf_blink_led.c ****
63:rf_blink_led.c ****
64:rf_blink_led.c **** //-------------------------------------------------------------------------------------------------
65:rf_blink_led.c **** // Basic RF transmission and reception structures
66:rf_blink_led.c **** BASIC_RF_RX_INFO rfRxInfo;
67:rf_blink_led.c **** BASIC_RF_TX_INFO rfTxInfo;
68:rf_blink_led.c **** BYTE pTxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
69:rf_blink_led.c **** BYTE pRxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
70:rf_blink_led.c **** //-------------------------------------------------------------------------------------------------
71:rf_blink_led.c ****
72:rf_blink_led.c ****
73:rf_blink_led.c ****
74:rf_blink_led.c ****
75:rf_blink_led.c **** //-------------------------------------------------------------------------------------------------
76:rf_blink_led.c **** // BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI)
77:rf_blink_led.c **** //
78:rf_blink_led.c **** // DESCRIPTION:
79:rf_blink_led.c **** // This function is a part of the basic RF library, but must be declared by the application. O
80:rf_blink_led.c **** // the application has turned on the receiver, using basicRfReceiveOn(), all incoming packets will
81:rf_blink_led.c **** // be received by the FIFOP interrupt service routine. When finished, the ISR will call the
82:rf_blink_led.c **** // basicRfReceivePacket() function. Please note that this function must return quickly, since the
83:rf_blink_led.c **** // next received packet will overwrite the active BASIC_RF_RX_INFO structure (pointed to by pRRI).
84:rf_blink_led.c **** //
85:rf_blink_led.c **** // ARGUMENTS:
86:rf_blink_led.c **** // BASIC_RF_RX_INFO *pRRI
87:rf_blink_led.c **** // The reception structure, which contains all relevant info about the received packet.
88:rf_blink_led.c **** //
89:rf_blink_led.c **** // RETURN VALUE:
90:rf_blink_led.c **** // BASIC_RF_RX_INFO*
91:rf_blink_led.c **** // The pointer to the next BASIC_RF_RX_INFO structure to be used by the FIFOP ISR. If there is
92:rf_blink_led.c **** // only one buffer, then return pRRI.
93:rf_blink_led.c **** //-------------------------------------------------------------------------------------------------
94:rf_blink_led.c **** BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI) {
95 .LM1:
96 /* prologue: frame size=0 */
97 0000 0F93 push r16
98 0002 1F93 push r17
99 0004 CF93 push r28
100 0006 DF93 push r29
101 /* prologue end (size=4) */
102 0008 8C01 movw r16,r24
95:rf_blink_led.c ****
96:rf_blink_led.c **** // Adjust the led brightness
97:rf_blink_led.c **** PWM0_SET_DUTY_CYCLE(pRRI->pPayload[0]);
104 .LM2:
105 000a EC01 movw r28,r24
106 000c EE81 ldd r30,Y+6
107 000e FF81 ldd r31,Y+7
108 0010 8081 ld r24,Z
109 0012 81BF out 81-0x20,r24
98:rf_blink_led.c ****
99:rf_blink_led.c **** // Blink the green LED
100:rf_blink_led.c **** SET_GLED();
111 .LM3:
112 0014 C79A sbi 56-0x20,7
101:rf_blink_led.c **** halWait(10000);
114 .LM4:
115 0016 80E1 ldi r24,lo8(10000)
116 0018 97E2 ldi r25,hi8(10000)
117 001a 0E94 0000 call halWait
102:rf_blink_led.c **** CLR_GLED();
119 .LM5:
120 001e C798 cbi 56-0x20,7
103:rf_blink_led.c ****
104:rf_blink_led.c **** // Continue using the (one and only) reception structure
105:rf_blink_led.c **** return pRRI;
106:rf_blink_led.c ****
107:rf_blink_led.c **** } // basicRfReceivePacket
122 .LM6:
123 0020 C801 movw r24,r16
124 /* epilogue: frame size=0 */
125 0022 DF91 pop r29
126 0024 CF91 pop r28
127 0026 1F91 pop r17
128 0028 0F91 pop r16
129 002a 0895 ret
130 /* epilogue end (size=5) */
131 /* function basicRfReceivePacket size 22 (13) */
133 .Lscope0:
136 .global main
138 main:
108:rf_blink_led.c ****
109:rf_blink_led.c ****
110:rf_blink_led.c ****
111:rf_blink_led.c ****
112:rf_blink_led.c **** //-------------------------------------------------------------------------------------------------
113:rf_blink_led.c **** // void main (void)
114:rf_blink_led.c **** //
115:rf_blink_led.c **** // DESCRIPTION:
116:rf_blink_led.c **** // Startup routine and main loop
117:rf_blink_led.c **** //-------------------------------------------------------------------------------------------------
118:rf_blink_led.c **** void main (void) {
140 .LM7:
141 /* prologue: frame size=0 */
142 002c C0E0 ldi r28,lo8(__stack - 0)
143 002e D0E0 ldi r29,hi8(__stack - 0)
144 0030 DEBF out __SP_H__,r29
145 0032 CDBF out __SP_L__,r28
146 /* prologue end (size=4) */
119:rf_blink_led.c **** UINT16 ledDutyCycle, dimmerDifference;
120:rf_blink_led.c **** UINT8 n;
121:rf_blink_led.c ****
122:rf_blink_led.c **** // Initalize ports for communication with CC2420 and other peripheral units
123:rf_blink_led.c **** PORT_INIT();
148 .LM8:
149 0034 80B5 in r24,64-0x20
150 0036 8460 ori r24,lo8(4)
151 0038 80BD out 64-0x20,r24
152 003a 87EF ldi r24,lo8(-9)
153 003c 87BB out 55-0x20,r24
154 003e 87E4 ldi r24,lo8(71)
155 0040 88BB out 56-0x20,r24
156 0042 80E2 ldi r24,lo8(32)
157 0044 81BB out 49-0x20,r24
158 0046 80EA ldi r24,lo8(-96)
159 0048 82BB out 50-0x20,r24
160 004a 88E1 ldi r24,lo8(24)
161 004c 82B9 out 34-0x20,r24
162 004e 13B8 out 35-0x20,__zero_reg__
124:rf_blink_led.c **** SPI_INIT();
164 .LM9:
165 0050 80E5 ldi r24,lo8(80)
166 0052 8DB9 out 45-0x20,r24
167 0054 81E0 ldi r24,lo8(1)
168 0056 8EB9 out 46-0x20,r24
125:rf_blink_led.c ****
126:rf_blink_led.c **** // Initialize PWM0 with a period of CLK/1024
127:rf_blink_led.c **** PWM0_INIT(TIMER_CLK_DIV1024);
170 .LM10:
171 0058 11BE out 81-0x20,__zero_reg__
172 005a 80E7 ldi r24,lo8(112)
173 005c 83BF out 83-0x20,r24
174 005e 83B7 in r24,83-0x20
175 0060 887F andi r24,lo8(-8)
176 0062 8560 ori r24,lo8(5)
177 0064 83BF out 83-0x20,r24
128:rf_blink_led.c ****
129:rf_blink_led.c **** // Initialize and enable the ADC for reading the pot meter
130:rf_blink_led.c **** ADC_INIT();
179 .LM11:
180 0066 83E2 ldi r24,lo8(35)
181 0068 86B9 out 38-0x20,r24
182 006a 80E4 ldi r24,lo8(64)
183 006c 87B9 out 39-0x20,r24
131:rf_blink_led.c **** ADC_SET_CHANNEL(ADC_INPUT_0_POT_METER);
185 .LM12:
186 006e 87B1 in r24,39-0x20
187 0070 807E andi r24,lo8(-32)
188 0072 87B9 out 39-0x20,r24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -