📄 main.lis
字号:
0170 .dbline 215
0170 ; CLI(); //disable all interrupts
0170 F894 cli
0172 .dbline 216
0172 ; NOP();
0172 0000 nop
0174 .dbline 217
0174 ; PORTB = 0x81;
0174 81E8 ldi R24,129
0176 85B9 out 0x5,R24
0178 .dbline 218
0178 ; DDRB = 0xf3;
0178 83EF ldi R24,243
017A 84B9 out 0x4,R24
017C .dbline 219
017C ; PORTD = 0x80;
017C 80E8 ldi R24,128
017E 8BB9 out 0xb,R24
0180 .dbline 220
0180 ; DDRD = 0xff;
0180 8FEF ldi R24,255
0182 8AB9 out 0xa,R24
0184 .dbline 221
0184 ; PORTC = 0x80;
0184 80E8 ldi R24,128
0186 88B9 out 0x8,R24
0188 .dbline 222
0188 ; DDRC = 0x78;
0188 88E7 ldi R24,120
018A 87B9 out 0x7,R24
018C .dbline 223
018C ; nRF24L01_CEL;
018C 5F98 cbi 0xb,7
018E .dbline 224
018E ; delay();
018E 05D0 rcall _delay
0190 .dbline 225
0190 ; nRF24L01_CSNH; // Spi disable
0190 5E9A sbi 0xb,6
0192 .dbline 226
0192 ; delay();
0192 03D0 rcall _delay
0194 .dbline 227
0194 ; nRF24L01_SCKL;
0194 2998 cbi 0x5,1
0196 .dbline 228
0196 ; delay();
0196 01D0 rcall _delay
0198 .dbline -2
0198 L32:
0198 .dbline 0 ; func end
0198 0895 ret
019A .dbend
019A .dbfunc e delay _delay fV
.even
019A _delay::
019A .dbline -1
019A .dbline 231
019A ; }
019A ; void delay(void)//
019A ; {
019A .dbline 232
019A ; NOP();
019A 0000 nop
019C .dbline 233
019C ; NOP();
019C 0000 nop
019E .dbline 234
019E ; NOP();
019E 0000 nop
01A0 .dbline 235
01A0 ; NOP();
01A0 0000 nop
01A2 .dbline 236
01A2 ; NOP();
01A2 0000 nop
01A4 .dbline 237
01A4 ; NOP();
01A4 0000 nop
01A6 .dbline -2
01A6 L33:
01A6 .dbline 0 ; func end
01A6 0895 ret
01A8 .dbend
01A8 .dbfunc e delayms _delayms fV
01A8 ; dly -> R16,R17
.even
01A8 _delayms::
01A8 .dbline -1
01A8 .dbline 240
01A8 ; }
01A8 ; void delayms(unsigned short dly)//
01A8 ; {
01A8 .dbline 241
01A8 ; for(;dly>0;dly--) ;
01A8 02C0 rjmp L38
01AA L35:
01AA .dbline 241
01AA L36:
01AA .dbline 241
01AA 0150 subi R16,1
01AC 1040 sbci R17,0
01AE L38:
01AE .dbline 241
01AE 0030 cpi R16,0
01B0 0107 cpc R16,R17
01B2 D9F7 brne L35
01B4 X15:
01B4 .dbline -2
01B4 L34:
01B4 .dbline 0 ; func end
01B4 0895 ret
01B6 .dbsym r dly 16 s
01B6 .dbend
01B6 .dbfunc e clear_buf _clear_buf fV
01B6 ; number -> R18
01B6 ; ptr -> R16,R17
.even
01B6 _clear_buf::
01B6 .dbline -1
01B6 .dbline 245
01B6 ; }
01B6 ;
01B6 ; void clear_buf(unsigned char *ptr,unsigned char number)//清零buffer,指定字节个数
01B6 ; {
01B6 .dbline 246
01B6 ; for (;number>0;number--) *ptr++=0;
01B6 05C0 rjmp L43
01B8 L40:
01B8 .dbline 246
01B8 2224 clr R2
01BA F801 movw R30,R16
01BC 2192 st Z+,R2
01BE 8F01 movw R16,R30
01C0 L41:
01C0 .dbline 246
01C0 2A95 dec R18
01C2 L43:
01C2 .dbline 246
01C2 80E0 ldi R24,0
01C4 8217 cp R24,R18
01C6 C0F3 brlo L40
01C8 X16:
01C8 .dbline -2
01C8 L39:
01C8 .dbline 0 ; func end
01C8 0895 ret
01CA .dbsym r number 18 c
01CA .dbsym r ptr 16 pc
01CA .dbend
01CA .dbfunc e SPI_RW _SPI_RW fc
01CA ; bit_ctr -> R22
01CA ; byte -> R20
.even
01CA _SPI_RW::
01CA 00D0 rcall push_xgsetF000
01CC 402F mov R20,R16
01CE .dbline -1
01CE .dbline 257
01CE ; }
01CE ; //------------------------------------------------------
01CE ; /**************************************************
01CE ; Function: SPI_RW();
01CE ;
01CE ; Description:
01CE ; Writes one byte to nRF24L01, and return the byte read
01CE ; from nRF24L01 during write, according to SPI protocol */
01CE ; /**************************************************/
01CE ; unsigned char SPI_RW(unsigned char byte)
01CE ; {
01CE .dbline 259
01CE ; unsigned char bit_ctr;
01CE ; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
01CE 6627 clr R22
01D0 0FC0 rjmp L48
01D2 L45:
01D2 .dbline 260
01D2 ; {
01D2 .dbline 261
01D2 ; if(byte & 0x80)
01D2 47FF sbrs R20,7
01D4 02C0 rjmp L49
01D6 X17:
01D6 .dbline 262
01D6 ; nRF24L01_MOSIH;
01D6 289A sbi 0x5,0
01D8 01C0 rjmp L50
01DA L49:
01DA .dbline 264
01DA ; else
01DA ; nRF24L01_MOSIL;
01DA 2898 cbi 0x5,0
01DC L50:
01DC .dbline 265
01DC ; delay();
01DC DEDF rcall _delay
01DE .dbline 266
01DE ; byte = (byte << 1); // shift next bit into MSB..
01DE 440F lsl R20
01E0 .dbline 267
01E0 ; nRF24L01_SCKH;
01E0 299A sbi 0x5,1
01E2 .dbline 268
01E2 ; delay();
01E2 DBDF rcall _delay
01E4 .dbline 269
01E4 ; if(PINB&0x08) byte |= 1;
01E4 1B9B sbis 0x3,3
01E6 01C0 rjmp L51
01E8 X18:
01E8 .dbline 269
01E8 4160 ori R20,1
01EA L51:
01EA .dbline 270
01EA ; nRF24L01_SCKL;
01EA 2998 cbi 0x5,1
01EC .dbline 271
01EC ; delay();
01EC D6DF rcall _delay
01EE .dbline 272
01EE ; }
01EE L46:
01EE .dbline 259
01EE 6395 inc R22
01F0 L48:
01F0 .dbline 259
01F0 6830 cpi R22,8
01F2 78F3 brlo L45
01F4 X19:
01F4 .dbline 273
01F4 ; return(byte); // return read byte
01F4 042F mov R16,R20
01F6 .dbline -2
01F6 L44:
01F6 .dbline 0 ; func end
01F6 00C0 rjmp pop_xgsetF000
01F8 .dbsym r bit_ctr 22 c
01F8 .dbsym r byte 20 c
01F8 .dbend
01F8 .dbfunc e SPI_RW_Reg _SPI_RW_Reg fc
01F8 ; status -> R10
01F8 ; value -> R12
01F8 ; reg -> R10
.even
01F8 _SPI_RW_Reg::
01F8 00D0 rcall push_xgset003C
01FA C22E mov R12,R18
01FC A02E mov R10,R16
01FE .dbline -1
01FE .dbline 282
01FE ; }
01FE ; /**************************************************
01FE ; Function: SPI_RW_Reg();
01FE ;
01FE ; Description:
01FE ; Writes value 'value' to register 'reg' */
01FE ; /**************************************************/
01FE ; unsigned char SPI_RW_Reg(unsigned char reg, unsigned char value)
01FE ; {
01FE .dbline 284
01FE ; unsigned char status;
01FE ; nRF24L01_CSNL;
01FE 5E98 cbi 0xb,6
0200 .dbline 285
0200 ; delay();
0200 CCDF rcall _delay
0202 .dbline 286
0202 ; status = SPI_RW(reg); // select register
0202 0A2D mov R16,R10
0204 E2DF rcall _SPI_RW
0206 A02E mov R10,R16
0208 .dbline 287
0208 ; SPI_RW(value); // ..and write value to it..
0208 0C2D mov R16,R12
020A DFDF rcall _SPI_RW
020C .dbline 288
020C ; nRF24L01_CSNH;
020C 5E9A sbi 0xb,6
020E .dbline 289
020E ; delay();
020E C5DF rcall _delay
0210 .dbline 290
0210 ; return(status); // return nRF24L01 status byte
0210 0A2D mov R16,R10
0212 .dbline -2
0212 L53:
0212 .dbline 0 ; func end
0212 00C0 rjmp pop_xgset003C
0214 .dbsym r status 10 c
0214 .dbsym r value 12 c
0214 .dbsym r reg 10 c
0214 .dbend
0214 .dbfunc e SPI_Read _SPI_Read fc
0214 ; reg_val -> R10
0214 ; reg -> R10
.even
0214 _SPI_Read::
0214 AA92 st -y,R10
0216 BA92 st -y,R11
0218 A02E mov R10,R16
021A .dbline -1
021A .dbline 299
021A ; }
021A ; /**************************************************
021A ; Function: SPI_Read();
021A ;
021A ; Description:
021A ; Read one byte from nRF24L01 register, 'reg' */
021A ; /**************************************************/
021A ; unsigned char SPI_Read(unsigned char reg)
021A ; {
021A .dbline 301
021A ; unsigned char reg_val;
021A ; nRF24L01_CSNL;
021A 5E98 cbi 0xb,6
021C .dbline 302
021C ; delay();
021C BEDF rcall _delay
021E .dbline 303
021E ; SPI_RW(reg); // Select register to read from..
021E 0A2D mov R16,R10
0220 D4DF rcall _SPI_RW
0222 .dbline 304
0222 ; reg_val = SPI_RW(0); // ..then read registervalue
0222 0027 clr R16
0224 D2DF rcall _SPI_RW
0226 A02E mov R10,R16
0228 .dbline 305
0228 ; nRF24L01_CSNH;
0228 5E9A sbi 0xb,6
022A .dbline 306
022A ; delay();
022A B7DF rcall _delay
022C .dbline 307
022C ; return(reg_val); // return register value
022C 0A2D mov R16,R10
022E .dbline -2
022E L54:
022E .dbline 0 ; func end
022E B990 ld R11,y+
0230 A990 ld R10,y+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -