📄 jifeng_jieshou.lis
字号:
0002 ; void Spi_initial(); //SPI初始化
0002 ; uchar SpiReadSpiWrite(unsigned char cData); //SPI读写子程序
0002 ; void system_Init(void); //系统初始化
0002 ; void Config905(void); //NRF905初始化子程序
0002 ; void TxPacket(void);
0002 ; void SetTxMode(void); //数据发送
0002 ; void SetRxMode(void); //
0002 ; void TX(void);
0002 ; unsigned char CheckDR(void);
0002 ; void RxPacket(void);
0002 ; void RX(void);
0002 ; //-------------------------------串口函数申明-----------------------------------
0002 ; void StartUART(void);
0002 ; void R_S_Byte(uchar R_Byte);
0002 ; //-------------------------------LCD函数申明------------------------------------
0002 ; void LCD_Delay(uint time);
0002 ; void Lcd_init(void);
0002 ; void Lcd_Write_Data(uchar DATA) ;
0002 ; void Lcd_Write_command(uchar COMMAND);
0002 ; void Lcd_CURSOR(uchar add_page,uchar add_col) ;
0002 ; void Lcd_Clear(void) ;
0002 ; void dis_1616hz(uchar x1,uchar x2,uchar row,const uchar hz[]);
0002 ; void dis_168hz(uchar x1,uchar row,const uchar hz[]);
0002 ; void LCDtime();
0002 ; //----------------------------------100us延时子程序-----------------------------
0002 ; void Delay(uint x)
0002 ; {
0002 09C0 rjmp L3
0004 L2:
0004 .dbline 186
0004 4427 clr R20
0006 5527 clr R21
0008 02C0 rjmp L8
000A L5:
000A .dbline 186
000A L6:
000A .dbline 186
000A 4F5F subi R20,255 ; offset = 1
000C 5F4F sbci R21,255
000E L8:
000E .dbline 186
000E 4035 cpi R20,80
0010 E0E0 ldi R30,0
0012 5E07 cpc R21,R30
0014 D0F3 brlo L5
0016 L3:
0016 .dbline 185
0016 ; uint i;
0016 ; while(x--)
0016 202E mov R2,R16
0018 312E mov R3,R17
001A 0150 subi R16,1
001C 1040 sbci R17,0
001E 2220 tst R2
0020 89F7 brne L2
0022 3320 tst R3
0024 79F7 brne L2
0026 X0:
0026 .dbline -2
0026 L1:
0026 00D0 rcall pop_gset1
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r i 20 i
002A .dbsym r x 16 i
002A .dbend
002A .dbfunc e Spi_initial _Spi_initial fV
.even
002A _Spi_initial::
002A .dbline -1
002A .dbline 190
002A ; for(i=0;i<80;i++);
002A ; }
002A ; //----------------------------------SPI初始化-----------------------------------
002A ; void Spi_initial()
002A ; {
002A .dbline 191
002A ; SPCR = (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<SPR0);// 主机模式,fck/16, SPI方式0
002A 80E5 ldi R24,80
002C 8DB9 out 0xd,R24
002E .dbline -2
002E L9:
002E .dbline 0 ; func end
002E 0895 ret
0030 .dbend
0030 .dbfunc e SpiReadSpiWrite _SpiReadSpiWrite fc
0030 ; cData -> R16
.even
0030 _SpiReadSpiWrite::
0030 .dbline -1
0030 .dbline 195
0030 ; }
0030 ; //---------------------------------SPI读写程序----------------------------------
0030 ; uchar SpiReadSpiWrite(unsigned char cData)
0030 ; {
0030 .dbline 196
0030 ; SPDR = cData;
0030 0FB9 out 0xf,R16
0032 L11:
0032 .dbline 198
0032 .dbline 198
0032 L12:
0032 .dbline 197
0032 ; while(!(SPSR & (1<<SPIF) )) // 等待SPI发送完毕
0032 779B sbis 0xe,7
0034 FECF rjmp L11
0036 .dbline 198
0036 ; {};
0036 .dbline 199
0036 ; return SPDR;
0036 0FB1 in R16,0xf
0038 .dbline -2
0038 L10:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbsym r cData 16 c
003A .dbend
003A .dbfunc e system_Init _system_Init fV
.even
003A _system_Init::
003A .dbline -1
003A .dbline 203
003A ; }
003A ; //--------------------------------系统状态初始化--------------------------------
003A ; void system_Init(void)
003A ; {
003A .dbline 205
003A ;
003A ; Hign_nrf905_CSN; // SPI使能
003A C49A sbi 0x18,4
003C .dbline 205
003C .dbline 206
003C ; Low_nrf905_SCK;
003C C798 cbi 0x18,7
003E .dbline 206
003E .dbline 207
003E ; Low_nrf905_DR; // DR=0
003E C298 cbi 0x18,2
0040 .dbline 207
0040 .dbline 208
0040 ; Low_nrf905_AM; // AM=0
0040 C398 cbi 0x18,3
0042 .dbline 208
0042 .dbline 209
0042 ; Low_nrf905_CD; // CD=0
0042 9498 cbi 0x12,4
0044 .dbline 209
0044 .dbline 210
0044 ; Hign_nrf905_PWR; // PWR=1
0044 C19A sbi 0x18,1
0046 .dbline 210
0046 .dbline 211
0046 ; Low_nrf905_TRX_CE; // nrf905_TRX_CE=0
0046 9598 cbi 0x12,5
0048 .dbline 211
0048 .dbline 212
0048 ; Low_nrf905_TX_EN ; // nrf905_TX_EN=0
0048 C098 cbi 0x18,0
004A .dbline 212
004A .dbline -2
004A L14:
004A .dbline 0 ; func end
004A 0895 ret
004C .dbend
004C .dbfunc e Config905 _Config905 fV
004C ; i -> R20
.even
004C _Config905::
004C 00D0 rcall push_gset1
004E .dbline -1
004E .dbline 216
004E ; }
004E ; //--------------------------------NRF905寄存器初始化函数------------------------
004E ; void Config905(void)
004E ; {
004E .dbline 218
004E ; uchar i;
004E ; Low_nrf905_CSN; //SPI使能
004E C498 cbi 0x18,4
0050 .dbline 218
0050 .dbline 219
0050 ; Delay(1);
0050 01E0 ldi R16,1
0052 10E0 ldi R17,0
0054 D5DF rcall _Delay
0056 .dbline 220
0056 ; for (i=0;i<11;i++) //碞RF905配置字
0056 4427 clr R20
0058 09C0 rjmp L19
005A L16:
005A .dbline 221
005A .dbline 222
005A 80E0 ldi R24,<_RFConf
005C 90E0 ldi R25,>_RFConf
005E E42F mov R30,R20
0060 FF27 clr R31
0062 E80F add R30,R24
0064 F91F adc R31,R25
0066 0081 ldd R16,z+0
0068 E3DF rcall _SpiReadSpiWrite
006A .dbline 223
006A L17:
006A .dbline 220
006A 4395 inc R20
006C L19:
006C .dbline 220
006C 4B30 cpi R20,11
006E A8F3 brlo L16
0070 .dbline 224
0070 ; {
0070 ; SpiReadSpiWrite(RFConf[i]);
0070 ; }
0070 ; Hign_nrf905_CSN; // Disable Spi
0070 C49A sbi 0x18,4
0072 .dbline 224
0072 .dbline -2
0072 L15:
0072 00D0 rcall pop_gset1
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbsym r i 20 c
0076 .dbend
0076 .dbfunc e TxPacket _TxPacket fV
0076 ; i -> R20
.even
0076 _TxPacket::
0076 00D0 rcall push_gset1
0078 .dbline -1
0078 .dbline 228
0078 ; }
0078 ; //--------------------------------NRF905待发数据打包----------------------------
0078 ; void TxPacket(void)
0078 ; {
0078 .dbline 230
0078 ; uchar i;
0078 ; Low_nrf905_CSN; // 使能Spi,允许对nrf905进行读写操作
0078 C498 cbi 0x18,4
007A .dbline 230
007A .dbline 231
007A ; Delay(1);
007A 01E0 ldi R16,1
007C 10E0 ldi R17,0
007E C0DF rcall _Delay
0080 .dbline 232
0080 ; SpiReadSpiWrite(WTP); // 写数据前先写写数据命令
0080 00E2 ldi R16,32
0082 D6DF rcall _SpiReadSpiWrite
0084 .dbline 233
0084 ; for (i=0;i<32;i++)
0084 4427 clr R20
0086 09C0 rjmp L24
0088 L21:
0088 .dbline 234
0088 .dbline 235
0088 80E0 ldi R24,<_TxRxBuffer
008A 90E0 ldi R25,>_TxRxBuffer
008C E42F mov R30,R20
008E FF27 clr R31
0090 E80F add R30,R24
0092 F91F adc R31,R25
0094 0081 ldd R16,z+0
0096 CCDF rcall _SpiReadSpiWrite
0098 .dbline 236
0098 L22:
0098 .dbline 233
0098 4395 inc R20
009A L24:
009A .dbline 233
009A 4032 cpi R20,32
009C A8F3 brlo L21
009E .dbline 237
009E ; {
009E ; SpiReadSpiWrite(TxRxBuffer[i]); // 待发送的32字节数据
009E ; }
009E ; Hign_nrf905_CSN;
009E C49A sbi 0x18,4
00A0 .dbline 237
00A0 .dbline 238
00A0 ; Delay(1); // 关闭Spi,不允许对nrf905进行读写操作
00A0 01E0 ldi R16,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -