?? main.lss
字號:
196: cf 3f cpi r28, 0xFF ; 255
198: 41 f0 breq .+16 ; 0x1aa
19a: e1 2f mov r30, r17
19c: ff 27 eor r31, r31
19e: e7 56 subi r30, 0x67 ; 103
1a0: ff 4f sbci r31, 0xFF ; 255
1a2: 80 81 ld r24, Z
1a4: 73 df rcall .-282 ; 0x8c
1a6: 1f 5f subi r17, 0xFF ; 255
1a8: f5 cf rjmp .-22 ; 0x194
}
//SPI_transmit(tx_data_buf[1]);
//SPI_transmit(tx_data_buf[2]);
CONTROL_PORT |= (1<<CSN);
1aa: 94 9a sbi 0x12, 4 ; 18
1ac: cf 91 pop r28
1ae: 1f 91 pop r17
1b0: 08 95 ret
000001b2 <read_rx_payload>:
}
void read_rx_payload(unsigned char rx_payload_bytes_num)
{
1b2: ff 92 push r15
1b4: 0f 93 push r16
1b6: 1f 93 push r17
1b8: cf 93 push r28
1ba: c8 2f mov r28, r24
unsigned char i;
//CSN=0;
CONTROL_PORT &= ~(1<<CSN);
1bc: 94 98 cbi 0x12, 4 ; 18
SPI_transmit(0x24);//0b00100100
1be: 84 e2 ldi r24, 0x24 ; 36
1c0: 65 df rcall .-310 ; 0x8c
i=0;
1c2: ff 24 eor r15, r15
while(rx_payload_bytes_num--)
{
rx_data_buf[i]=SPI_receive();
i++;
1c4: c1 50 subi r28, 0x01 ; 1
1c6: cf 3f cpi r28, 0xFF ; 255
1c8: 49 f0 breq .+18 ; 0x1dc
1ca: 0f 2d mov r16, r15
1cc: 11 27 eor r17, r17
1ce: 07 58 subi r16, 0x87 ; 135
1d0: 1f 4f sbci r17, 0xFF ; 255
1d2: 60 df rcall .-320 ; 0x94
1d4: f8 01 movw r30, r16
1d6: 80 83 st Z, r24
1d8: f3 94 inc r15
1da: f4 cf rjmp .-24 ; 0x1c4
}
//CSN=1;
CONTROL_PORT |= (1<<CSN);
1dc: 94 9a sbi 0x12, 4 ; 18
1de: cf 91 pop r28
1e0: 1f 91 pop r17
1e2: 0f 91 pop r16
1e4: ff 90 pop r15
1e6: 08 95 ret
000001e8 <send_rx_data_to_pc>:
}
void send_rx_data_to_pc(void)
{
1e8: 0f 93 push r16
1ea: 1f 93 push r17
1ec: cf 93 push r28
1ee: 09 e7 ldi r16, 0x79 ; 121
1f0: 10 e0 ldi r17, 0x00 ; 0
1f2: cf e1 ldi r28, 0x1F ; 31
unsigned char i;
i=0;
for(i=0;i<32;i++) //send ASCII char'Comait CRM401XNC'use UART
{
put1char(rx_data_buf[i]);
1f4: f8 01 movw r30, r16
1f6: 81 91 ld r24, Z+
1f8: 8f 01 movw r16, r30
1fa: 5c df rcall .-328 ; 0xb4
1fc: c1 50 subi r28, 0x01 ; 1
1fe: c7 ff sbrs r28, 7
200: f9 cf rjmp .-14 ; 0x1f4
202: cf 91 pop r28
204: 1f 91 pop r17
206: 0f 91 pop r16
208: 08 95 ret
0000020a <send_rf_data>:
}
}
//發送RF數據
void send_rf_data(void)
{
unsigned char i;
write_tx_address(4);
20a: 84 e0 ldi r24, 0x04 ; 4
20c: a6 df rcall .-180 ; 0x15a
write_tx_payload(32);
20e: 80 e2 ldi r24, 0x20 ; 32
210: ba df rcall .-140 ; 0x186
CONTROL_PORT |= (1<<TRX_CE);
212: 96 9a sbi 0x12, 6 ; 18
i=100;
while(i--); //等待NRF905數據傳輸完成
214: 83 e6 ldi r24, 0x63 ; 99
216: 84 50 subi r24, 0x04 ; 4
218: 8f 3f cpi r24, 0xFF ; 255
21a: e9 f7 brne .-6 ; 0x216
CONTROL_PORT &= ~(1<<TRX_CE);
21c: 96 98 cbi 0x12, 6 ; 18
21e: 08 95 ret
00000220 <transmit_mode>:
}
//發送模式
void transmit_mode(void)
{
//nrf905進入發送模式
CONTROL_PORT |= (1<<PWR_UP);
220: 97 9a sbi 0x12, 7 ; 18
CONTROL_PORT |= (1<<TRX_CE);
222: 96 9a sbi 0x12, 6 ; 18
CONTROL_PORT |= (1<<TXEN);
224: 95 9a sbi 0x12, 5 ; 18
delay_nms(2);
226: 82 e0 ldi r24, 0x02 ; 2
228: 90 e0 ldi r25, 0x00 ; 0
22a: 8c df rcall .-232 ; 0x144
22c: 08 95 ret
0000022e <receive_mode>:
}
//接收模式
void receive_mode(void)
{
//nrf905進入接收模式
CONTROL_PORT |= (1<<PWR_UP);
22e: 97 9a sbi 0x12, 7 ; 18
CONTROL_PORT |= (1<<TRX_CE);
230: 96 9a sbi 0x12, 6 ; 18
CONTROL_PORT &= ~(1<<TXEN);
232: 95 98 cbi 0x12, 5 ; 18
delay_nms(2);
234: 82 e0 ldi r24, 0x02 ; 2
236: 90 e0 ldi r25, 0x00 ; 0
238: 85 df rcall .-246 ; 0x144
23a: 08 95 ret
0000023c <read_config>:
}
void read_config(void)
{
23c: 0f 93 push r16
23e: 1f 93 push r17
240: cf 93 push r28
unsigned char i ;
CONTROL_PORT &= ~(1<<CSN);
242: 94 98 cbi 0x12, 4 ; 18
SPI_transmit(0x10); //0b00010000
244: 80 e1 ldi r24, 0x10 ; 16
246: 22 df rcall .-444 ; 0x8c
248: 0f e6 ldi r16, 0x6F ; 111
24a: 10 e0 ldi r17, 0x00 ; 0
24c: c9 e0 ldi r28, 0x09 ; 9
i =0;
for(i=0;i<10;i++)
{
xxx[i]=SPI_receive();
24e: 22 df rcall .-444 ; 0x94
250: f8 01 movw r30, r16
252: 81 93 st Z+, r24
254: 8f 01 movw r16, r30
256: c1 50 subi r28, 0x01 ; 1
258: c7 ff sbrs r28, 7
25a: f9 cf rjmp .-14 ; 0x24e
}
CONTROL_PORT |= (1<<CSN);
25c: 94 9a sbi 0x12, 4 ; 18
25e: cf 91 pop r28
260: 1f 91 pop r17
262: 0f 91 pop r16
264: 08 95 ret
00000266 <write_config>:
}
void write_config(void)
{
266: 0f 93 push r16
268: 1f 93 push r17
26a: cf 93 push r28
unsigned char i ;
CONTROL_PORT &= ~(1<<CSN);
26c: 94 98 cbi 0x12, 4 ; 18
SPI_transmit(0x00); //發送寫配置寄存器的命令
26e: 80 e0 ldi r24, 0x00 ; 0
270: 0d df rcall .-486 ; 0x8c
272: 00 e6 ldi r16, 0x60 ; 96
274: 10 e0 ldi r17, 0x00 ; 0
276: c9 e0 ldi r28, 0x09 ; 9
i =0;
for(i=0;i<10;i++)
{
SPI_transmit(config_reg_buf[i]);
278: f8 01 movw r30, r16
27a: 81 91 ld r24, Z+
27c: 8f 01 movw r16, r30
27e: 06 df rcall .-500 ; 0x8c
280: c1 50 subi r28, 0x01 ; 1
282: c7 ff sbrs r28, 7
284: f9 cf rjmp .-14 ; 0x278
}
CONTROL_PORT |= (1<<CSN);
286: 94 9a sbi 0x12, 4 ; 18
288: cf 91 pop r28
28a: 1f 91 pop r17
28c: 0f 91 pop r16
28e: 08 95 ret
00000290 <nrf905_init>:
}
//nrf905初始化
void nrf905_init(void)
{
unsigned char i;
delay_nms(10);
290: 8a e0 ldi r24, 0x0A ; 10
292: 90 e0 ldi r25, 0x00 ; 0
294: 57 df rcall .-338 ; 0x144
//STANDBY和SPI編程模式
CONTROL_PORT |= (1<<PWR_UP);
296: 97 9a sbi 0x12, 7 ; 18
CONTROL_PORT &= ~(1<<TRX_CE);
298: 96 98 cbi 0x12, 6 ; 18
CONTROL_PORT &= ~(1<<TXEN);
29a: 95 98 cbi 0x12, 5 ; 18
CONTROL_PORT |= (1<<CSN);
29c: 94 9a sbi 0x12, 4 ; 18
29e: a9 e9 ldi r26, 0x99 ; 153
2a0: b0 e0 ldi r27, 0x00 ; 0
2a2: e9 e7 ldi r30, 0x79 ; 121
2a4: f0 e0 ldi r31, 0x00 ; 0
2a6: 8f e1 ldi r24, 0x1F ; 31
i=0;
for(i=0;i<32;i++) //Clear the data buffer 清接收緩沖區
{
rx_data_buf[i]=0;
2a8: 11 92 st Z+, r1
tx_data_buf[i]=0;
2aa: 1d 92 st X+, r1
2ac: 81 50 subi r24, 0x01 ; 1
2ae: 87 ff sbrs r24, 7
2b0: fb cf rjmp .-10 ; 0x2a8
}
write_config();
2b2: d9 df rcall .-78 ; 0x266
2b4: 08 95 ret
000002b6 <__vector_1>:
}
//外部中斷0中斷服務函數
SIGNAL(SIG_INTERRUPT0)
{
2b6: 1f 92 push r1
2b8: 0f 92 push r0
2ba: 0f b6 in r0, 0x3f ; 63
2bc: 0f 92 push r0
2be: 11 24 eor r1, r1
2c0: 2f 93 push r18
2c2: 3f 93 push r19
2c4: 4f 93 push r20
2c6: 5f 93 push r21
2c8: 6f 93 push r22
2ca: 7f 93 push r23
2cc: 8f 93 push r24
2ce: 9f 93 push r25
2d0: af 93 push r26
2d2: bf 93 push r27
2d4: ef 93 push r30
2d6: ff 93 push r31
read_rx_payload(32); //保存在rx_data_buf里
2d8: 80 e2 ldi r24, 0x20 ; 32
2da: 6b df rcall .-298 ; 0x1b2
re_ok=1;
2dc: 81 e0 ldi r24, 0x01 ; 1
2de: 80 93 6e 00 sts 0x006E, r24
2e2: ff 91 pop r31
2e4: ef 91 pop r30
2e6: bf 91 pop r27
2e8: af 91 pop r26
2ea: 9f 91 pop r25
2ec: 8f 91 pop r24
2ee: 7f 91 pop r23
2f0: 6f 91 pop r22
2f2: 5f 91 pop r21
2f4: 4f 91 pop r20
2f6: 3f 91 pop r19
2f8: 2f 91 pop r18
2fa: 0f 90 pop r0
2fc: 0f be out 0x3f, r0 ; 63
2fe: 0f 90 pop r0
300: 1f 90 pop r1
302: 18 95 reti
00000304 <main>:
}
//====================================================================
//主程序開始
//====================================================================
int main(void)
{
304: cf e5 ldi r28, 0x5F ; 95
306: d4 e0 ldi r29, 0x04 ; 4
308: de bf out 0x3e, r29 ; 62
30a: cd bf out 0x3d, r28 ; 61
//------------------------
cli();
30c: f8 94 cli
port_init();
30e: a6 de rcall .-692 ; 0x5c
uart_init();
310: ad de rcall .-678 ; 0x6c
SPI_MasterInit();
312: b6 de rcall .-660 ; 0x80
sei();
314: 78 94 sei
DDRD |= (1<<PD3); //LED
316: 8b 9a sbi 0x11, 3 ; 17
CONTROL_DDR |= (1<<TRX_CE);
318: 8e 9a sbi 0x11, 6 ; 17
CONTROL_DDR |= (1<<TXEN);
31a: 8d 9a sbi 0x11, 5 ; 17
CONTROL_DDR |= (1<<PWR_UP);
31c: 8f 9a sbi 0x11, 7 ; 17
CONTROL_DDR |= (1<<CSN);
31e: 8c 9a sbi 0x11, 4 ; 17
//standby 模式
CONTROL_PORT |= (1<<PWR_UP);
320: 97 9a sbi 0x12, 7 ; 18
CONTROL_PORT &= ~(1<<TRX_CE);
322: 96 98 cbi 0x12, 6 ; 18
nrf905_init();
324: b5 df rcall .-150 ; 0x290
receive_mode(); //接收模式
326: 83 df rcall .-250 ; 0x22e
delay_nms(5);
328: 85 e0 ldi r24, 0x05 ; 5
32a: 90 e0 ldi r25, 0x00 ; 0
32c: 0b df rcall .-490 ; 0x144
//外部中斷0上升沿中斷
MCUCR |= (1<<ISC01)|(1<<ISC00);
32e: 85 b7 in r24, 0x35 ; 53
330: 83 60 ori r24, 0x03 ; 3
332: 85 bf out 0x35, r24 ; 53
GICR |= (1<<INT0);
334: 8b b7 in r24, 0x3b ; 59
336: 80 64 ori r24, 0x40 ; 64
338: 8b bf out 0x3b, r24 ; 59
tx_data_buf[0]=0x18;
33a: 88 e1 ldi r24, 0x18 ; 24
33c: 80 93 99 00 sts 0x0099, r24
tx_data_buf[1]=0xea;
340: 8a ee ldi r24, 0xEA ; 234
342: 80 93 9a 00 sts 0x009A, r24
tx_data_buf[2]=0x23;
346: 83 e2 ldi r24, 0x23 ; 35
348: 80 93 9b 00 sts 0x009B, r24
tx_data_buf[3]=0xe2;
34c: 82 ee ldi r24, 0xE2 ; 226
34e: 80 93 9c 00 sts 0x009C, r24
tx_data_buf[4]=0xf5;
352: 85 ef ldi r24, 0xF5 ; 245
354: 80 93 9d 00 sts 0x009D, r24
while(1)
{
if(get1char()==0x26)
358: b1 de rcall .-670 ; 0xbc
35a: 86 32 cpi r24, 0x26 ; 38
35c: 39 f4 brne .+14 ; 0x36c
{
transmit_mode(); //發射模式
35e: 60 df rcall .-320 ; 0x220
send_rf_data(); //發送數據包
360: 54 df rcall .-344 ; 0x20a
receive_mode(); //接收模式
362: 65 df rcall .-310 ; 0x22e
PORTD ^= (1<<PD3); //LED
364: 82 b3 in r24, 0x12 ; 18
366: 98 e0 ldi r25, 0x08 ; 8
368: 89 27 eor r24, r25
36a: 82 bb out 0x12, r24 ; 18
}
if(re_ok==1)
36c: 80 91 6e 00 lds r24, 0x006E
370: 81 30 cpi r24, 0x01 ; 1
372: 91 f7 brne .-28 ; 0x358
{
re_ok=0;
374: 10 92 6e 00 sts 0x006E, r1
send_rx_data_to_pc();
378: 37 df rcall .-402 ; 0x1e8
37a: ee cf rjmp .-36 ; 0x358
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -