📄 2.4g+̤
字号:
00D6 ; Module: init_CPU
00D6 ; Function: Initialization of CPU
00D6 ; ------------------------------------------------------------------------------*/
00D6 ; void init_CPU (void)
00D6 ; {
00D6 .dbline 223
00D6 ; MCUCR = 0x00; //
00D6 2224 clr R2
00D8 25BE out 0x35,R2
00DA .dbline 224
00DA ; EICRA = 0x00; //extended ext ints
00DA 20926900 sts 105,R2
00DE .dbline 225
00DE ; EIMSK = 0x00;
00DE 2DBA out 0x1d,R2
00E0 .dbline 227
00E0 ;
00E0 ; TIMSK0 = 0x01; //timer 0 interrupt sources
00E0 81E0 ldi R24,1
00E2 80936E00 sts 110,R24
00E6 .dbline 228
00E6 ; TIMSK1 = 0x00; //timer 1 interrupt sources
00E6 20926F00 sts 111,R2
00EA .dbline 229
00EA ; TIMSK2 = 0x00; //timer 2 interrupt sources
00EA 20927000 sts 112,R2
00EE .dbline 230
00EE ; CLI(); //disable all interrupts
00EE F894 cli
00F0 .dbline 231
00F0 ; NOP();
00F0 0000 nop
00F2 .dbline 232
00F2 ; PORTB = 0x01;
00F2 85B9 out 0x5,R24
00F4 .dbline 233
00F4 ; DDRB = 0xf3;
00F4 83EF ldi R24,243
00F6 84B9 out 0x4,R24
00F8 .dbline 234
00F8 ; PORTD = 0x80;
00F8 80E8 ldi R24,128
00FA 8BB9 out 0xb,R24
00FC .dbline 235
00FC ; DDRD = 0xff;
00FC 8FEF ldi R24,255
00FE 8AB9 out 0xa,R24
0100 .dbline 236
0100 ; PORTC = 0x80;
0100 80E8 ldi R24,128
0102 88B9 out 0x8,R24
0104 .dbline 237
0104 ; DDRC = 0x78;
0104 88E7 ldi R24,120
0106 87B9 out 0x7,R24
0108 .dbline 238
0108 ; nrf24l01init();
0108 DFDF rcall _nrf24l01init
010A .dbline 239
010A ; nRF24L01_CEL;
010A 5D98 cbi 0xb,5
010C .dbline 240
010C ; delay();
010C 05D0 rcall _delay
010E .dbline 241
010E ; nRF24L01_CSNH; // Spi disable
010E 5E9A sbi 0xb,6
0110 .dbline 242
0110 ; delay();
0110 03D0 rcall _delay
0112 .dbline 243
0112 ; nRF24L01_SCKL;
0112 5F98 cbi 0xb,7
0114 .dbline 244
0114 ; delay();
0114 01D0 rcall _delay
0116 .dbline -2
0116 L21:
0116 .dbline 0 ; func end
0116 0895 ret
0118 .dbend
0118 .dbfunc e delay _delay fV
.even
0118 _delay::
0118 .dbline -1
0118 .dbline 247
0118 ; }
0118 ; void delay(void)//
0118 ; {
0118 .dbline 248
0118 ; NOP();
0118 0000 nop
011A .dbline 249
011A ; NOP();
011A 0000 nop
011C .dbline 250
011C ; NOP();
011C 0000 nop
011E .dbline 251
011E ; NOP();
011E 0000 nop
0120 .dbline 252
0120 ; NOP();
0120 0000 nop
0122 .dbline 253
0122 ; NOP();
0122 0000 nop
0124 .dbline -2
0124 L22:
0124 .dbline 0 ; func end
0124 0895 ret
0126 .dbend
0126 .dbfunc e delayms _delayms fV
0126 ; dly -> R16,R17
.even
0126 _delayms::
0126 .dbline -1
0126 .dbline 256
0126 ; }
0126 ; void delayms(unsigned short dly)//
0126 ; {
0126 .dbline 257
0126 02C0 rjmp L27
0128 L24:
0128 .dbline 257
0128 L25:
0128 .dbline 257
0128 0150 subi R16,1
012A 1040 sbci R17,0
012C L27:
012C .dbline 257
012C ; for(;dly>0;dly--) ;
012C 0030 cpi R16,0
012E 0107 cpc R16,R17
0130 D9F7 brne L24
0132 X1:
0132 .dbline -2
0132 L23:
0132 .dbline 0 ; func end
0132 0895 ret
0134 .dbsym r dly 16 s
0134 .dbend
0134 .dbfunc e clear_buf _clear_buf fV
0134 ; number -> R18
0134 ; ptr -> R16,R17
.even
0134 _clear_buf::
0134 .dbline -1
0134 .dbline 261
0134 ; }
0134 ;
0134 ; void clear_buf(unsigned char *ptr,unsigned char number)//清零buffer,指定字节个数
0134 ; {
0134 .dbline 262
0134 05C0 rjmp L32
0136 L29:
0136 .dbline 262
0136 2224 clr R2
0138 F801 movw R30,R16
013A 2192 st Z+,R2
013C 8F01 movw R16,R30
013E L30:
013E .dbline 262
013E 2A95 dec R18
0140 L32:
0140 .dbline 262
0140 ; for (;number>0;number--) *ptr++=0;
0140 2224 clr R2
0142 2216 cp R2,R18
0144 C0F3 brlo L29
0146 .dbline -2
0146 L28:
0146 .dbline 0 ; func end
0146 0895 ret
0148 .dbsym r number 18 c
0148 .dbsym r ptr 16 pc
0148 .dbend
0148 .dbfunc e SPI_RW _SPI_RW fc
0148 ; bit_ctr -> R20
0148 ; byte -> R22
.even
0148 _SPI_RW::
0148 00D0 rcall push_gset2
014A 602F mov R22,R16
014C .dbline -1
014C .dbline 273
014C ; }
014C ; //------------------------------------------------------
014C ; /**************************************************
014C ; Function: SPI_RW();
014C ;
014C ; Description:
014C ; Writes one byte to nRF24L01, and return the byte read
014C ; from nRF24L01 during write, according to SPI protocol */
014C ; /**************************************************/
014C ; unsigned char SPI_RW(unsigned char byte)
014C ; {
014C .dbline 275
014C ; unsigned char bit_ctr;
014C ; for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
014C 4427 clr R20
014E 0FC0 rjmp L37
0150 L34:
0150 .dbline 276
0150 ; {
0150 .dbline 277
0150 ; if(byte & 0x80)
0150 67FF sbrs R22,7
0152 02C0 rjmp L38
0154 .dbline 278
0154 ; nRF24L01_MOSIH;
0154 289A sbi 0x5,0
0156 01C0 rjmp L39
0158 L38:
0158 .dbline 280
0158 ; else
0158 ; nRF24L01_MOSIL;
0158 2898 cbi 0x5,0
015A L39:
015A .dbline 281
015A ; delay();
015A DEDF rcall _delay
015C .dbline 282
015C ; byte = (byte << 1); // shift next bit into MSB..
015C 660F lsl R22
015E .dbline 283
015E ; nRF24L01_SCKH;
015E 5F9A sbi 0xb,7
0160 .dbline 284
0160 ; delay();
0160 DBDF rcall _delay
0162 .dbline 285
0162 ; if(PINB&nRF24L01_MISO) byte |= 1;
0162 199B sbis 0x3,1
0164 01C0 rjmp L40
0166 .dbline 285
0166 6160 ori R22,1
0168 L40:
0168 .dbline 286
0168 5F98 cbi 0xb,7
016A .dbline 287
016A D6DF rcall _delay
016C .dbline 288
016C L35:
016C .dbline 275
016C 4395 inc R20
016E L37:
016E .dbline 275
016E 4830 cpi R20,8
0170 78F3 brlo L34
0172 .dbline 289
0172 ; nRF24L01_SCKL;
0172 ; delay();
0172 ; }
0172 ; return(byte); // return read byte
0172 062F mov R16,R22
0174 .dbline -2
0174 L33:
0174 00D0 rcall pop_gset2
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r bit_ctr 20 c
0178 .dbsym r byte 22 c
0178 .dbend
0178 .dbfunc e SPI_RW_Reg _SPI_RW_Reg fc
0178 ; status -> R20
0178 ; value -> R22
0178 ; reg -> R20
.even
0178 _SPI_RW_Reg::
0178 00D0 rcall push_gset2
017A 622F mov R22,R18
017C 402F mov R20,R16
017E .dbline -1
017E .dbline 298
017E ; }
017E ; /**************************************************
017E ; Function: SPI_RW_Reg();
017E ;
017E ; Description:
017E ; Writes value 'value' to register 'reg' */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -