📄 jifeng_jieshou.lis
字号:
00A2 10E0 ldi R17,0
00A4 ADDF rcall _Delay
00A6 .dbline 239
00A6 ; Low_nrf905_CSN; // 使能Spi
00A6 C498 cbi 0x18,4
00A8 .dbline 239
00A8 .dbline 240
00A8 ; SpiReadSpiWrite(WTA); // 写地址前首先先写地址命令
00A8 02E2 ldi R16,34
00AA C2DF rcall _SpiReadSpiWrite
00AC .dbline 241
00AC ; for (i=0;i<4;i++) // 写入4 bytes 接收地址
00AC 4427 clr R20
00AE 09C0 rjmp L28
00B0 L25:
00B0 .dbline 242
00B0 .dbline 243
00B0 80E0 ldi R24,<_TxAddress
00B2 90E0 ldi R25,>_TxAddress
00B4 E42F mov R30,R20
00B6 FF27 clr R31
00B8 E80F add R30,R24
00BA F91F adc R31,R25
00BC 0081 ldd R16,z+0
00BE B8DF rcall _SpiReadSpiWrite
00C0 .dbline 244
00C0 L26:
00C0 .dbline 241
00C0 4395 inc R20
00C2 L28:
00C2 .dbline 241
00C2 4430 cpi R20,4
00C4 A8F3 brlo L25
00C6 .dbline 245
00C6 ; {
00C6 ; SpiReadSpiWrite(TxAddress[i]);
00C6 ; }
00C6 ; Hign_nrf905_CSN; // 关闭Spi
00C6 C49A sbi 0x18,4
00C8 .dbline 245
00C8 .dbline 246
00C8 ; Hign_nrf905_TRX_CE; // Set TRX_CE high,start Tx data transmission
00C8 959A sbi 0x12,5
00CA .dbline 246
00CA .dbline 247
00CA ; Delay(1); // 等待DR变高
00CA 01E0 ldi R16,1
00CC 10E0 ldi R17,0
00CE 98DF rcall _Delay
00D0 .dbline 248
00D0 ; Low_nrf905_TRX_CE; // 设置TRX_CE=0
00D0 9598 cbi 0x12,5
00D2 .dbline 248
00D2 .dbline -2
00D2 L20:
00D2 00D0 rcall pop_gset1
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbsym r i 20 c
00D6 .dbend
00D6 .dbfunc e SetTxMode _SetTxMode fV
.even
00D6 _SetTxMode::
00D6 .dbline -1
00D6 .dbline 252
00D6 ; }
00D6 ; //------------------------------设置发送模式------------------------------------
00D6 ; void SetTxMode(void)
00D6 ; {
00D6 .dbline 253
00D6 ; Low_nrf905_TRX_CE; //
00D6 9598 cbi 0x12,5
00D8 .dbline 253
00D8 .dbline 254
00D8 ; Hign_nrf905_TX_EN; //发送使能
00D8 C09A sbi 0x18,0
00DA .dbline 254
00DA .dbline 255
00DA ; Delay(2); // delay for mode change(>=650us)
00DA 02E0 ldi R16,2
00DC 10E0 ldi R17,0
00DE 90DF rcall _Delay
00E0 .dbline -2
00E0 L29:
00E0 .dbline 0 ; func end
00E0 0895 ret
00E2 .dbend
00E2 .dbfunc e SetRxMode _SetRxMode fV
.even
00E2 _SetRxMode::
00E2 .dbline -1
00E2 .dbline 259
00E2 ; }
00E2 ; //------------------------------设置接收模式激发--------------------------------
00E2 ; void SetRxMode(void)
00E2 ; {
00E2 .dbline 260
00E2 ; Low_nrf905_TX_EN;
00E2 C098 cbi 0x18,0
00E4 .dbline 260
00E4 .dbline 261
00E4 ; Hign_nrf905_TRX_CE;
00E4 959A sbi 0x12,5
00E6 .dbline 261
00E6 .dbline 262
00E6 ; Delay(10); // delay for mode change(>=650us)
00E6 0AE0 ldi R16,10
00E8 10E0 ldi R17,0
00EA 8ADF rcall _Delay
00EC .dbline -2
00EC L30:
00EC .dbline 0 ; func end
00EC 0895 ret
00EE .dbend
00EE .dbfunc e TX _TX fV
.even
00EE _TX::
00EE .dbline -1
00EE .dbline 266
00EE ; }
00EE ; //------------------------------发送数据----------------------------------------
00EE ; void TX(void)
00EE ; {
00EE .dbline 267
00EE ; SetTxMode(); // Set nRF905 in Tx mode
00EE F3DF rcall _SetTxMode
00F0 .dbline 268
00F0 ; TxPacket(); // Send data by nRF905
00F0 C2DF rcall _TxPacket
00F2 .dbline -2
00F2 L31:
00F2 .dbline 0 ; func end
00F2 0895 ret
00F4 .dbend
00F4 .dbfunc e CheckDR _CheckDR fc
.even
00F4 _CheckDR::
00F4 .dbline -1
00F4 .dbline 272
00F4 ; }
00F4 ; //-----------------------------判断是否收到数据---------------------------------
00F4 ; unsigned char CheckDR(void) //检查是否有新数据传入
00F4 ; {
00F4 .dbline 273
00F4 ; if (PINB & (1 << PB2))
00F4 B29B sbis 0x16,2
00F6 02C0 rjmp L33
00F8 .dbline 274
00F8 ; {
00F8 .dbline 275
00F8 ; return 1; //收到数据
00F8 01E0 ldi R16,1
00FA 01C0 rjmp L32
00FC L33:
00FC .dbline 278
00FC ; }
00FC ; else
00FC ; {
00FC .dbline 279
00FC ; return 0;
00FC 0027 clr R16
00FE .dbline -2
00FE L32:
00FE .dbline 0 ; func end
00FE 0895 ret
0100 .dbend
0100 .dbfunc e RxPacket _RxPacket fV
0100 ; i -> R20
.even
0100 _RxPacket::
0100 00D0 rcall push_gset1
0102 .dbline -1
0102 .dbline 284
0102 ; }
0102 ; }
0102 ; //-----------------------------------读接收数据包-------------------------------
0102 ; void RxPacket(void) //读数据
0102 ; {
0102 .dbline 286
0102 ; uchar i;
0102 ; Low_nrf905_TRX_CE;
0102 9598 cbi 0x12,5
0104 .dbline 286
0104 .dbline 287
0104 ; Low_nrf905_CSN; // 使能SPI
0104 C498 cbi 0x18,4
0106 .dbline 287
0106 .dbline 288
0106 ; Delay(1);
0106 01E0 ldi R16,1
0108 10E0 ldi R17,0
010A 7ADF rcall _Delay
010C .dbline 289
010C ; SpiReadSpiWrite(RRP); // 写入数据接收缓冲区数据命令
010C 04E2 ldi R16,36
010E 90DF rcall _SpiReadSpiWrite
0110 .dbline 290
0110 ; for (i = 0 ;i < 4 ;i++)
0110 4427 clr R20
0112 0AC0 rjmp L39
0114 L36:
0114 .dbline 291
0114 .dbline 292
0114 0027 clr R16
0116 8CDF rcall _SpiReadSpiWrite
0118 80E0 ldi R24,<_TxRxBuffer
011A 90E0 ldi R25,>_TxRxBuffer
011C E42F mov R30,R20
011E FF27 clr R31
0120 E80F add R30,R24
0122 F91F adc R31,R25
0124 0083 std z+0,R16
0126 .dbline 293
0126 L37:
0126 .dbline 290
0126 4395 inc R20
0128 L39:
0128 .dbline 290
0128 4430 cpi R20,4
012A A0F3 brlo L36
012C .dbline 294
012C ; {
012C ; TxRxBuffer[i]=SpiReadSpiWrite(0); // 读取数据接收缓冲区数据
012C ; }
012C ; Hign_nrf905_CSN;
012C C49A sbi 0x18,4
012E .dbline 294
012E .dbline 295
012E ; Delay(2); //
012E 02E0 ldi R16,2
0130 10E0 ldi R17,0
0132 66DF rcall _Delay
0134 .dbline 296
0134 ; Hign_nrf905_TRX_CE;
0134 959A sbi 0x12,5
0136 .dbline 296
0136 .dbline -2
0136 L35:
0136 00D0 rcall pop_gset1
0138 .dbline 0 ; func end
0138 0895 ret
013A .dbsym r i 20 c
013A .dbend
013A .dbfunc e RX _RX fV
.even
013A _RX::
013A .dbline -1
013A .dbline 300
013A ; }
013A ; //--------------------------------设置接收模式----------------------------------
013A ; void RX(void)
013A ; {
013A .dbline 301
013A ; SetRxMode(); //设置NRF905接收模式
013A D3DF rcall _SetRxMode
013C L41:
013C .dbline 302
013C L42:
013C .dbline 302
013C ; while (CheckDR()==0); //等待接收完成
013C DBDF rcall _CheckDR
013E 0023 tst R16
0140 E9F3 breq L41
0142 .dbline 303
0142 ; RxPacket(); //读取接收数据缓冲区
0142 DEDF rcall _RxPacket
0144 .dbline 304
0144 ; Delay(10);
0144 0AE0 ldi R16,10
0146 10E0 ldi R17,0
0148 5BDF rcall _Delay
014A .dbline -2
014A L40:
014A .dbline 0 ; func end
014A 0895 ret
014C .dbend
014C .dbfunc e LCD_Delay _LCD_Delay fV
014C ; i -> R20,R21
014C ; time -> R16,R17
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -