📄 main.lis
字号:
00A8 .dbline -2
00A8 L11:
00A8 0E940000 xcall pop_gset1
00AC .dbline 0 ; func end
00AC 0895 ret
00AE .dbsym r MainValue 20 c
00AE .dbend
00AE .dbfunc e init_usart _init_usart fV
.even
00AE _init_usart::
00AE .dbline -1
00AE .dbline 164
00AE ;
00AE ; }
00AE ;
00AE ; void init_usart(void)
00AE ; {
00AE .dbline 166
00AE ;
00AE ; UCSR0B = 0x00;
00AE 2224 clr R2
00B0 2AB8 out 0xa,R2
00B2 .dbline 167
00B2 ; UCSR0A = 0x00;
00B2 2BB8 out 0xb,R2
00B4 .dbline 168
00B4 ; UCSR0C = 0x06;
00B4 86E0 ldi R24,6
00B6 80939500 sts 149,R24
00BA .dbline 169
00BA ; UBRR0L = 0x67; //BOUDRATE 2400
00BA 87E6 ldi R24,103
00BC 89B9 out 0x9,R24
00BE .dbline 170
00BE ; UBRR0H = 0x00;
00BE 20929000 sts 144,R2
00C2 .dbline 171
00C2 ; UCSR0B = 0x18;
00C2 88E1 ldi R24,24
00C4 8AB9 out 0xa,R24
00C6 .dbline -2
00C6 L12:
00C6 .dbline 0 ; func end
00C6 0895 ret
00C8 .dbend
00C8 .dbfunc e Init _Init fV
00C8 ; MainValue -> R20
00C8 ; addr -> R22
.even
00C8 _Init::
00C8 0E940000 xcall push_gset2
00CC .dbline -1
00CC .dbline 175
00CC ; }
00CC ;
00CC ; void Init()
00CC ; {
00CC .dbline 180
00CC ; char MainValue;
00CC ; char addr;
00CC ;
00CC ;
00CC ; WriteToCC1000Register(CC1000_MAIN,0x3F); // Put CC1000 into power-down
00CC 2FE3 ldi R18,63
00CE 0027 clr R16
00D0 0E940000 xcall _WriteToCC1000Register
00D4 .dbline 181
00D4 ; WriteToCC1000Register(CC1000_PA_POW,0x00); // Turn off PA to minimise current draw
00D4 2227 clr R18
00D6 0BE0 ldi R16,11
00D8 0E940000 xcall _WriteToCC1000Register
00DC .dbline 183
00DC ;
00DC ; MainValue=ReadFromCC1000Register(CC1000_MAIN);
00DC 0027 clr R16
00DE 0E940000 xcall _ReadFromCC1000Register
00E2 402F mov R20,R16
00E4 .dbline 184
00E4 ; WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFE); // Reset CC1000 原先是WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFA);by yu
00E4 242F mov R18,R20
00E6 2E7F andi R18,254
00E8 0027 clr R16
00EA 0E940000 xcall _WriteToCC1000Register
00EE .dbline 185
00EE ; WriteToCC1000Register(CC1000_MAIN,MainValue | 0x01);
00EE 242F mov R18,R20
00F0 2160 ori R18,1
00F2 0027 clr R16
00F4 0E940000 xcall _WriteToCC1000Register
00F8 .dbline 189
00F8 ;
00F8 ;
00F8 ;
00F8 ; WriteToCC1000Register(CC1000_MAIN,0x3A);
00F8 2AE3 ldi R18,58
00FA 0027 clr R16
00FC 0E940000 xcall _WriteToCC1000Register
0100 .dbline 191
0100 ;
0100 ; delay(38);
0100 06E2 ldi R16,38
0102 10E0 ldi R17,0
0104 7DDF xcall _delay
0106 .dbline 193
0106 ;
0106 ; for(addr = 1; addr <= 0x1c; addr ++)
0106 61E0 ldi R22,1
0108 0BC0 xjmp L17
010A L14:
010A .dbline 194
010A 80E0 ldi R24,<_ConfigurationRX-1
010C 90E0 ldi R25,>_ConfigurationRX-1
010E E62F mov R30,R22
0110 FF27 clr R31
0112 E80F add R30,R24
0114 F91F adc R31,R25
0116 2491 lpm R18,Z
0118 062F mov R16,R22
011A 0E940000 xcall _WriteToCC1000Register
011E L15:
011E .dbline 193
011E 6395 inc R22
0120 L17:
0120 .dbline 193
0120 8CE1 ldi R24,28
0122 8617 cp R24,R22
0124 90F7 brsh L14
0126 .dbline 197
0126 ; WriteToCC1000Register(addr, ConfigurationRX[addr - 1]);
0126 ; //WriteToCC1000Register(addr, ConfigurationRX[addr - 1]);
0126 ; /////////////////////////////////////////by yu //////////////////////////////////////////////
0126 ; WriteToCC1000Register(0x1c,0x00); //仿造Pic 里的void ConfigureCC1000()
0126 2227 clr R18
0128 0CE1 ldi R16,28
012A 0E940000 xcall _WriteToCC1000Register
012E .dbline 199
012E ; ///////////////////////////////////////////////////////////////////////////////////////
012E ; for(addr = 0x40; addr <= 0x46; addr ++)
012E 60E4 ldi R22,64
0130 0BC0 xjmp L22
0132 L19:
0132 .dbline 200
0132 80E0 ldi R24,<_ConfigurationTX+20-64
0134 90E0 ldi R25,>_ConfigurationTX+20-64
0136 E62F mov R30,R22
0138 FF27 clr R31
013A E80F add R30,R24
013C F91F adc R31,R25
013E 2491 lpm R18,Z
0140 062F mov R16,R22
0142 0E940000 xcall _WriteToCC1000Register
0146 L20:
0146 .dbline 199
0146 6395 inc R22
0148 L22:
0148 .dbline 199
0148 86E4 ldi R24,70
014A 8617 cp R24,R22
014C 90F7 brsh L19
014E .dbline 274
014E ; WriteToCC1000Register(addr, ConfigurationTX[addr - 0x40 + 0x14]);
014E ; //WriteToCC1000Register(addr, ConfigurationRX[addr - 0x40 + 0x14]);
014E ; //原先是WriteToCC1000Register(addr, Configuration[addr - 0x40 + 0x1C]);
014E ; /*
014E ; //////////////////////////////添加小郭的程序////////////////////////////////////////////////////////////
014E ;
014E ; WriteToCC1000Register(CC1000_MAIN,0x3a); //RXTX=0;F_REQ=0(RX:Register A ,TX:Register B);RX_PD=1;TX_PD=1;FS_PD=1;CORE_PD=0;BIAS_PD=1;REST_N=0
014E ; WriteToCC1000Register(CC1000_PA_POW,0x00);
014E ; WriteToCC1000Register(CC1000_MAIN,0x3b);
014E ; //cal_complete=ReadfromCC1000Register(CC1000_MAIN);
014E ; // cal_complete=0;
014E ; // WriteToCC1000Register(CC1000_MAIN,cal_complete);
014E ; delay(35);
014E ; // WriteToCC1000Register(CC1000_MAIN,0x01);
014E ; // writes 24-bit frequency value used for RX to 433.9164 MHz.
014E ; // Check CC1000 data sheet for equations used to find
014E ; // 0x582000.
014E ; WriteToCC1000Register(CC1000_FREQ_2A,0x58);
014E ; WriteToCC1000Register(CC1000_FREQ_1A,0x20);
014E ; WriteToCC1000Register(CC1000_FREQ_0A,0x00);
014E ; // writes 24-bit frequency value used for TX to 433.9164 MHz.
014E ; // Check CC1000 data sheet for equations used to find
014E ; // 0x448856.
014E ; WriteToCC1000Register(CC1000_FREQ_2B,0x42);
014E ; WriteToCC1000Register(CC1000_FREQ_1B,0x14);
014E ; WriteToCC1000Register(CC1000_FREQ_0B,0x9C);
014E ; // sets frequency separation between 0 value and 1 value
014E ; //设定误码率
014E ; WriteToCC1000Register(CC1000_FSEP1,0x02);
014E ; WriteToCC1000Register(CC1000_FSEP0,0x80);
014E ; WriteToCC1000Register(CC1000_CURRENT,0x81);
014E ; // sets some internal current levels, and enables RSSI output to pin
014E ; WriteToCC1000Register(CC1000_FRONT_END,0x12);
014E ; WriteToCC1000Register(CC1000_PA_POW,0xff);
014E ; // sets the PLL reference divider to divide by 6
014E ; WriteToCC1000Register(CC1000_PLL,0x18);
014E ; // sets External LNA control lock indicator to output on the CHP_OUT pin
014E ; WriteToCC1000Register(CC1000_LOCK,0x10);
014E ; WriteToCC1000Register(CC1000_CAL,0x26);
014E ; // sets threshold level for peak detector (not used in this design)
014E ; WriteToCC1000Register(CC1000_MODEM2,0x8E);
014E ; // sets the averaging filter to free-running and controlled by writes
014E ; // to bit 4 of this register.
014E ; // Sets averaging filter sensitivity to .6dB worst-case loss of sensitivity
014E ; WriteToCC1000Register(CC1000_MODEM1,0x6F);
014E ; // baud rate to 2.4 k, Manchester, and crystal freq. to 11.0592 MHz
014E ; WriteToCC1000Register(CC1000_MODEM0,0x2B);
014E ; // sets capacitor array values for RX and TX
014E ; WriteToCC1000Register(CC1000_MATCH,0x70);
014E ; // disables dithering and data shaping
014E ; WriteToCC1000Register(CC1000_FSCTRL,0x01);
014E ; // sets prescaling to nominal values
014E ;
014E ; WriteToCC1000Register(CC1000_FSHAPE7,0x1c);
014E ; WriteToCC1000Register(CC1000_FSHAPE6,0x16);
014E ; WriteToCC1000Register(CC1000_FSHAPE5,0x10);
014E ; WriteToCC1000Register(CC1000_FSHAPE4,0x0a);
014E ; WriteToCC1000Register(CC1000_FSHAPE3,0x06);
014E ; WriteToCC1000Register(CC1000_FSHAPE2,0x03);
014E ; WriteToCC1000Register(CC1000_FSHAPE1,0x01);
014E ; WriteToCC1000Register(CC1000_FSDELAY,0x1f);
014E ;
014E ; WriteToCC1000Register(CC1000_PRESCALER,0x00);
014E ;
014E ; WriteToCC1000Register(CC1000_TEST6,0x10);
014E ; WriteToCC1000Register(CC1000_TEST5,0x08);
014E ; WriteToCC1000Register(CC1000_TEST4,0x25);
014E ; WriteToCC1000Register(CC1000_TEST3,0x04);
014E ; WriteToCC1000Register(CC1000_TEST2,0x00);
014E ; WriteToCC1000Register(CC1000_TEST1,0x00);
014E ; WriteToCC1000Register(CC1000_TEST0,0x00);
014E ; //////////////////////////////////////////////////////////////////////////////////////////
014E ; */
014E ;
014E ; WakeUpCC1000ToRX(0x44,0x60);
014E 20E6 ldi R18,96
0150 04E4 ldi R16,68
0152 0E940000 xcall _WakeUpCC1000ToRX
0156 L25:
0156 .dbline 278
0156 L26:
0156 .dbline 278
0156 ; //设置DIO为输入
0156 ; //PORTE = 0x00;
0156 ; //DDRE = 0x00;
0156 ; while(!CalibrateCC1000());
0156 0E940000 xcall _CalibrateCC1000
015A 0023 tst R16
015C E1F3 breq L25
015E .dbline 281
015E ; //////////////////////
015E ;
015E ; WakeUpCC1000ToTX(0x81,0x48); //PIC的程序与数据手册上的算法正好反了,先RX,再TX的
015E 28E4 ldi R18,72
0160 01E8 ldi R16,129
0162 0E940000 xcall _WakeUpCC1000ToTX
0166 L28:
0166 .dbline 286
0166 L29:
0166 .dbline 286
0166 ; //设置DIO为输出
0166 ; // PORTE = 0x00;
0166 ; // DDRE = 0x40;
0166 ;
0166 ; while(!CalibrateCC1000());
0166 0E940000 xcall _CalibrateCC1000
016A 0023 tst R16
016C E1F3 breq L28
016E .dbline 319
016E ; /////////////////
016E ; //SetupCC1000TX(0x44,0x60);
016E ;
016E ;
016E ; /*
016E ; WriteToCC1000Register(CC1000_MAIN,0x3F); //
016E ; WriteToCC1000Register(CC1000_PA_POW,0x00); // Power down
016E ;
016E ; MainValue=ReadFromCC1000Register(CC1000_MAIN);
016E ; WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFB); // CORE_PD=0
016E ;
016E ; delay(38);
016E ;
016E ; MainValue=ReadFromCC1000Register(CC1000_MAIN);
016E ; WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFD); // BLAS_PD=0
016E ;
016E ; delay(12);
016E ;
016E ; MainValue=ReadFromCC1000Register(CC1000_MAIN);
016E ; WriteToCC1000Register(CC1000_MAIN,(MainValue & 0xE7) | 0xC0); //RXTX=1,F_REG=1,TX_PD=0,FS_PD=0
016E ; WriteToCC1000Register(CC1000_PA_POW,0x00);
016E ; WriteToCC1000Register(CC1000_CURRENT, 0x81);
016E ; WriteToCC1000Register(CC1000_PLL, 0x48);
016E ;
016E ; delay(12);
016E ; WriteToCC1000Register(CC1000_PA_POW,0x80);
016E ; delay(2);
016E ; */
016E ;
016E ; //1-----------
016E ; // SetupCC1000RX(0x44,0x60);
016E ; //2-------------------
016E ; MainValue=ReadFromCC1000Register(CC1000_MAIN);
016E 0027 clr R16
0170 0E940000 xcall _ReadFromCC1000Register
0174 402F mov R20,R16
0176 .dbline 320
0176 ; WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFB); // CORE_PD=0
0176 242F mov R18,R20
0178 2B7F andi R18,251
017A 0027 clr R16
017C 0E940000 xcall _WriteToCC1000Register
0180 .dbline 321
0180 ; delay(38);
0180 06E2 ldi R16,38
0182 10E0 ldi R17,0
0184 3DDF xcall _delay
0186 .dbline 322
0186 ; MainValue=ReadFromCC1000Register(CC1000_MAIN);
0186 0027 clr R16
0188 0E940000 xcall _ReadFromCC1000Register
018C 402F mov R20,R16
018E .dbline 323
018E ; WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFD); // BLAS_PD=0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -