📄 nrf905.lis
字号:
0058 01E1 ldi R16,17
005A 08D0 rcall _nrf905_SpiRW
005C .dbline 148
005C ; nrf905_SpiRW(RX_ADDRESS_2); //接收有效地址第3字节
005C 01E1 ldi R16,17
005E 06D0 rcall _nrf905_SpiRW
0060 .dbline 149
0060 ; nrf905_SpiRW(RX_ADDRESS_3); //接收有效地址第4字节
0060 01E0 ldi R16,1
0062 04D0 rcall _nrf905_SpiRW
0064 .dbline 151
0064 ; //nrf905_SpiRW(CRC16_EN | XOF_16MHz); //CRC16模式使能,晶体振荡器频率16MHz
0064 ; nrf905_SpiRW(0x00); //CRC16模式使能,晶体振荡器频率16MHz
0064 0027 clr R16
0066 02D0 rcall _nrf905_SpiRW
0068 .dbline 152
0068 ; SET(PORTB,CSN); // Disable Spi
0068 C29A sbi 0x18,2
006A .dbline -2
006A .dbline 153
006A ; }
006A L8:
006A .dbline 0 ; func end
006A 0895 ret
006C .dbend
006C .dbfunc e nrf905_SpiRW _nrf905_SpiRW fc
006C ; temp -> R20
006C ; val -> R16
.even
006C _nrf905_SpiRW::
006C 00D0 rcall push_gset1
006E .dbline -1
006E .dbline 156
006E ;
006E ; uchar nrf905_SpiRW(uchar val)
006E ; {
006E .dbline 159
006E ; uchar temp;
006E ;
006E ; SPDR=val;
006E 0FB9 out 0xf,R16
0070 L10:
0070 .dbline 160
0070 L11:
0070 .dbline 160
0070 ; while ((SPSR&(1<<SPIF))==0);//置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中断使能位置位,就会引发SPI 中断
0070 779B sbis 0xe,7
0072 FECF rjmp L10
0074 .dbline 161
0074 ; temp=SPDR;
0074 4FB1 in R20,0xf
0076 .dbline 162
0076 ; return temp;
0076 042F mov R16,R20
0078 .dbline -2
0078 L9:
0078 00D0 rcall pop_gset1
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r temp 20 c
007C .dbsym r val 16 c
007C .dbend
007C .dbfunc e nrf905_StandBy _nrf905_StandBy fV
.even
007C _nrf905_StandBy::
007C .dbline -1
007C .dbline 167
007C ; }
007C ;
007C ; //PwrDown->StandBy
007C ; void nrf905_StandBy(void)
007C ; {
007C .dbline 168
007C ; SET(PORTD,PWR);//上电
007C 959A sbi 0x12,5
007E .dbline 169
007E ; CLR(PORTD,TRXCE);
007E 9698 cbi 0x12,6
0080 .dbline 170
0080 ; CLR(PORTD,TX_EN);
0080 9798 cbi 0x12,7
0082 .dbline -2
0082 .dbline 171
0082 ; }
0082 L13:
0082 .dbline 0 ; func end
0082 0895 ret
0084 .dbend
0084 .dbfunc e nrf905_Off _nrf905_Off fV
.even
0084 _nrf905_Off::
0084 .dbline -1
0084 .dbline 175
0084 ;
0084 ; //->PwrDown
0084 ; void nrf905_Off(void)
0084 ; {
0084 .dbline 176
0084 ; CLR(PORTD,PWR);
0084 9598 cbi 0x12,5
0086 .dbline -2
0086 .dbline 177
0086 ; }
0086 L14:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbend
0088 .dbfunc e nrf905_TxOn _nrf905_TxOn fV
.even
0088 _nrf905_TxOn::
0088 .dbline -1
0088 .dbline 181
0088 ;
0088 ; //->ShockBurst Send
0088 ; void nrf905_TxOn(void)
0088 ; {
0088 .dbline 182
0088 ; SET(PORTD,PWR);
0088 959A sbi 0x12,5
008A .dbline 183
008A ; SET(PORTD,TX_EN);
008A 979A sbi 0x12,7
008C .dbline 184
008C ; CLR(PORTD,TRXCE);
008C 9698 cbi 0x12,6
008E .dbline -2
008E .dbline 185
008E ; }
008E L15:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
0090 .dbfunc e nrf905_TxSend _nrf905_TxSend fV
.even
0090 _nrf905_TxSend::
0090 .dbline -1
0090 .dbline 189
0090 ;
0090 ; //->ShockBurst Send
0090 ; void nrf905_TxSend(void)
0090 ; {
0090 .dbline 190
0090 ; SET(PORTD,TRXCE);
0090 969A sbi 0x12,6
0092 .dbline 191
0092 ; delay_us(20);//>10us
0092 04E1 ldi R16,20
0094 10E0 ldi R17,0
0096 00D0 rcall _delay_us
0098 .dbline 192
0098 ; CLR(PORTD,TRXCE);//只发送一次
0098 9698 cbi 0x12,6
009A .dbline -2
009A .dbline 194
009A ;
009A ; }
009A L16:
009A .dbline 0 ; func end
009A 0895 ret
009C .dbend
009C .dbfunc e nrf905_Init _nrf905_Init fV
.even
009C _nrf905_Init::
009C .dbline -1
009C .dbline 200
009C ;
009C ;
009C ;
009C ; //初始化nrf905
009C ; void nrf905_Init(void)
009C ; {
009C .dbline 201
009C ; nrf905_StandBy();
009C EFDF rcall _nrf905_StandBy
009E .dbline 202
009E ; delay_10ms(2);//!!!must >3ms
009E 02E0 ldi R16,2
00A0 10E0 ldi R17,0
00A2 00D0 rcall _delay_10ms
00A4 .dbline 203
00A4 ; nrf905_Config();
00A4 .dbline -2
00A4 .dbline 207
00A4 ;
00A4 ; // nrf905_SpiTest();//test... 测试:通过读配置,判断SPI操作是否正确
00A4 ; // nrf905_RxOn();//enable nrf905接收
00A4 ; }
00A4 L17:
00A4 .dbline 0 ; func end
00A4 CACF rjmp _nrf905_Config
00A6 .dbend
00A6 .dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
00A6 ; i -> R20
.even
00A6 _nrf905_SpiTest::
00A6 00D0 rcall push_gset1
00A8 .dbline -1
00A8 .dbline 212
00A8 ;
00A8 ;
00A8 ; //测试:通过读配置,判断SPI操作是否正确
00A8 ; void nrf905_SpiTest(void)
00A8 ; {
00A8 .dbline 214
00A8 ; uchar i;
00A8 ; CLR(PORTB,CSN);
00A8 C298 cbi 0x18,2
00AA .dbline 215
00AA ; nrf905_SpiRW(RC); //读配置
00AA 00E1 ldi R16,16
00AC DFDF rcall _nrf905_SpiRW
00AE .dbline 216
00AE ; for (i=0;i<10;i++)
00AE 4427 clr R20
00B0 0AC0 rjmp L22
00B2 L19:
00B2 .dbline 217
00B2 .dbline 218
00B2 0027 clr R16
00B4 DBDF rcall _nrf905_SpiRW
00B6 80E0 ldi R24,<_Rx_Buf
00B8 90E0 ldi R25,>_Rx_Buf
00BA E42F mov R30,R20
00BC FF27 clr R31
00BE E80F add R30,R24
00C0 F91F adc R31,R25
00C2 0083 std z+0,R16
00C4 .dbline 219
00C4 L20:
00C4 .dbline 216
00C4 4395 inc R20
00C6 L22:
00C6 .dbline 216
00C6 4A30 cpi R20,10
00C8 A0F3 brlo L19
00CA .dbline 220
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -