📄 main.lis
字号:
0134 .dbline -2
0134 L22:
0134 .dbline 0 ; func end
0134 0895 ret
0136 .dbend
0136 .dbfunc e delay _delay fV
.even
0136 _delay::
0136 .dbline -1
0136 .dbline 208
0136 ; }
0136 ; void delay(void)//
0136 ; {
0136 .dbline 209
0136 ; NOP();
0136 0000 nop
0138 .dbline 210
0138 ; NOP();
0138 0000 nop
013A .dbline 211
013A ; NOP();
013A 0000 nop
013C .dbline 212
013C ; NOP();
013C 0000 nop
013E .dbline 213
013E ; NOP();
013E 0000 nop
0140 .dbline 214
0140 ; NOP();
0140 0000 nop
0142 .dbline -2
0142 L23:
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbend
0144 .dbfunc e delayms _delayms fV
0144 ; dly -> R16,R17
.even
0144 _delayms::
0144 .dbline -1
0144 .dbline 217
0144 ; }
0144 ; void delayms(unsigned short dly)//
0144 ; {
0144 .dbline 218
0144 ; for(;dly>0;dly--) ;
0144 02C0 rjmp L28
0146 L25:
0146 .dbline 218
0146 L26:
0146 .dbline 218
0146 0150 subi R16,1
0148 1040 sbci R17,0
014A L28:
014A .dbline 218
014A 0030 cpi R16,0
014C 0107 cpc R16,R17
014E D9F7 brne L25
0150 X9:
0150 .dbline -2
0150 L24:
0150 .dbline 0 ; func end
0150 0895 ret
0152 .dbsym r dly 16 s
0152 .dbend
0152 .dbfunc e clear_buf _clear_buf fV
0152 ; number -> R18
0152 ; ptr -> R16,R17
.even
0152 _clear_buf::
0152 .dbline -1
0152 .dbline 222
0152 ; }
0152 ;
0152 ; void clear_buf(unsigned char *ptr,unsigned char number)//清零buffer,指定字节个数
0152 ; {
0152 .dbline 223
0152 ; for (;number>0;number--) *ptr++=0;
0152 05C0 rjmp L33
0154 L30:
0154 .dbline 223
0154 2224 clr R2
0156 F801 movw R30,R16
0158 2192 st Z+,R2
015A 8F01 movw R16,R30
015C L31:
015C .dbline 223
015C 2A95 dec R18
015E L33:
015E .dbline 223
015E 80E0 ldi R24,0
0160 8217 cp R24,R18
0162 C0F3 brlo L30
0164 X10:
0164 .dbline -2
0164 L29:
0164 .dbline 0 ; func end
0164 0895 ret
0166 .dbsym r number 18 c
0166 .dbsym r ptr 16 pc
0166 .dbend
0166 .dbfunc e SPI_RW _SPI_RW fc
0166 ; bit_ctr -> R22
0166 ; byte -> R20
.even
0166 _SPI_RW::
0166 00D0 rcall push_xgsetF000
0168 402F mov R20,R16
016A .dbline -1
016A .dbline 234
016A ; }
016A ; //------------------------------------------------------
016A ; /**************************************************
016A ; Function: SPI_RW();
016A ;
016A ; Description:
016A ; Writes one byte to nRF24L01, and return the byte read
016A ; from nRF24L01 during write, according to SPI protocol */
016A ; /**************************************************/
016A ; unsigned char SPI_RW(unsigned char byte)
016A ; {
016A .dbline 236
016A ; unsigned char bit_ctr;
016A ; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
016A 6627 clr R22
016C 0FC0 rjmp L38
016E L35:
016E .dbline 237
016E ; {
016E .dbline 238
016E ; if(byte & 0x80)
016E 47FF sbrs R20,7
0170 02C0 rjmp L39
0172 X11:
0172 .dbline 239
0172 ; nRF24L01_MOSIH;
0172 289A sbi 0x5,0
0174 01C0 rjmp L40
0176 L39:
0176 .dbline 241
0176 ; else
0176 ; nRF24L01_MOSIL;
0176 2898 cbi 0x5,0
0178 L40:
0178 .dbline 242
0178 ; delay();
0178 DEDF rcall _delay
017A .dbline 243
017A ; byte = (byte << 1); // shift next bit into MSB..
017A 440F lsl R20
017C .dbline 244
017C ; nRF24L01_SCKH;
017C 299A sbi 0x5,1
017E .dbline 245
017E ; delay();
017E DBDF rcall _delay
0180 .dbline 246
0180 ; if(PINB&0x08) byte |= 1;
0180 1B9B sbis 0x3,3
0182 01C0 rjmp L41
0184 X12:
0184 .dbline 246
0184 4160 ori R20,1
0186 L41:
0186 .dbline 247
0186 ; nRF24L01_SCKL;
0186 2998 cbi 0x5,1
0188 .dbline 248
0188 ; delay();
0188 D6DF rcall _delay
018A .dbline 249
018A ; }
018A L36:
018A .dbline 236
018A 6395 inc R22
018C L38:
018C .dbline 236
018C 6830 cpi R22,8
018E 78F3 brlo L35
0190 X13:
0190 .dbline 250
0190 ; return(byte); // return read byte
0190 042F mov R16,R20
0192 .dbline -2
0192 L34:
0192 .dbline 0 ; func end
0192 00C0 rjmp pop_xgsetF000
0194 .dbsym r bit_ctr 22 c
0194 .dbsym r byte 20 c
0194 .dbend
0194 .dbfunc e SPI_RW_Reg _SPI_RW_Reg fc
0194 ; status -> R10
0194 ; value -> R12
0194 ; reg -> R10
.even
0194 _SPI_RW_Reg::
0194 00D0 rcall push_xgset003C
0196 C22E mov R12,R18
0198 A02E mov R10,R16
019A .dbline -1
019A .dbline 259
019A ; }
019A ; /**************************************************
019A ; Function: SPI_RW_Reg();
019A ;
019A ; Description:
019A ; Writes value 'value' to register 'reg' */
019A ; /**************************************************/
019A ; unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
019A ; {
019A .dbline 261
019A ; unsigned char status;
019A ; nRF24L01_CSNL;
019A 5E98 cbi 0xb,6
019C .dbline 262
019C ; delay();
019C CCDF rcall _delay
019E .dbline 263
019E ; status = SPI_RW(reg); // select register
019E 0A2D mov R16,R10
01A0 E2DF rcall _SPI_RW
01A2 A02E mov R10,R16
01A4 .dbline 264
01A4 ; SPI_RW(value); // ..and write value to it..
01A4 0C2D mov R16,R12
01A6 DFDF rcall _SPI_RW
01A8 .dbline 265
01A8 ; nRF24L01_CSNH;
01A8 5E9A sbi 0xb,6
01AA .dbline 266
01AA ; delay();
01AA C5DF rcall _delay
01AC .dbline 267
01AC ; return(status); // return nRF24L01 status byte
01AC 0A2D mov R16,R10
01AE .dbline -2
01AE L43:
01AE .dbline 0 ; func end
01AE 00C0 rjmp pop_xgset003C
01B0 .dbsym r status 10 c
01B0 .dbsym r value 12 c
01B0 .dbsym r reg 10 c
01B0 .dbend
01B0 .dbfunc e SPI_Read _SPI_Read fc
01B0 ; reg_val -> R10
01B0 ; reg -> R10
.even
01B0 _SPI_Read::
01B0 AA92 st -y,R10
01B2 BA92 st -y,R11
01B4 A02E mov R10,R16
01B6 .dbline -1
01B6 .dbline 276
01B6 ; }
01B6 ; /**************************************************
01B6 ; Function: SPI_Read();
01B6 ;
01B6 ; Description:
01B6 ; Read one byte from nRF24L01 register, 'reg' */
01B6 ; /**************************************************/
01B6 ; unsigned char SPI_Read(unsigned char reg)
01B6 ; {
01B6 .dbline 278
01B6 ; unsigned char reg_val;
01B6 ; nRF24L01_CSNL;
01B6 5E98 cbi 0xb,6
01B8 .dbline 279
01B8 ; delay();
01B8 BEDF rcall _delay
01BA .dbline 280
01BA ; SPI_RW(reg); // Select register to read from..
01BA 0A2D mov R16,R10
01BC D4DF rcall _SPI_RW
01BE .dbline 281
01BE ; reg_val = SPI_RW(0); // ..then read registervalue
01BE 0027 clr R16
01C0 D2DF rcall _SPI_RW
01C2 A02E mov R10,R16
01C4 .dbline 282
01C4 ; nRF24L01_CSNH;
01C4 5E9A sbi 0xb,6
01C6 .dbline 283
01C6 ; delay();
01C6 B7DF rcall _delay
01C8 .dbline 284
01C8 ; return(reg_val); // return register value
01C8 0A2D mov R16,R10
01CA .dbline -2
01CA L44:
01CA .dbline 0 ; func end
01CA B990 ld R11,y+
01CC A990 ld R10,y+
01CE 0895 ret
01D0 .dbsym r reg_val 10 c
01D0 .dbsym r reg 10 c
01D0 .dbend
01D0 .dbfunc e SPI_Read_Buf _SPI_Read_Buf fc
01D0 ; status -> R10
01D0 ; byte_ctr -> R12
01D0 ; bytes -> y+6
01D0 ; pBuf -> R14,R15
01D0 ; reg -> R10
.even
01D0 _SPI_Read_Buf::
01D0 00D0 rcall push_xgset00FC
01D2 7901 movw R14,R18
01D4 A02E mov R10,R16
01D6 .dbline -1
01D6 .dbline 294
01D6 ; }
01D6 ; /**************************************************
01D6 ; Function: SPI_Read_Buf();
01D6 ;
01D6 ; Description:
01D6 ; Reads 'bytes' #of bytes from register 'reg'
01D6 ; Typically used to read RX payload, Rx/Tx address */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -