⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1100_test.lst

📁 chipcom公司CC1100无线模块底层驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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位数据
    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写一个字节
(0232) *Arguments  :value:所写字节
(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位数据
    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系统设为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;    //串口接收完一包数据,准备射频发送
    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; //射频接收完一包数据,准备处理
    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);//应答返回
    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();//发送串口
    01EB D53E      RCALL	_Uart_SendPacket
(0069) 			}
(0070) 		}
(0071) 
(0072) 	    if (CC1100IntLFlg == TRUE)//CC1100接收、发送中断
    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+

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -