📄 main.lis
字号:
01D8 4427 clr R20
01DA 5527 clr R21
01DC .dbline 401
01DC ; for (i=0;i<n;i++)
01DC 03C0 xjmp L48
01DE L45:
01DE .dbline 402
01DE EFDF xcall _delay_1ms
01E0 L46:
01E0 .dbline 401
01E0 4F5F subi R20,255 ; offset = 1
01E2 5F4F sbci R21,255
01E4 L48:
01E4 .dbline 401
01E4 4617 cp R20,R22
01E6 5707 cpc R21,R23
01E8 D0F3 brlo L45
01EA .dbline -2
01EA L44:
01EA 0E940000 xcall pop_gset2
01EE .dbline 0 ; func end
01EE 0895 ret
01F0 .dbsym r i 20 i
01F0 .dbsym r n 22 i
01F0 .dbend
01F0 .dbfunc e ByteRead _ByteRead fc
01F0 ; i -> R16
.even
01F0 _ByteRead::
01F0 .dbline -1
01F0 .dbline 408
01F0 ; delay_1ms();
01F0 ; }
01F0 ;
01F0 ;
01F0 ;
01F0 ; unsigned char ByteRead(void)
01F0 ; {
01F0 .dbline 410
01F0 ; unsigned char i;
01F0 ; for (i=0;i<8;i++)
01F0 0027 clr R16
01F2 18C0 xjmp L53
01F4 L50:
01F4 .dbline 411
01F4 ; {
01F4 .dbline 412
01F4 ; DATA_BUF=DATA_BUF<<1;
01F4 20902000 lds R2,_DATA_BUF
01F8 220C lsl R2
01FA 20922000 sts _DATA_BUF,R2
01FE .dbline 414
01FE ; //CLK1=1;
01FE ; CLK1_SET();
01FE .dbline 414
01FE AB9A sbi 0x15,3
0200 .dbline 414
0200 .dbline 414
0200 .dbline 416
0200 ; //DATA=1; //设置为输入状态
0200 ; NRF_DDR&=~(1<<DATA);
0200 A598 cbi 0x14,5
0202 .dbline 417
0202 ; DATA_SET();
0202 .dbline 417
0202 AD9A sbi 0x15,5
0204 .dbline 417
0204 .dbline 417
0204 .dbline 419
0204 ; //if (DATA) //读取最高位,保存至最末尾,通过左移位完成整个字节
0204 ; if(DATA_STATE)
0204 83B3 in R24,0x13
0206 8072 andi R24,32
0208 8032 cpi R24,32
020A 29F4 brne L54
020C .dbline 420
020C ; {
020C .dbline 421
020C ; DATA_BUF|=BYTE_BIT0;
020C 822D mov R24,R2
020E 8160 ori R24,1
0210 80932000 sts _DATA_BUF,R24
0214 .dbline 422
0214 ; }
0214 05C0 xjmp L55
0216 L54:
0216 .dbline 424
0216 ; else
0216 ; {
0216 .dbline 425
0216 ; DATA_BUF&=~BYTE_BIT0;
0216 80912000 lds R24,_DATA_BUF
021A 8E7F andi R24,254
021C 80932000 sts _DATA_BUF,R24
0220 .dbline 426
0220 ; }
0220 L55:
0220 .dbline 428
0220 .dbline 428
0220 AB98 cbi 0x15,3
0222 .dbline 428
0222 .dbline 428
0222 .dbline 429
0222 L51:
0222 .dbline 410
0222 0395 inc R16
0224 L53:
0224 .dbline 410
0224 0830 cpi R16,8
0226 30F3 brlo L50
0228 .dbline 430
0228 ; //CLK1=0;
0228 ; CLK1_CLR();
0228 ; }
0228 ; return DATA_BUF;
0228 00912000 lds R16,_DATA_BUF
022C .dbline -2
022C L49:
022C .dbline 0 ; func end
022C 0895 ret
022E .dbsym r i 16 c
022E .dbend
022E .dbfunc e ByteWrite _ByteWrite fV
022E ; i -> R20
022E ; send -> R16
.even
022E _ByteWrite::
022E 0E940000 xcall push_gset1
0232 .dbline -1
0232 .dbline 434
0232 ; }
0232 ;
0232 ; void ByteWrite(unsigned char send)
0232 ; {
0232 .dbline 436
0232 ; unsigned char i;
0232 ; DATA_BUF=send;
0232 00932000 sts _DATA_BUF,R16
0236 .dbline 437
0236 ; NRF_DDR|=((1<<DATA)|(1<<CLK1));
0236 84B3 in R24,0x14
0238 8862 ori R24,40
023A 84BB out 0x14,R24
023C .dbline 438
023C ; for (i=0;i<8;i++)
023C 4427 clr R20
023E 0FC0 xjmp L60
0240 L57:
0240 .dbline 439
0240 ; {
0240 .dbline 440
0240 ; if (DATA7) //总是发送最高位
0240 20902000 lds R2,_DATA_BUF
0244 27FE sbrs R2,7
0246 02C0 rjmp L61
0248 .dbline 441
0248 ; {
0248 .dbline 443
0248 ; //DATA=1;
0248 ; DATA_SET();
0248 .dbline 443
0248 AD9A sbi 0x15,5
024A .dbline 443
024A .dbline 443
024A .dbline 444
024A ; }
024A 01C0 xjmp L62
024C L61:
024C .dbline 446
024C ; else
024C ; {
024C .dbline 448
024C ; //DATA=0;
024C ; DATA_CLR();
024C .dbline 448
024C AD98 cbi 0x15,5
024E .dbline 448
024E .dbline 448
024E .dbline 449
024E ; }
024E L62:
024E .dbline 451
024E .dbline 451
024E AB9A sbi 0x15,3
0250 .dbline 451
0250 .dbline 451
0250 .dbline 452
0250 20902000 lds R2,_DATA_BUF
0254 220C lsl R2
0256 20922000 sts _DATA_BUF,R2
025A .dbline 454
025A .dbline 454
025A AB98 cbi 0x15,3
025C .dbline 454
025C .dbline 454
025C .dbline 455
025C L58:
025C .dbline 438
025C 4395 inc R20
025E L60:
025E .dbline 438
025E 4830 cpi R20,8
0260 78F3 brlo L57
0262 .dbline -2
0262 L56:
0262 0E940000 xcall pop_gset1
0266 .dbline 0 ; func end
0266 0895 ret
0268 .dbsym r i 20 c
0268 .dbsym r send 16 c
0268 .dbend
0268 .dbfunc e Config2401 _Config2401 fV
0268 ; variablel -> R20
0268 ; i -> R22,R23
.even
0268 _Config2401::
0268 0E940000 xcall push_gset2
026C .dbline -1
026C .dbline 470
026C ; //CLK1=1;
026C ; CLK1_SET();
026C ; DATA_BUF=DATA_BUF<<1;
026C ; //CLK1=0;
026C ; CLK1_CLR();
026C ; }
026C ; }
026C ;
026C ; /* <2401 配置寄存器的写入方式>
026C ; NOTE.
026C ; On the falling edge of CS, the nRF2401A updates the number of bits actually shifted
026C ; in during the last configuration.
026C ; Ex:
026C ; If the nRF2401A is to be configured for 2 channel RX in ShockBurst., a total of 120
026C ; bits must be shifted in during the first configuration after VDD is applied.
026C ; Once the wanted protocol, modus and RF channel are set, only one bit (RXEN) is
026C ; shifted in to switch between RX and TX.
026C ; 注意 :2401 配置寄存器的数据写入通过一移位寄存器完成
026C ; */
026C ; void Config2401(void)
026C ; {
026C .dbline 476
026C ; unsigned int i;
026C ; unsigned char variablel;
026C ; //CS=0;
026C ; //CE=0;
026C ; //PWR_UP=1; //上电
026C ; NRF_DDR|=((1<<CS)|(1<<CE)|(1<<PWR_UP));
026C 84B3 in R24,0x14
026E 8361 ori R24,19
0270 84BB out 0x14,R24
0272 .dbline 477
0272 ; CS_CLR();
0272 .dbline 477
0272 AC98 cbi 0x15,4
0274 .dbline 477
0274 .dbline 477
0274 .dbline 478
0274 ; CE_CLR();
0274 .dbline 478
0274 A998 cbi 0x15,1
0276 .dbline 478
0276 .dbline 478
0276 .dbline 479
0276 ; PWR_UP_CLR();
0276 .dbline 479
0276 A898 cbi 0x15,0
0278 .dbline 479
0278 .dbline 479
0278 .dbline 481
0278 ; //for (i=0;i<10;i++) Delay100();//从上电到进入配置模式需要3ms 的延时
0278 ; delay_nms(6);
0278 06E0 ldi R16,6
027A 10E0 ldi R17,0
027C AADF xcall _delay_nms
027E .dbline 483
027E ; //CS=1; //使RF2401 进入配置方式
027E ; CS_SET();
027E .dbline 483
027E AC9A sbi 0x15,4
0280 .dbline 483
0280 .dbline 483
0280 .dbline 484
0280 ; for (i=0;i<18;i++)
0280 6627 clr R22
0282 7727 clr R23
0284 0AC0 xjmp L67
0286 L64:
0286 .dbline 485
0286 .dbline 486
0286 80E0 ldi R24,<_nRF2401_Conf
0288 90E0 ldi R25,>_nRF2401_Conf
028A FB01 movw R30,R22
028C E80F add R30,R24
028E F91F adc R31,R25
0290 4081 ldd R20,z+0
0292 .dbline 487
0292 042F mov R16,R20
0294 CCDF xcall _ByteWrite
0296 .dbline 488
0296 L65:
0296 .dbline 484
0296 6F5F subi R22,255 ; offset = 1
0298 7F4F sbci R23,255
029A L67:
029A .dbline 484
029A 6231 cpi R22,18
029C E0E0 ldi R30,0
029E 7E07 cpc R23,R30
02A0 90F3 brlo L64
02A2 .dbline 490
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -