?? nrf.lis
字號(hào):
.even
00A6 _set_Powerdownmode::
00A6 .dbline -1
00A6 .dbline 123
00A6 ; }
00A6 ;
00A6 ; /***************************************************************
00A6 ; 函數(shù)功能:把905配置成掉電和SPI模式(節(jié)省能量)
00A6 ; 輸入?yún)?shù):無(wú)
00A6 ; 輸出參數(shù):無(wú)
00A6 ; ***************************************************************/
00A6 ; void set_Powerdownmode()
00A6 ; {
00A6 .dbline 124
00A6 ; PORTE &=~(1<<PWR_UP); //掉電
00A6 1A98 cbi 0x3,2
00A8 .dbline 125
00A8 ; Delay650us(); // delay for mode change(>=650us)
00A8 0E940000 xcall _Delay650us
00AC .dbline -2
00AC L19:
00AC .dbline 0 ; func end
00AC 0895 ret
00AE .dbend
00AE .dbfunc e set_STmode _set_STmode fV
.even
00AE _set_STmode::
00AE .dbline -1
00AE .dbline 134
00AE ; }
00AE ;
00AE ; /***************************************************************
00AE ; 函數(shù)功能:把905配置成STANDBY和SPI模式(節(jié)省能量)
00AE ; 輸入?yún)?shù):無(wú)
00AE ; 輸出參數(shù):無(wú)
00AE ; ***************************************************************/
00AE ; void set_STmode()
00AE ; {
00AE .dbline 135
00AE ; PORTE |=(1<<PWR_UP); //905上電
00AE 1A9A sbi 0x3,2
00B0 .dbline 136
00B0 ; PORTB &=~(1<<TRX_CE);
00B0 C098 cbi 0x18,0
00B2 .dbline 137
00B2 ; Delay3ms(); // delay for mode change(>=650us)
00B2 0E940000 xcall _Delay3ms
00B6 .dbline -2
00B6 L20:
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbend
00B8 .dbfunc e set_Taddr _set_Taddr fV
00B8 ; i -> R20,R21
00B8 ; addr -> R22,R23
.even
00B8 _set_Taddr::
00B8 0E940000 xcall push_gset2
00BC B801 movw R22,R16
00BE .dbline -1
00BE .dbline 148
00BE ; }
00BE ;
00BE ;
00BE ;
00BE ; /**************************************************************************
00BE ; 函數(shù)功能:通過(guò)SPI設(shè)定905的發(fā)送地址
00BE ; 輸入?yún)?shù):發(fā)送地址數(shù)據(jù)的首地址
00BE ; 輸出參數(shù):無(wú)
00BE ; **************************************************************************/
00BE ; void set_Taddr(unsigned char*addr)
00BE ; {
00BE .dbline 150
00BE ; unsigned i;
00BE ; PORTE &=~(1<<CSN); // Spi 使能
00BE 1998 cbi 0x3,1
00C0 .dbline 151
00C0 ; SpiWrite(WTA); // Write address command
00C0 02E2 ldi R16,34
00C2 0E940000 xcall _SpiWrite
00C6 .dbline 152
00C6 ; for (i=0;i<4;i++) // Write 4 bytes address
00C6 4427 clr R20
00C8 5527 clr R21
00CA 08C0 xjmp L25
00CC L22:
00CC .dbline 153
00CC .dbline 154
00CC FA01 movw R30,R20
00CE E60F add R30,R22
00D0 F71F adc R31,R23
00D2 0081 ldd R16,z+0
00D4 0E940000 xcall _SpiWrite
00D8 .dbline 155
00D8 L23:
00D8 .dbline 152
00D8 4F5F subi R20,255 ; offset = 1
00DA 5F4F sbci R21,255
00DC L25:
00DC .dbline 152
00DC 4430 cpi R20,4
00DE E0E0 ldi R30,0
00E0 5E07 cpc R21,R30
00E2 A0F3 brlo L22
00E4 .dbline 156
00E4 ; {
00E4 ; SpiWrite(addr[i]);
00E4 ; }
00E4 ; PORTE |=(1<<CSN); // 禁止Spi
00E4 199A sbi 0x3,1
00E6 .dbline -2
00E6 L21:
00E6 0E940000 xcall pop_gset2
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbsym r i 20 i
00EC .dbsym r addr 22 pc
00EC .dbend
00EC .dbfunc e TxPacket _TxPacket fV
00EC ; temp -> <dead>
00EC ; i -> R20
00EC ; send_d -> R22,R23
.even
00EC _TxPacket::
00EC 0E940000 xcall push_gset2
00F0 B801 movw R22,R16
00F2 .dbline -1
00F2 .dbline 165
00F2 ; }
00F2 ;
00F2 ; /**************************************************************************
00F2 ; 函數(shù)功能:905發(fā)送一個(gè)數(shù)據(jù)包
00F2 ; 輸入?yún)?shù):要發(fā)送的數(shù)據(jù)包的首地址
00F2 ; 輸出參數(shù):無(wú)
00F2 ; **************************************************************************/
00F2 ; void TxPacket(unsigned char*send_d)
00F2 ; {
00F2 .dbline 168
00F2 ; unsigned char temp,i;
00F2 ; //Config905();
00F2 ; PORTE &=~(1<<CSN); // CSN置零,Spi 使能
00F2 1998 cbi 0x3,1
00F4 .dbline 169
00F4 ; SpiWrite(WTP); // 寫(xiě)SPI命令
00F4 00E2 ldi R16,32
00F6 0E940000 xcall _SpiWrite
00FA .dbline 171
00FA ; // SpiWrite(serial);
00FA ; for (i=0;i<PACKAGE_LENGTH;i++)
00FA 4427 clr R20
00FC 08C0 xjmp L30
00FE L27:
00FE .dbline 172
00FE .dbline 173
00FE E42F mov R30,R20
0100 FF27 clr R31
0102 E60F add R30,R22
0104 F71F adc R31,R23
0106 0081 ldd R16,z+0
0108 0E940000 xcall _SpiWrite
010C .dbline 174
010C L28:
010C .dbline 171
010C 4395 inc R20
010E L30:
010E .dbline 171
010E 4531 cpi R20,21
0110 B0F3 brlo L27
0112 .dbline 175
0112 ; {
0112 ; SpiWrite(*(send_d+i)); // 寫(xiě)21字節(jié)的TX數(shù)據(jù)
0112 ; }
0112 ; PORTE |=(1<<CSN); // 禁止Spi
0112 199A sbi 0x3,1
0114 .dbline 177
0114 ; //
0114 ; PORTB |=(1<<TRX_CE); // Set TRX_CE high,開(kāi)始TX數(shù)據(jù)發(fā)送
0114 C09A sbi 0x18,0
0116 .dbline 179
0116 ;
0116 ; Delay650us(); // 形成脈沖
0116 0E940000 xcall _Delay650us
011A .dbline 180
011A ; PORTB &=~(1<<TRX_CE); // Set TRX_CE low,進(jìn)入standby模式
011A C098 cbi 0x18,0
011C .dbline -2
011C L26:
011C 0E940000 xcall pop_gset2
0120 .dbline 0 ; func end
0120 0895 ret
0122 .dbsym l temp 1 c
0122 .dbsym r i 20 c
0122 .dbsym r send_d 22 pc
0122 .dbend
0122 .dbfunc e RxPacket _RxPacket fV
0122 ; i -> R20
0122 ; received_d -> R22,R23
.even
0122 _RxPacket::
0122 0E940000 xcall push_gset2
0126 B801 movw R22,R16
0128 .dbline -1
0128 .dbline 189
0128 ; }
0128 ;
0128 ; /***************************************************************************
0128 ; 函數(shù)功能:把905接收到的一個(gè)數(shù)據(jù)包放到CPU的接收緩沖區(qū)
0128 ; 輸入?yún)?shù):接收緩沖區(qū)的首地址
0128 ; 輸出參數(shù):無(wú)
0128 ; ***************************************************************************/
0128 ; void RxPacket(unsigned char*received_d)
0128 ; {
0128 .dbline 191
0128 ; unsigned char i;
0128 ; PORTB &=~(1<<TRX_CE); // 把nRF905 設(shè)置成standby,不再接收無(wú)線數(shù)據(jù)
0128 C098 cbi 0x18,0
012A .dbline 192
012A ; PORTE &=~(1<<CSN); // Spi enable for write a spi command,Spi 使能
012A 1998 cbi 0x3,1
012C .dbline 193
012C ; SpiWrite(RRP); // Read payload command
012C 04E2 ldi R16,36
012E 0E940000 xcall _SpiWrite
0132 .dbline 194
0132 ; for (i=0;i<PACKAGE_LENGTH;i++)
0132 4427 clr R20
0134 09C0 xjmp L35
0136 L32:
0136 .dbline 195
0136 .dbline 196
0136 0027 clr R16
0138 0E940000 xcall _SpiWrite
013C E42F mov R30,R20
013E FF27 clr R31
0140 E60F add R30,R22
0142 F71F adc R31,R23
0144 0083 std z+0,R16
0146 .dbline 197
0146 L33:
0146 .dbline 194
0146 4395 inc R20
0148 L35:
0148 .dbline 194
0148 4531 cpi R20,21
014A A8F3 brlo L32
014C .dbline 198
014C ; {
014C ; *(received_d+i)=SpiWrite(0x00); // Read data and save to buffer
014C ; }
014C ; PORTE |=(1<<CSN); // 禁止Spi
014C 199A sbi 0x3,1
014E .dbline 199
014E ; Delay650us();
014E 0E940000 xcall _Delay650us
0152 .dbline 200
0152 ; PORTB |=(1<<TRX_CE); //把nRF905 設(shè)置成RX mode
0152 C09A sbi 0x18,0
0154 .dbline -2
0154 L31:
0154 0E940000 xcall pop_gset2
0158 .dbline 0 ; func end
0158 0895 ret
015A .dbsym r i 20 c
015A .dbsym r received_d 22 pc
015A .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\心電監(jiān)護(hù)系統(tǒng)\測(cè)試程序\第一階段\無(wú)線測(cè)試\接收端\nrf.c
0000 _data_conf::
0000 .blkb 10
000A .dbsym e data_conf _data_conf A[10:10]c
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -