⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf905.lis

📁 这是用C编的nrf905的通讯程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 004E                   .dbline -1
 004E                   .dbline 171
 004E           ; }
 004E           ; 
 004E           ; //->PwrDown
 004E           ; void nrf905_Off()
 004E           ; {
 004E                   .dbline 172
 004E           ;   CLR(PORTD,PWR);
 004E 9698              cbi 0x12,6
 0050                   .dbline -2
 0050           L7:
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbend
 0052                   .dbfunc e nrf905_TxOn _nrf905_TxOn fV
                        .even
 0052           _nrf905_TxOn::
 0052                   .dbline -1
 0052                   .dbline 177
 0052           ; }
 0052           ; 
 0052           ; //->ShockBurst Send
 0052           ; void nrf905_TxOn()
 0052           ; {
 0052                   .dbline 178
 0052           ;   SET(PORTD,PWR);
 0052 969A              sbi 0x12,6
 0054                   .dbline 179
 0054           ;   SET(PORTD,TX_EN);
 0054 949A              sbi 0x12,4
 0056                   .dbline 180
 0056           ;   CLR(PORTD,TRXCE);
 0056 9398              cbi 0x12,3
 0058                   .dbline -2
 0058           L8:
 0058                   .dbline 0 ; func end
 0058 0895              ret
 005A                   .dbend
 005A                   .dbfunc e nrf905_TxSend _nrf905_TxSend fV
                        .even
 005A           _nrf905_TxSend::
 005A                   .dbline -1
 005A                   .dbline 185
 005A           ; }
 005A           ; 
 005A           ; //->ShockBurst Send
 005A           ; void nrf905_TxSend()
 005A           ; {
 005A                   .dbline 186
 005A           ;   SET(PORTD,TRXCE);
 005A 939A              sbi 0x12,3
 005C                   .dbline 187
 005C           ;   DelayUs(20);//>10us
 005C 04E1              ldi R16,20
 005E 10E0              ldi R17,0
 0060 0E940000          xcall _DelayUs
 0064                   .dbline 188
 0064           ;   CLR(PORTD,TRXCE);//只发送一次
 0064 9398              cbi 0x12,3
 0066                   .dbline -2
 0066           L9:
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbend
 0068                   .dbfunc e nrf905_RxOn _nrf905_RxOn fV
                        .even
 0068           _nrf905_RxOn::
 0068                   .dbline -1
 0068                   .dbline 193
 0068           ; }
 0068           ; 
 0068           ; //->ShockBurst Recv
 0068           ; void nrf905_RxOn()
 0068           ; {
 0068                   .dbline 194
 0068           ;   SET(PORTD,PWR);
 0068 969A              sbi 0x12,6
 006A                   .dbline 195
 006A           ;   CLR(PORTD,TX_EN);//maybe first
 006A 9498              cbi 0x12,4
 006C                   .dbline 196
 006C           ;   SET(PORTD,TRXCE);
 006C 939A              sbi 0x12,3
 006E                   .dbline -2
 006E           L10:
 006E                   .dbline 0 ; func end
 006E 0895              ret
 0070                   .dbend
 0070                   .dbfunc e nrf905_Init _nrf905_Init fV
                        .even
 0070           _nrf905_Init::
 0070                   .dbline -1
 0070                   .dbline 201
 0070           ; }
 0070           ; 
 0070           ; //初始化nrf905
 0070           ; void nrf905_Init()
 0070           ; {
 0070                   .dbline 202
 0070           ;    nrf905_StandBy();
 0070 EADF              xcall _nrf905_StandBy
 0072                   .dbline 203
 0072           ;    DelayMs(10);//!!!must >3ms
 0072 0AE0              ldi R16,10
 0074 0E940000          xcall _DelayMs
 0078                   .dbline 204
 0078           ;    nrf905_Config();
 0078 C3DF              xcall _nrf905_Config
 007A                   .dbline 206
 007A           ;    
 007A           ;    nrf905_SpiTest();//test...
 007A 02D0              xcall _nrf905_SpiTest
 007C                   .dbline 207
 007C           ;    nrf905_RxOn();
 007C F5DF              xcall _nrf905_RxOn
 007E                   .dbline -2
 007E           L11:
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbend
 0080                   .dbfunc e nrf905_SpiTest _nrf905_SpiTest fV
 0080           ;              i -> R10
                        .even
 0080           _nrf905_SpiTest::
 0080 0E940000          xcall push_gset3
 0084                   .dbline -1
 0084                   .dbline 212
 0084           ; }
 0084           ; 
 0084           ; //测试:通过读配置,判断SPI操作是否正确
 0084           ; void nrf905_SpiTest()
 0084           ; {uchar i;
 0084                   .dbline 213
 0084           ;   CLR(PORTB,CSN);                   
 0084 C498              cbi 0x18,4
 0086                   .dbline 214
 0086           ;   nrf905_SpiRW(RC);  //读配置
 0086 00E1              ldi R16,16
 0088 D4DF              xcall _nrf905_SpiRW
 008A                   .dbline 215
 008A           ;   for (i=0;i<10;i++)
 008A AA24              clr R10
 008C 0AC0              xjmp L16
 008E           L13:
 008E                   .dbline 216
 008E                   .dbline 217
 008E 0027              clr R16
 0090 D0DF              xcall _nrf905_SpiRW
 0092 80E0              ldi R24,<_RxBuf
 0094 90E0              ldi R25,>_RxBuf
 0096 EA2D              mov R30,R10
 0098 FF27              clr R31
 009A E80F              add R30,R24
 009C F91F              adc R31,R25
 009E 0083              std z+0,R16
 00A0                   .dbline 218
 00A0           L14:
 00A0                   .dbline 215
 00A0 A394              inc R10
 00A2           L16:
 00A2                   .dbline 215
 00A2 8A2D              mov R24,R10
 00A4 8A30              cpi R24,10
 00A6 98F3              brlo L13
 00A8                   .dbline 222
 00A8           ;   { 
 00A8           ;     RxBuf[i]=nrf905_SpiRW(0);//read from nrf905
 00A8           ;   }
 00A8           ;  
 00A8           ;  
 00A8           ;  //for (i=0;i<10;i++)
 00A8           ;   { 
 00A8                   .dbline 223
 00A8           ;   if(RxBuf[0]==CH_NO_BYTE)CPL(PORTD,LED); 
 00A8 80910000          lds R24,_RxBuf
 00AC 8C34              cpi R24,76
 00AE 39F4              brne L17
 00B0                   .dbline 223
 00B0 80E8              ldi R24,128
 00B2 90E0              ldi R25,0
 00B4 22B2              in R2,0x12
 00B6 3324              clr R3
 00B8 2826              eor R2,R24
 00BA 3926              eor R3,R25
 00BC 22BA              out 0x12,R2
 00BE           L17:
 00BE                   .dbline 224
 00BE           ;   if(RxBuf[1]==(PA_PWR_10dBm | HFREQ_PLL_433MHz))CPL(PORTD,LED); 
 00BE 80910100          lds R24,_RxBuf+1
 00C2 8C30              cpi R24,12
 00C4 39F4              brne L19
 00C6                   .dbline 224
 00C6 80E8              ldi R24,128
 00C8 90E0              ldi R25,0
 00CA 22B2              in R2,0x12
 00CC 3324              clr R3
 00CE 2826              eor R2,R24
 00D0 3926              eor R3,R25
 00D2 22BA              out 0x12,R2
 00D4           L19:
 00D4                   .dbline 225
 00D4           ;   if(RxBuf[2]==(TX_AFW_4BYTE | RX_AFW_4BYTE))CPL(PORTD,LED); 
 00D4 80910200          lds R24,_RxBuf+2
 00D8 8434              cpi R24,68
 00DA 39F4              brne L22
 00DC                   .dbline 225
 00DC 80E8              ldi R24,128
 00DE 90E0              ldi R25,0
 00E0 22B2              in R2,0x12
 00E2 3324              clr R3
 00E4 2826              eor R2,R24
 00E6 3926              eor R3,R25
 00E8 22BA              out 0x12,R2
 00EA           L22:
 00EA                   .dbline 226
 00EA           ;   if(RxBuf[3]==RX_PW_1BYTE)CPL(PORTD,LED); 
 00EA 80910300          lds R24,_RxBuf+3
 00EE 8130              cpi R24,1
 00F0 39F4              brne L25
 00F2                   .dbline 226
 00F2 80E8              ldi R24,128
 00F4 90E0              ldi R25,0
 00F6 22B2              in R2,0x12
 00F8 3324              clr R3
 00FA 2826              eor R2,R24
 00FC 3926              eor R3,R25
 00FE 22BA              out 0x12,R2
 0100           L25:
 0100                   .dbline 227
 0100           ;   if(RxBuf[4]==TX_PW_1BYTE)CPL(PORTD,LED); 
 0100 80910400          lds R24,_RxBuf+4
 0104 8130              cpi R24,1
 0106 39F4              brne L28
 0108                   .dbline 227
 0108 80E8              ldi R24,128
 010A 90E0              ldi R25,0
 010C 22B2              in R2,0x12
 010E 3324              clr R3
 0110 2826              eor R2,R24
 0112 3926              eor R3,R25
 0114 22BA              out 0x12,R2
 0116           L28:
 0116                   .dbline 228
 0116           ;   if(RxBuf[5]==(RX_ADDRESS_0))CPL(PORTD,LED); 
 0116 42E1              ldi R20,18
 0118 50E0              ldi R21,0
 011A 60E0              ldi R22,0
 011C 70E0              ldi R23,0
 011E 20900500          lds R2,_RxBuf+5
 0122 3324              clr R3
 0124 4424              clr R4
 0126 5524              clr R5
 0128 2416              cp R2,R20
 012A 3506              cpc R3,R21
 012C 4606              cpc R4,R22
 012E 5706              cpc R5,R23
 0130 39F4              brne L31
 0132                   .dbline 228
 0132 80E8              ldi R24,128
 0134 90E0              ldi R25,0
 0136 22B2              in R2,0x12
 0138 3324              clr R3
 013A 2826              eor R2,R24
 013C 3926              eor R3,R25
 013E 22BA              out 0x12,R2
 0140           L31:
 0140                   .dbline 229
 0140           ;   if(RxBuf[6]==RX_ADDRESS_1)CPL(PORTD,LED); 
 0140 44E3              ldi R20,52
 0142 50E0              ldi R21,0
 0144 60E0              ldi R22,0
 0146 70E0              ldi R23,0
 0148 20900600          lds R2,_RxBuf+6
 014C 3324              clr R3
 014E 4424              clr R4
 0150 5524              clr R5
 0152 2416              cp R2,R20
 0154 3506              cpc R3,R21

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -