?? cc1100_test.lst
字號:
(0211) INT8U i;
(0212) INT8U value = 0;
_ShiftInByte:
value --> R16
i --> R18
015E 2700 CLR R16
(0213)
(0214) for (i = 0; i < 8; i++) //從SO移入8位數(shù)據(jù)
015F 2722 CLR R18
0160 C007 RJMP 0x0168
(0215) {
(0216) SCLK_H;
0161 9A45 SBI 0x08,5
(0217) value <<= 1;
0162 0F00 LSL R16
(0218) if(SO_STATE)
0163 9B32 SBIS 0x06,2
0164 C001 RJMP 0x0166
(0219) {
(0220) value |= 0x01;
0165 6001 ORI R16,1
(0221) }
(0222) SCLK_L;
0166 9845 CBI 0x08,5
0167 9523 INC R18
0168 3028 CPI R18,0x8
0169 F3B8 BCS 0x0161
(0223) }
(0224)
(0225) return value;
016A 9508 RET
_ShiftOutByte:
i --> R20
value --> R16
016B D6C3 RCALL push_gset1
(0226) }
(0227)
(0228)
(0229) /*
(0230) ************************************************************
(0231) *Description:利用SPI向CC1100寫一個字節(jié)
(0232) *Arguments :value:所寫字節(jié)
(0233) *Returns :none
(0234) *Notes :
(0235) ************************************************************
(0236) */
(0237) void ShiftOutByte (INT8U value)
(0238) {
(0239) INT8U i;
(0240)
(0241) for (i = 0; i < 8; i++) //向SI移出8位數(shù)據(jù)
016C 2744 CLR R20
016D C009 RJMP 0x0177
(0242) {
(0243) if(value & 0x80)
016E FF07 SBRS R16,7
016F C002 RJMP 0x0172
(0244) {
(0245) SI_H;
0170 9A44 SBI 0x08,4
(0246) }
0171 C001 RJMP 0x0173
(0247) else
(0248) {
(0249) SI_L;
0172 9844 CBI 0x08,4
(0250) }
(0251) SCLK_H;
0173 9A45 SBI 0x08,5
(0252) value <<= 1;
0174 0F00 LSL R16
(0253) SCLK_L;
0175 9845 CBI 0x08,5
0176 9543 INC R20
0177 3048 CPI R20,0x8
0178 F3A8 BCS 0x016E
(0254) }
(0255)
(0256) SI_L; //5V至3V系統(tǒng)設(shè)為0V
0179 9844 CBI 0x08,4
017A D6B7 RCALL pop_gset1
017B 9508 RET
FILE: D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\main.c
(0001) /****************************************************/
(0002) /* Application note */
(0003) /* Reference design : CC1100 RF Test Board */
(0004) /* File: Main.c */
(0005) /* Revision: 1.0 */
(0006) /* Description: */
(0007) /* Microcontroller:ATmega48/48V */
(0008) /* Author: Zcg, Field Applications Engineer, SunRay*/
(0009) /****************************************************/
(0010) #include "iom88v.h"
(0011) #include "macros.h"
(0012) #include "main.h"
(0013) #include "CC1100.h"
(0014) #include "board.h"
(0015) #include "simpleio.h"
(0016)
(0017) void main (void)
(0018) {
(0019) INT8U i;
(0020)
(0021) InitSys(); //初始化變量、寄存器等
_main:
i --> R20
017C D5F1 RCALL _InitSys
017D C0AF RJMP 0x022D
(0022)
(0023) while (1)
(0024) {
(0025) if ((RFSendFlg == TRUE) && (RFState == CC1100_RX_STATE))//串口接收到
017E 918001F0 LDS R24,RFSendFlg
0180 3081 CPI R24,1
0181 F479 BNE 0x0191
0182 902001EE LDS R2,RFState
0184 2022 TST R2
0185 F459 BNE 0x0191
(0026) {
(0027) RFSendFlg = FALSE; //串口接收完一包數(shù)據(jù),準(zhǔn)備射頻發(fā)送
0186 2422 CLR R2
0187 922001F0 STS RFSendFlg,R2
(0028) RF_SendPacket(UartReceive_Buf,RFSendCnt);
0189 912001F3 LDS R18,RFSendCnt
018B E304 LDI R16,0x34
018C E012 LDI R17,2
018D D57D RCALL _RF_SendPacket
(0029) RFSendCnt = 0;
018E 2422 CLR R2
018F 922001F3 STS RFSendCnt,R2
(0030) }
(0031)
(0032) if ((RFReceiveFlg == TRUE) && ((UCSR0B & (BIT(UDRIE0))) == 0))
0191 918001EF LDS R24,RFReceiveFlg
0193 3081 CPI R24,1
0194 F009 BEQ 0x0196
0195 C056 RJMP 0x01EC
0196 902000C1 LDS R2,0xC1
0198 FC25 SBRC R2,5
0199 C052 RJMP 0x01EC
(0033) {
(0034) RFReceiveFlg = FALSE; //射頻接收完一包數(shù)據(jù),準(zhǔn)備處理
019A 2422 CLR R2
019B 922001EF STS RFReceiveFlg,R2
(0035) RFReceiveCnt = 0;
019D 922001F2 STS RFReceiveCnt,R2
(0036)
(0037) Beep_Flag=TRUE;
019F E081 LDI R24,1
01A0 938001EB STS Beep_Flag,R24
(0038) BEEP_ON();
01A2 9A5D SBI 0x0B,5
(0039) printf("RF Recved...");
01A3 E20A LDI R16,0x2A
01A4 E011 LDI R17,1
01A5 D2D9 RCALL _printf
(0040)
(0041) if( RFReceive_Buf[0]=='S'&&
01A6 918001F4 LDS R24,RFReceive_Buf
01A8 3583 CPI R24,0x53
01A9 F009 BEQ 0x01AB
01AA C040 RJMP 0x01EB
01AB 918001F5 LDS R24,RFReceive_Buf+1
01AD 3685 CPI R24,0x65
01AE F009 BEQ 0x01B0
01AF C03B RJMP 0x01EB
01B0 918001F6 LDS R24,RFReceive_Buf+2
01B2 368E CPI R24,0x6E
01B3 F009 BEQ 0x01B5
01B4 C036 RJMP 0x01EB
01B5 918001F7 LDS R24,RFReceive_Buf+3
01B7 3684 CPI R24,0x64
01B8 F591 BNE 0x01EB
(0042) RFReceive_Buf[1]=='e'&&
(0043) RFReceive_Buf[2]=='n'&&
(0044) RFReceive_Buf[3]=='d' )
(0045) {
(0046) DIS_RX(); //禁止串口接收
01B9 918000C1 LDS R24,0xC1
01BB 7E8F ANDI R24,0xEF
01BC 938000C1 STS 0xC1,R24
(0047) DIS_RX_INT(); //禁止串口接收中斷
01BE 918000C1 LDS R24,0xC1
01C0 778F ANDI R24,0x7F
01C1 938000C1 STS 0xC1,R24
(0048)
(0049) Test_RFTx_Buf[0]='R';
01C3 E582 LDI R24,0x52
01C4 93800274 STS Test_RFTx_Buf,R24
(0050) Test_RFTx_Buf[1]='e';
01C6 E685 LDI R24,0x65
01C7 93800275 STS Test_RFTx_Buf+1,R24
(0051) Test_RFTx_Buf[2]='c';
01C9 E683 LDI R24,0x63
01CA 93800276 STS Test_RFTx_Buf+2,R24
(0052) Test_RFTx_Buf[3]='v';
01CC E786 LDI R24,0x76
01CD 93800277 STS Test_RFTx_Buf+3,R24
(0053)
(0054) for(i=0;i<MAX_DATA_TEST-4-1;i++)
01CF 2744 CLR R20
01D0 C00A RJMP 0x01DB
(0055) {
(0056) Test_RFTx_Buf[i+4]='0'+i;
01D1 E788 LDI R24,0x78
01D2 E092 LDI R25,2
01D3 2FE4 MOV R30,R20
01D4 27FF CLR R31
01D5 0FE8 ADD R30,R24
01D6 1FF9 ADC R31,R25
01D7 2F84 MOV R24,R20
01D8 5D80 SUBI R24,0xD0
01D9 8380 STD Z+0,R24
01DA 9543 INC R20
01DB 324B CPI R20,0x2B
01DC F3A0 BCS 0x01D1
(0057) }
(0058) Test_RFTx_Buf[MAX_DATA_TEST-1]='\n';//
01DD E08A LDI R24,0xA
01DE 938002A3 STS 0x2A3,R24
(0059)
(0060) #ifdef DEBUG
(0061) printf("Test call\n");
01E0 E10F LDI R16,0x1F
01E1 E011 LDI R17,1
01E2 D29C RCALL _printf
(0062) printf("Test answer!\n");
01E3 E101 LDI R16,0x11
01E4 E011 LDI R17,1
01E5 D299 RCALL _printf
(0063) #endif
(0064) RF_SendPacket(Test_RFTx_Buf, MAX_DATA_TEST);//應(yīng)答返回
01E6 E320 LDI R18,0x30
01E7 E704 LDI R16,0x74
01E8 E012 LDI R17,2
01E9 D521 RCALL _RF_SendPacket
(0065) }
01EA C001 RJMP 0x01EC
(0066) else
(0067) {
(0068) Uart_SendPacket();//發(fā)送串口
01EB D53E RCALL _Uart_SendPacket
(0069) }
(0070) }
(0071)
(0072) if (CC1100IntLFlg == TRUE)//CC1100接收、發(fā)送中斷
01EC 918002A4 LDS R24,CC1100IntLFlg
01EE 3081 CPI R24,1
01EF F421 BNE 0x01F4
(0073) {
(0074) CC1100IntLFlg = FALSE;
01F0 2422 CLR R2
01F1 922002A4 STS CC1100IntLFlg,R2
(0075) RF_ReceivePacket();
01F3 D4F0 RCALL _RF_ReceivePacket
(0076) }
(0077)
(0078) if((Key_Scan()==TRUE) && CC1100IntHFlg==FALSE && CC1100IntLFlg==FALSE)
01F4 D569 RCALL _Key_Scan
01F5 3001 CPI R16,1
01F6 F5B1 BNE 0x022D
01F7 902002A5 LDS R2,CC1100IntHFlg
01F9 2022 TST R2
01FA F591 BNE 0x022D
01FB 902002A4 LDS R2,CC1100IntLFlg
01FD 2022 TST R2
01FE F571 BNE 0x022D
(0079) {
(0080) DIS_RX(); //禁止串口接收
01FF 918000C1 LDS R24,0xC1
0201 7E8F ANDI R24,0xEF
0202 938000C1 STS 0xC1,R24
(0081) DIS_RX_INT(); //禁止串口接收中斷
0204 918000C1 LDS R24,0xC1
0206 778F ANDI R24,0x7F
0207 938000C1 STS 0xC1,R24
(0082)
(0083) Test_RFTx_Buf[0]='S';
0209 E583 LDI R24,0x53
020A 93800274 STS Test_RFTx_Buf,R24
(0084) Test_RFTx_Buf[1]='e';
020C E685 LDI R24,0x65
020D 93800275 STS Test_RFTx_Buf+1,R24
(0085) Test_RFTx_Buf[2]='n';
020F E68E LDI R24,0x6E
0210 93800276 STS Test_RFTx_Buf+2,R24
(0086) Test_RFTx_Buf[3]='d';
0212 E684 LDI R24,0x64
0213 93800277 STS Test_RFTx_Buf+3,R24
(0087)
(0088) for(i=0;i<MAX_DATA_TEST-4-1;i++)
0215 2744 CLR R20
0216 C00A RJMP 0x0221
(0089) {
(0090) Test_RFTx_Buf[i+4]='0'+i;
0217 E788 LDI R24,0x78
0218 E092 LDI R25,2
0219 2FE4 MOV R30,R20
021A 27FF CLR R31
021B 0FE8 ADD R30,R24
021C 1FF9 ADC R31,R25
021D 2F84 MOV R24,R20
021E 5D80 SUBI R24,0xD0
021F 8380 STD Z+0,R24
0220 9543 INC R20
0221 324B CPI R20,0x2B
0222 F3A0 BCS 0x0217
(0091) }
(0092) Test_RFTx_Buf[MAX_DATA_TEST-1]='\n';
0223 E08A LDI R24,0xA
0224 938002A3 STS 0x2A3,R24
(0093)
(0094) #ifdef DEBUG
(0095) printf("Key Send To RF!\n");
0226 E000 LDI R16,0
0227 E011 LDI R17,1
0228 D256 RCALL _printf
(0096) #endif
(0097) RF_SendPacket(Test_RFTx_Buf, MAX_DATA_TEST);
0229 E320 LDI R18,0x30
022A E704 LDI R16,0x74
022B E012 LDI R17,2
022C D4DE RCALL _RF_SendPacket
022D CF50 RJMP 0x017E
022E 9508 RET
FILE: D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\simpleio.c
(0001) /****************************************************/
(0002) /* Application note */
(0003) /* Reference design : CC1100 RF Test Board */
(0004) /* File: Simple.c */
(0005) /* Revision: 1.0 */
(0006) /* Description: */
(0007) /* Microcontroller:ATmega48/48V */
(0008) /* Author: Zcg, Field Applications Engineer, SunRay*/
(0009) /****************************************************/
(0010) #include <ctype.h>
(0011) #include "iom88v.h"
(0012) #include "macros.h"
(0013) #include "main.h"
(0014) #include "simpleio.h"
(0015)
(0016) void putchar(INT8U ch)
(0017) {
(0018) while ( !(UCSR0A & (1<<UDRE0)) )
_putchar:
ch --> R16
022F 902000C0 LDS R2,0xC0
0231 FE25 SBRS R2,5
0232 CFFC RJMP _putchar
(0019) ;
(0020) UDR0=ch;
0233 930000C6 STS 0xC6,R16
0235 9508 RET
(0021) }
(0022)
(0023) INT8U getchar(void)
(0024) {
(0025) INT8U temp;
(0026)
(0027) if ((UCSR0A & (1<<RXC0)))
_getchar:
temp --> R16
0236 902000C0 LDS R2,0xC0
0238 FE27 SBRS R2,7
0239 C003 RJMP 0x023D
(0028) {
(0029) temp=UDR0;
023A 910000C6 LDS R16,0xC6
(0030) return temp;
023C C001 RJMP 0x023E
(0031) }
(0032) else
(0033) {
(0034) return 0;
023D 2700 CLR R16
023E 9508 RET
_putstr:
str --> R20
023F D5EF RCALL push_gset1
0240 01A8 MOVW R20,R16
(0035) }
(0036) }
(0037)
(0038) /****************************************************************************/
(0039) /* This routine outputs a string */
(0040) /****************************************************************************/
(0041)
(0042) void putstr(INT8U *str)
(0043) {
0241 C004 RJMP 0x0246
(0044) while (*str!='\0')
(0045) {
(0046) putchar(*str++);
0242 01FA MOVW R30,R20
0243 9101 LD R16,Z+
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -