📄 main.s
字号:
.module main.c
.area lit(rom, con, rel)
_ConfigurationTX::
.byte 'X,32
.byte 0,'B
.byte 20,156
.byte 2,128
.byte 129,18
.byte 15,'H
.byte 16,38
.byte 140,125
.byte 43,'p
.byte 1,0
.byte 16,8
.byte 37,4
.byte 0,0
.byte 0
.dbfile D:\FZCCC\main.c
.dbsym e ConfigurationTX _ConfigurationTX A[27:27]kc
_ConfigurationRX::
.byte 'X,32
.byte 0,'B
.byte 20,156
.byte 2,128
.byte 'D,18
.byte 15,96
.byte 16,38
.byte 142,125
.byte 43,'p
.byte 1,0
.byte 16,8
.byte 37,4
.byte 0,0
.byte 0
.dbsym e ConfigurationRX _ConfigurationRX A[27:27]kc
.area text(rom, con, rel)
.dbfile D:\FZCCC\main.c
.dbfunc e delay _delay fV
; i -> R20,R21
; j -> R22,R23
; t -> R16,R17
.even
_delay::
xcall push_gset2
.dbline -1
.dbline 115
; #include "CC1000.h"
; #include "iom128v.h"
;
; #define flag 0
; #define MAX 3
; //flag 1 is TX,0 is RX ;MAX is long of receive data buf
; //=======================================================
; // CC1000的参数
; //=======================================================
; /*const unsigned char Configuration[] =
; {
; 0x58, // 0x01, FREQ_2A
; 0x20, // 0x02, FREQ_1A
; 0x00, // 0x03, FREQ_0A
; 0x58, //0x42, // 0x04, FREQ_2B
; 0x06, //0x15, // 0x05, FREQ_1B
; 0x25, //0x78, // 0x06, FREQ_0B
;
; 0x00, // 0x07, FSEP1
; 0xc8, // 0x08, FSEP0
; 0x63, //0x81, // 0x09, CURRENT
;
; 0x12, // 0x0A, FRONT_END
; 0xFF, // 0x0B, PA_POW
; 0x18, //0x48, // 0x0C, PLL
; 0x10, // 0x0D, LOCK
; 0x26, // 0x0E, CAL
; 0x8e, // 0x0F, MODEM2
; 0x6c, // 0x10, MODEM1
; 0x2B, //0x27, // 0x11, MODEM0
; 0x70, // 0x12, MATCH
; 0x01, // 0x13, FSCTRL
;
; 0x00, // 0x1C, PRESCALER
;
; 0x10, // 40h test6
; 0x08, // 41h test5
; 0x25, // 42h, TEST4
; 0x04, // 43h,test3
; 0x00, // 44h,test2
; 0x00, // 45h,test1
; 0x00, // 46h,test0
; };
; */
;
; const unsigned char ConfigurationTX[] =
; {
; 0x58, // 0x01, FREQ_2A
; 0x20, // 0x02, FREQ_1A
; 0x00, // 0x03, FREQ_0A
; 0x42, // 0x04, FREQ_2B
; 0x14, //0x15, // 0x05, FREQ_1B
; 0x9C, //0x78, // 0x06, FREQ_0B
;
; 0X02,//0x00, // 0x07, FSEP1
; 0X80,//0xc8, // 0x08, FSEP0
; 0x81, // 0x09, CURRENT
;
; 0X12,//0x10, // 0x0A, FRONT_END
; 0X0F,//0xFF, // 0x0B, PA_POW
; 0x48, // 0x0C, PLL
; 0x10, // 0x0D, LOCK
; 0x26, // 0x0E, CAL
; 0x8C, // 0x0F, MODEM2
; 0x7D, // 0x10, MODEM1 //Manchester
; 0x2B, // 0x11, MODEM0 //Manchester is 0x27 UART is 0x2B NRZ is 0x23
; 0x70, // 0x12, MATCH
; 0x01, // 0x13, FSCTRL
;
; 0x00, // 0x1C, PRESCALER
;
; 0x10, // 40h test6
; 0x08, // 41h test5
; 0x25, // 42h, TEST4
; 0x04, // 43h,test3
; 0x00, // 44h,test2
; 0x00, // 45h,test1
; 0x00, // 46h,test0
; };
; const unsigned char ConfigurationRX[] =
; {
; 0x58, // 0x01, FREQ_2A
; 0x20, // 0x02, FREQ_1A
; 0x00, // 0x03, FREQ_0A
; 0x42, // 0x04, FREQ_2B
; 0x14, //0x15, // 0x05, FREQ_1B
; 0x9C, //0x78, // 0x06, FREQ_0B
;
; 0X02,//0x00, // 0x07, FSEP1
; 0X80,//0xc8, // 0x08, FSEP0
; 0x44, // 0x09, CURRENT
;
; 0X12,//0x10, // 0x0A, FRONT_END
; 0X0F,//0xFF, // 0x0B, PA_POW
; 0x60, // 0x0C, PLL
; 0x10, // 0x0D, LOCK
; 0x26, // 0x0E, CAL
; 0x8E, // 0x0F, MODEM2
; 0x7D, // 0x10, MODEM1 //Manchester
; 0x2B, // 0x11, MODEM0 //Manchester is 0x27 UART is 0x2B NRZ is 0x23
; 0x70, // 0x12, MATCH
; 0x01, // 0x13, FSCTRL
;
; 0x00, // 0x1C, PRESCALER
;
; 0x10, // 40h test6
; 0x08, // 41h test5
; 0x25, // 42h, TEST4
; 0x04, // 43h,test3
; 0x00, // 44h,test2
; 0x00, // 45h,test1
; 0x00, // 46h,test0
; };
; void delay(int t)
; {
.dbline 117
; int i,j;
; for(i = 0;i < t;i++)
clr R20
clr R21
xjmp L5
L2:
.dbline 118
clr R22
clr R23
xjmp L9
L6:
.dbline 118
L7:
.dbline 118
subi R22,255 ; offset = 1
sbci R23,255
L9:
.dbline 118
cp R22,R16
cpc R23,R17
brlt L6
L3:
.dbline 117
subi R20,255 ; offset = 1
sbci R21,255
L5:
.dbline 117
cp R20,R16
cpc R21,R17
brlt L2
.dbline -2
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 I
.dbsym r j 22 I
.dbsym r t 16 I
.dbend
.dbfunc e C1000_TX_MODE _C1000_TX_MODE fV
; MainValue -> R20
.even
_C1000_TX_MODE::
xcall push_gset1
.dbline -1
.dbline 123
; for(j = 0;j < t;j++);
; }
;
;
; void C1000_TX_MODE(void)
; {
.dbline 131
; /*WriteToCC1000Register(CC1000_MAIN,0xe1); // set to TX mode
; //WriteToCC1000Register(CC1000_PA_POW,0xFF); // no output power needed
; WriteToCC1000Register(CC1000_CURRENT,0x60); // set TX current level
; WriteToCC1000Register(CC1000_PLL,0x18);
; WriteToCC1000Register(CC1000_PA_POW,0xFF);
; */
; char MainValue;
; MainValue=ReadFromCC1000Register(CC1000_MAIN);
clr R16
xcall _ReadFromCC1000Register
mov R20,R16
.dbline 132
; WriteToCC1000Register(CC1000_MAIN,(MainValue & 0xE1) | 0xC0); //RXTX=1,F_REG=1,TX_PD=0,FS_PD=0
mov R18,R20
andi R18,225
ori R18,192
clr R16
xcall _WriteToCC1000Register
.dbline 133
; WriteToCC1000Register(CC1000_PA_POW,0x00);
clr R18
ldi R16,11
xcall _WriteToCC1000Register
.dbline 134
; WriteToCC1000Register(CC1000_CURRENT, 0x81);//68
ldi R18,129
ldi R16,9
xcall _WriteToCC1000Register
.dbline 135
; WriteToCC1000Register(CC1000_PLL, 0x48);
ldi R18,72
ldi R16,12
xcall _WriteToCC1000Register
.dbline 137
;
; delay(12);
ldi R16,12
ldi R17,0
xcall _delay
.dbline 138
; WriteToCC1000Register(CC1000_PA_POW,0x08);
ldi R18,8
ldi R16,11
xcall _WriteToCC1000Register
.dbline 139
; delay(2);
ldi R16,2
ldi R17,0
xcall _delay
.dbline -2
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r MainValue 20 c
.dbend
.dbfunc e C1000_RX_MODE _C1000_RX_MODE fV
; MainValue -> R20
.even
_C1000_RX_MODE::
xcall push_gset1
.dbline -1
.dbline 145
;
; }
;
;
; void C1000_RX_MODE(void)
; {
.dbline 153
; /*WriteToCC1000Register(CC1000_MAIN,0x17); // set to RX mode//原先是x11
; //WriteToCC1000Register(CC1000_PA_POW,0xFF); // no output power needed
; WriteToCC1000Register(CC1000_CURRENT,0x70); // set TX current level
; WriteToCC1000Register(CC1000_PLL,0x18);
; delay(12);
; */
; char MainValue;
; MainValue=ReadFromCC1000Register(CC1000_MAIN);
clr R16
xcall _ReadFromCC1000Register
mov R20,R16
.dbline 154
; WriteToCC1000Register(CC1000_MAIN,(MainValue & 0x11) ); //RXTX=0,F_REG=0,RX_PD=0,FS_PD=0
mov R18,R20
andi R18,17
clr R16
xcall _WriteToCC1000Register
.dbline 155
; WriteToCC1000Register(CC1000_PA_POW,0x00);
clr R18
ldi R16,11
xcall _WriteToCC1000Register
.dbline 156
; WriteToCC1000Register(CC1000_CURRENT, 0x44);//0x44
ldi R18,68
ldi R16,9
xcall _WriteToCC1000Register
.dbline 157
; WriteToCC1000Register(CC1000_PLL, 0x60);
ldi R18,96
ldi R16,12
xcall _WriteToCC1000Register
.dbline 159
;
; delay(12);
ldi R16,12
ldi R17,0
xcall _delay
.dbline -2
L11:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r MainValue 20 c
.dbend
.dbfunc e init_usart _init_usart fV
.even
_init_usart::
.dbline -1
.dbline 164
;
; }
;
; void init_usart(void)
; {
.dbline 166
;
; UCSR0B = 0x00;
clr R2
out 0xa,R2
.dbline 167
; UCSR0A = 0x00;
out 0xb,R2
.dbline 168
; UCSR0C = 0x06;
ldi R24,6
sts 149,R24
.dbline 169
; UBRR0L = 0x67; //BOUDRATE 2400
ldi R24,103
out 0x9,R24
.dbline 170
; UBRR0H = 0x00;
sts 144,R2
.dbline 171
; UCSR0B = 0x18;
ldi R24,24
out 0xa,R24
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Init _Init fV
; MainValue -> R20
; addr -> R22
.even
_Init::
xcall push_gset2
.dbline -1
.dbline 175
; }
;
; void Init()
; {
.dbline 180
; char MainValue;
; char addr;
;
;
; WriteToCC1000Register(CC1000_MAIN,0x3F); // Put CC1000 into power-down
ldi R18,63
clr R16
xcall _WriteToCC1000Register
.dbline 181
; WriteToCC1000Register(CC1000_PA_POW,0x00); // Turn off PA to minimise current draw
clr R18
ldi R16,11
xcall _WriteToCC1000Register
.dbline 183
;
; MainValue=ReadFromCC1000Register(CC1000_MAIN);
clr R16
xcall _ReadFromCC1000Register
mov R20,R16
.dbline 184
; WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFE); // Reset CC1000 原先是WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFA);by yu
mov R18,R20
andi R18,254
clr R16
xcall _WriteToCC1000Register
.dbline 185
; WriteToCC1000Register(CC1000_MAIN,MainValue | 0x01);
mov R18,R20
ori R18,1
clr R16
xcall _WriteToCC1000Register
.dbline 189
;
;
;
; WriteToCC1000Register(CC1000_MAIN,0x3A);
ldi R18,58
clr R16
xcall _WriteToCC1000Register
.dbline 191
;
; delay(38);
ldi R16,38
ldi R17,0
xcall _delay
.dbline 193
;
; for(addr = 1; addr <= 0x1c; addr ++)
ldi R22,1
xjmp L17
L14:
.dbline 194
ldi R24,<_ConfigurationRX-1
ldi R25,>_ConfigurationRX-1
mov R30,R22
clr R31
add R30,R24
adc R31,R25
lpm R18,Z
mov R16,R22
xcall _WriteToCC1000Register
L15:
.dbline 193
inc R22
L17:
.dbline 193
ldi R24,28
cp R24,R22
brsh L14
.dbline 197
; WriteToCC1000Register(addr, ConfigurationRX[addr - 1]);
; //WriteToCC1000Register(addr, ConfigurationRX[addr - 1]);
; /////////////////////////////////////////by yu //////////////////////////////////////////////
; WriteToCC1000Register(0x1c,0x00); //仿造Pic 里的void ConfigureCC1000()
clr R18
ldi R16,28
xcall _WriteToCC1000Register
.dbline 199
; ///////////////////////////////////////////////////////////////////////////////////////
; for(addr = 0x40; addr <= 0x46; addr ++)
ldi R22,64
xjmp L22
L19:
.dbline 200
ldi R24,<_ConfigurationTX+20-64
ldi R25,>_ConfigurationTX+20-64
mov R30,R22
clr R31
add R30,R24
adc R31,R25
lpm R18,Z
mov R16,R22
xcall _WriteToCC1000Register
L20:
.dbline 199
inc R22
L22:
.dbline 199
ldi R24,70
cp R24,R22
brsh L19
.dbline 274
; WriteToCC1000Register(addr, ConfigurationTX[addr - 0x40 + 0x14]);
; //WriteToCC1000Register(addr, ConfigurationRX[addr - 0x40 + 0x14]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -