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

📄 cc1100_test.lst

📁 chipcom公司CC1100无线模块底层驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    00C1 EFCF      LDI	R28,0xFF
    00C2 E0D4      LDI	R29,4
    00C3 BFCD      OUT	0x3D,R28
    00C4 BFDE      OUT	0x3E,R29
    00C5 51C8      SUBI	R28,0x18
    00C6 40D0      SBCI	R29,0
    00C7 EA0A      LDI	R16,0xAA
    00C8 8308      STD	Y+0,R16
    00C9 2400      CLR	R0
    00CA EEE7      LDI	R30,0xE7
    00CB E0F1      LDI	R31,1
    00CC E012      LDI	R17,2
    00CD 3AE7      CPI	R30,0xA7
    00CE 07F1      CPC	R31,R17
    00CF F011      BEQ	0x00D2
    00D0 9201      ST	R0,Z+
    00D1 CFFB      RJMP	0x00CD
    00D2 8300      STD	Z+0,R16
    00D3 E9EB      LDI	R30,0x9B
    00D4 E0F0      LDI	R31,0
    00D5 E0A0      LDI	R26,0
    00D6 E0B1      LDI	R27,1
    00D7 E011      LDI	R17,1
    00D8 38E2      CPI	R30,0x82
    00D9 07F1      CPC	R31,R17
    00DA F021      BEQ	0x00DF
    00DB 95C8      LPM
    00DC 9631      ADIW	R30,1
    00DD 920D      ST	R0,X+
    00DE CFF9      RJMP	0x00D8
    00DF D09C      RCALL	_main
_exit:
    00E0 CFFF      RJMP	_exit
_CC1100Rst:
  i                    --> R20
    00E1 D74D      RCALL	push_gset1
FILE: D:\WIRELE~1\CC1020~1\SoftWare\SoftWare\CC1100.c
(0001) /****************************************************/
(0002) /* Application note                                 */
(0003) /* Reference design : CC1100 RF Test Board          */
(0004) /* File:        CC1100.c                            */
(0005) /* Revision:  1.0                                   */
(0006) /* Description:                                     */
(0007) /* Microcontroller:ATmega48/48V                     */
(0008) /* Author:  Zcg, Field Applications Engineer, SunRay*/
(0009) /****************************************************/
(0010) 
(0011) #include "iom88v.h"
(0012) #include "macros.h"
(0013) #include "main.h"
(0014) #include "CC1100.h"
(0015) 
(0016) /* 
(0017) ************************************************************
(0018) *Description:复位CC1100
(0019) *Arguments  :none
(0020) *Returns    :none
(0021) *Notes      :
(0022) ************************************************************
(0023) */
(0024) void CC1100Rst (void)
(0025) {
(0026)     INT8U i;
(0027) 
(0028)     SCLK_H;
    00E2 9A45      SBI	0x08,5
(0029) 	SI_L;
    00E3 9844      CBI	0x08,4
(0030) 	CS_L;
    00E4 9843      CBI	0x08,3
(0031) 	CS_H;
    00E5 9A43      SBI	0x08,3
(0032) 	for (i = 0; i < 100; i++);  //delay 50.63us
    00E6 2744      CLR	R20
    00E7 C001      RJMP	0x00E9
    00E8 9543      INC	R20
    00E9 3644      CPI	R20,0x64
    00EA F3E8      BCS	0x00E8
(0033) 	SCLK_L;
    00EB 9845      CBI	0x08,5
(0034) 	CS_L;
    00EC 9843      CBI	0x08,3
(0035) 	while (SO_STATE);
    00ED 9932      SBIC	0x06,2
    00EE CFFE      RJMP	0x00ED
(0036) 
(0037) 	ShiftOutByte(CC1100_SRES);  //复位命令
    00EF E300      LDI	R16,0x30
    00F0 D07A      RCALL	_ShiftOutByte
(0038) 
(0039) 	while (SO_STATE);
    00F1 9932      SBIC	0x06,2
    00F2 CFFE      RJMP	0x00F1
(0040) 	CS_H;
    00F3 9A43      SBI	0x08,3
    00F4 D73D      RCALL	pop_gset1
    00F5 9508      RET
_CC1100Strobe:
  strobe               --> R20
    00F6 D738      RCALL	push_gset1
    00F7 2F40      MOV	R20,R16
(0041) }
(0042) 
(0043) /*
(0044) ************************************************************
(0045) *Description:写CC1100控制命令
(0046) *Arguments  :strobe:控制命令
(0047) *Returns    :none
(0048) *Notes      :
(0049) ************************************************************
(0050) */
(0051) void CC1100Strobe (INT8U strobe)
(0052) {
(0053)     SCLK_L;                //写控制命令
    00F8 9845      CBI	0x08,5
(0054)     //CS_L;
(0055) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    00F9 9A43      SBI	0x08,3
(0056) 	CS_L;
    00FA 9843      CBI	0x08,3
(0057) 	ShiftOutByte(strobe);
    00FB 2F04      MOV	R16,R20
    00FC D06E      RCALL	_ShiftOutByte
(0058) 	//CS_H;
(0059) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    00FD 9A43      SBI	0x08,3
(0060) 	CS_L;
    00FE 9843      CBI	0x08,3
    00FF D732      RCALL	pop_gset1
    0100 9508      RET
_CC1100ReadReg:
  value                --> R20
  addr                 --> R20
    0101 D72D      RCALL	push_gset1
    0102 2F40      MOV	R20,R16
(0061) }
(0062) 
(0063) /*
(0064) ************************************************************
(0065) *Description:读CC1100单个寄存器
(0066) *Arguments  :addr:地址
(0067) *Returns    :数据
(0068) *Notes      :
(0069) ************************************************************
(0070) */
(0071) INT8U CC1100ReadReg (INT8U addr)
(0072) {
(0073)     INT8U value;
(0074) 
(0075) 	SCLK_L;                //写地址
    0103 9845      CBI	0x08,5
(0076) 	//CS_L;
(0077) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    0104 9A43      SBI	0x08,3
(0078) 	CS_L;
    0105 9843      CBI	0x08,3
(0079) 	addr |= 0x80;          //读寄存器地址
    0106 6840      ORI	R20,0x80
(0080) 	ShiftOutByte(addr);
    0107 2F04      MOV	R16,R20
    0108 D062      RCALL	_ShiftOutByte
(0081) 
(0082) 	value = ShiftInByte(); //读数据
    0109 D054      RCALL	_ShiftInByte
    010A 2F40      MOV	R20,R16
(0083) 	//CS_H;
(0084) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    010B 9A43      SBI	0x08,3
(0085) 	CS_L;
    010C 9843      CBI	0x08,3
(0086) 
(0087) 	return value;
    010D D724      RCALL	pop_gset1
    010E 9508      RET
_CC1100WriteReg:
  value                --> R20
  addr                 --> R22
    010F D71D      RCALL	push_gset2
    0110 2F42      MOV	R20,R18
    0111 2F60      MOV	R22,R16
(0088) }
(0089) 
(0090) /*
(0091) ************************************************************
(0092) *Description:写CC1100单个寄存器
(0093) *Arguments  :addr:地址; value:数据
(0094) *Returns    :none
(0095) *Notes      :
(0096) ************************************************************
(0097) */
(0098) void CC1100WriteReg (INT8U addr, INT8U value)
(0099) {
(0100)     SCLK_L;                //写地址
    0112 9845      CBI	0x08,5
(0101) 	//CS_L;
(0102) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    0113 9A43      SBI	0x08,3
(0103) 	CS_L;
    0114 9843      CBI	0x08,3
(0104) 	ShiftOutByte(addr);
    0115 2F06      MOV	R16,R22
    0116 D054      RCALL	_ShiftOutByte
(0105) 
(0106) 	ShiftOutByte(value);   //写数据
    0117 2F04      MOV	R16,R20
    0118 D052      RCALL	_ShiftOutByte
(0107) 	//CS_H;
(0108) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    0119 9A43      SBI	0x08,3
(0109) 	CS_L;
    011A 9843      CBI	0x08,3
    011B D703      RCALL	pop_gset2
    011C 9508      RET
_CC1100ReadStatus:
  value                --> R20
  addr                 --> R20
    011D D711      RCALL	push_gset1
    011E 2F40      MOV	R20,R16
(0110) }
(0111) 
(0112) 
(0113) /*
(0114) ************************************************************
(0115) *Description:读CC1100状态寄存器
(0116) *Arguments  :addr:地址
(0117) *Returns    :状态值
(0118) *Notes      :
(0119) ************************************************************
(0120) */
(0121) INT8U CC1100ReadStatus (INT8U addr)
(0122) {
(0123)     INT8U value;
(0124) 
(0125)     SCLK_L;                //写地址
    011F 9845      CBI	0x08,5
(0126) 	//CS_L;
(0127) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    0120 9A43      SBI	0x08,3
(0128) 	CS_L;
    0121 9843      CBI	0x08,3
(0129) 	addr |= 0xC0;          //读状态寄存器地址
    0122 6C40      ORI	R20,0xC0
(0130) 	ShiftOutByte(addr);
    0123 2F04      MOV	R16,R20
    0124 D046      RCALL	_ShiftOutByte
(0131) 
(0132) 	value = ShiftInByte(); //读状态
    0125 D038      RCALL	_ShiftInByte
    0126 2F40      MOV	R20,R16
(0133) 	//CS_H;
(0134) 	CS_H;                  //3V与5V系统相连,保证平时为低电平
    0127 9A43      SBI	0x08,3
(0135) 	CS_L;
    0128 9843      CBI	0x08,3
(0136) 
(0137) 	return value;
    0129 D708      RCALL	pop_gset1
    012A 9508      RET
_CC1100ReadBurstReg:
  i                    --> R20
  cnt                  --> R22
  buf                  --> R10
  addr                 --> R20
    012B D6FF      RCALL	push_gset3
    012C 0159      MOVW	R10,R18
    012D 2F40      MOV	R20,R16
    012E 816E      LDD	R22,Y+6
(0138) }
(0139) 
(0140) 
(0141) /*
(0142) ************************************************************
(0143) *Description:连续读CC1100状态寄存器
(0144) *Arguments  :addr:地址; *buf:读取数据存放寄存器; cnt:所要读取字节个数
(0145) *Returns    :none
(0146) *Notes      :
(0147) ************************************************************
(0148) */
(0149) void CC1100ReadBurstReg (INT8U addr, INT8U *buf, INT8U cnt)
(0150) {
(0151)     INT8U i;
(0152) 
(0153)     SCLK_L;                   //写地址
    012F 9845      CBI	0x08,5
(0154) 	//CS_L;
(0155) 	CS_H;                     //3V与5V系统相连,保证平时为低电平
    0130 9A43      SBI	0x08,3
(0156) 	CS_L;
    0131 9843      CBI	0x08,3
(0157) 	addr |= 0xC0;             //连续读寄存器地址
    0132 6C40      ORI	R20,0xC0
(0158) 	ShiftOutByte(addr);
    0133 2F04      MOV	R16,R20
    0134 D036      RCALL	_ShiftOutByte
(0159) 
(0160) 	for (i = 0; i < cnt; i++) //连续读数据
    0135 2744      CLR	R20
    0136 C007      RJMP	0x013E
(0161) 	{
(0162) 		*(buf + i) = ShiftInByte();
    0137 D026      RCALL	_ShiftInByte
    0138 2FE4      MOV	R30,R20
    0139 27FF      CLR	R31
    013A 0DEA      ADD	R30,R10
    013B 1DFB      ADC	R31,R11
    013C 8300      STD	Z+0,R16
    013D 9543      INC	R20
    013E 1746      CP	R20,R22
    013F F3B8      BCS	0x0137
(0163) 	}
(0164) 	//CS_H;
(0165) 	CS_H;                     //3V与5V系统相连,保证平时为低电平
    0140 9A43      SBI	0x08,3
(0166) 	CS_L;
    0141 9843      CBI	0x08,3
    0142 D6DE      RCALL	pop_gset3
    0143 9508      RET
_CC1100WriteBurstReg:
  value                --> R20
  i                    --> R22
  cnt                  --> R10
  buf                  --> R12
  addr                 --> R20
    0144 D6E4      RCALL	push_gset4
    0145 0169      MOVW	R12,R18
    0146 2F40      MOV	R20,R16
    0147 84A8      LDD	R10,Y+8
(0167) }
(0168) 
(0169) 
(0170) /*
(0171) ************************************************************
(0172) *Description:连续写CC1100状态寄存器
(0173) *Arguments  :addr:地址; *buf:写数据寄存器; cnt:所要写字节个数
(0174) *Returns    :none
(0175) *Notes      :
(0176) ************************************************************
(0177) */
(0178) void CC1100WriteBurstReg (INT8U addr, INT8U *buf, INT8U cnt)
(0179) {
(0180)     INT8U i;
(0181) 	INT8U value;
(0182) 
(0183)     SCLK_L;                   //写地址
    0148 9845      CBI	0x08,5
(0184) 	//CS_L;
(0185) 	CS_H;                     //3V与5V系统相连,保证平时为低电平
    0149 9A43      SBI	0x08,3
(0186) 	CS_L;
    014A 9843      CBI	0x08,3
(0187) 	addr |= 0x40;             //连续写寄存器地址
    014B 6440      ORI	R20,0x40
(0188) 	ShiftOutByte(addr);
    014C 2F04      MOV	R16,R20
    014D D01D      RCALL	_ShiftOutByte
(0189) 
(0190) 	for (i = 0; i < cnt; i++) //连续写数据
    014E 2766      CLR	R22
    014F C008      RJMP	0x0158
(0191) 	{
(0192) 	    value = *(buf + i);
    0150 2FE6      MOV	R30,R22
    0151 27FF      CLR	R31
    0152 0DEC      ADD	R30,R12
    0153 1DFD      ADC	R31,R13
    0154 8140      LDD	R20,Z+0
(0193) 		ShiftOutByte(value);
    0155 2F04      MOV	R16,R20
    0156 D014      RCALL	_ShiftOutByte
    0157 9563      INC	R22
    0158 156A      CP	R22,R10
    0159 F3B0      BCS	0x0150
(0194) 	}
(0195) 	//CS_H;
(0196) 	CS_H;                     //3V与5V系统相连,保证平时为低电平
    015A 9A43      SBI	0x08,3
(0197) 	CS_L;
    015B 9843      CBI	0x08,3
    015C D6C6      RCALL	pop_gset4
    015D 9508      RET
(0198) }
(0199) 
(0200) 
(0201) /*
(0202) ************************************************************
(0203) *Description:利用SPI从CC1100读一个字节
(0204) *Arguments  :none
(0205) *Returns    :返回所读字节
(0206) *Notes      :
(0207) ************************************************************
(0208) */
(0209) INT8U ShiftInByte (void)
(0210) {

⌨️ 快捷键说明

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