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

📄 cc1000.lst

📁 adhoc信息节点程序源代码(点对多点)——for atmega128
💻 LST
📖 第 1 页 / 共 5 页
字号:
   1               		.file	"cc1000.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  64               	.global	CC1000ControlM_FSepTbl
  65               		.data
  68               	CC1000ControlM_FSepTbl:
  69 0000 AA01      		.word	426
  70 0002 F101      		.word	497
  71 0004 3802      		.word	568
  72 0006 8002      		.word	640
  73 0008 C702      		.word	711
  74 000a 0E03      		.word	782
  75 000c 5503      		.word	853
  76 000e 9C03      		.word	924
  77 0010 E303      		.word	995
  78               	.global	CC1000ControlM_CorTbl
  81               	CC1000ControlM_CorTbl:
  82 0012 BD04      		.word	1213
  83 0014 8805      		.word	1416
  84 0016 5206      		.word	1618
  85 0018 1C07      		.word	1820
  86 001a E607      		.word	2022
  87 001c B008      		.word	2224
  88 001e 7B09      		.word	2427
  89 0020 450A      		.word	2629
  90 0022 0F0B      		.word	2831
  91               	.global	CC1000ControlM_FRefTbl
  94               	CC1000ControlM_FRefTbl:
  95 0024 0080 2500 		.long	2457600
  96 0028 9224 2000 		.long	2106514
  97 002c 0020 1C00 		.long	1843200
  98 0030 0000 1900 		.long	1638400
  99 0034 0080 1600 		.long	1474560
 100 0038 5D74 1400 		.long	1340509
 101 003c 00C0 1200 		.long	1228800
 102 0040 C54E 1100 		.long	1134277
 103 0044 4912 1000 		.long	1053257
 104               		.text
 106               	.global	CC1000ControlGetLOStatus
 108               	CC1000ControlGetLOStatus:
   1:cc1000.c      **** /*
   2:cc1000.c      **** ****************************************************************************                       
   3:cc1000.c      **** *                        
   4:cc1000.c      **** *              宁波中科集成电路设计中心  版权所有 Copyright 2005
   5:cc1000.c      **** *
   6:cc1000.c      **** *文件名:  cc1000.h
   7:cc1000.c      **** *程序员:
   8:cc1000.c      **** *主要内容:cc1000通信相关
   9:cc1000.c      **** *完成日期:2005.3.25
  10:cc1000.c      **** ****************************************************************************
  11:cc1000.c      **** */
  12:cc1000.c      **** 
  13:cc1000.c      **** #include "cc1000.h"
  14:cc1000.c      **** #include "fun.h"
  15:cc1000.c      **** #include "os.h"
  16:cc1000.c      **** 
  17:cc1000.c      **** 
  18:cc1000.c      **** 
  19:cc1000.c      **** static const prog_uchar CC1K_LPL_PreambleLength[7 * 2] = { 
  20:cc1000.c      **** 0, 28, 0, 94, 0, 250, 0x01, 0x73, 0x01, 0xEA, 0x04, 0xBC, 0x0A, 0x5E };
  21:cc1000.c      **** 
  22:cc1000.c      **** static const prog_uchar CC1K_LPL_ValidPrecursor[7] = { 5, 2, 2, 2, 2, 2, 2 };
  23:cc1000.c      **** 
  24:cc1000.c      **** static const prog_uchar CC1K_LPL_SleepTime[7 * 2] = { 
  25:cc1000.c      **** 0, 0, 0, 20, 0, 85, 0, 135, 0, 185, 0x01, 0xE5, 0x04, 0x3D };
  26:cc1000.c      **** 
  27:cc1000.c      **** static const prog_uchar CC1K_LPL_SleepPreamble[7] = { 0, 8, 8, 8, 8, 8, 8 };
  28:cc1000.c      **** 
  29:cc1000.c      **** static const prog_uchar CC1K_LPL_SquelchInit[7] = { 
  30:cc1000.c      **** 0xAE, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF };
  31:cc1000.c      **** 
  32:cc1000.c      **** 
  33:cc1000.c      **** uint32_t CC1000ControlM_gCurrentChannel;
  34:cc1000.c      **** uint8_t  CC1000ControlM_gCurrentParameters[31];
  35:cc1000.c      **** 
  36:cc1000.c      **** enum {
  37:cc1000.c      ****   CC1000ControlM_IF = 150000, 
  38:cc1000.c      ****   CC1000ControlM_FREQ_MIN = 4194304, 
  39:cc1000.c      ****   CC1000ControlM_FREQ_MAX = 16751615
  40:cc1000.c      **** };
  41:cc1000.c      **** 
  42:cc1000.c      **** const uint32_t CC1000ControlM_FRefTbl[9] = { 2457600, 
  43:cc1000.c      **** 2106514, 
  44:cc1000.c      **** 1843200, 
  45:cc1000.c      **** 1638400, 
  46:cc1000.c      **** 1474560, 
  47:cc1000.c      **** 1340509, 
  48:cc1000.c      **** 1228800, 
  49:cc1000.c      **** 1134277, 
  50:cc1000.c      **** 1053257 };
  51:cc1000.c      **** 
  52:cc1000.c      **** const uint16_t CC1000ControlM_CorTbl[9] = { 1213, 
  53:cc1000.c      **** 1416, 
  54:cc1000.c      **** 1618, 
  55:cc1000.c      **** 1820, 
  56:cc1000.c      **** 2022, 
  57:cc1000.c      **** 2224, 
  58:cc1000.c      **** 2427, 
  59:cc1000.c      **** 2629, 
  60:cc1000.c      **** 2831 };
  61:cc1000.c      **** 
  62:cc1000.c      **** const uint16_t CC1000ControlM_FSepTbl[9] = { 0x1AA, 
  63:cc1000.c      **** 0x1F1, 
  64:cc1000.c      **** 0x238, 
  65:cc1000.c      **** 0x280, 
  66:cc1000.c      **** 0x2C7, 
  67:cc1000.c      **** 0x30E, 
  68:cc1000.c      **** 0x355, 
  69:cc1000.c      **** 0x39C, 
  70:cc1000.c      **** 0x3E3 };
  71:cc1000.c      **** 
  72:cc1000.c      **** 
  73:cc1000.c      **** bool CC1000ControlGetLOStatus(void)							// 得到CC1000的LO状态
  74:cc1000.c      **** {
 110               	.LM1:
 111               	/* prologue: frame size=0 */
 112               	/* prologue end (size=0) */
  75:cc1000.c      **** 	return CC1000ControlM_gCurrentParameters[0x1e];
 114               	.LM2:
 115 0000 8091 0000 		lds r24,CC1000ControlM_gCurrentParameters+30
  76:cc1000.c      **** }
 117               	.LM3:
 118 0004 9927      		clr r25
 119               	/* epilogue: frame size=0 */
 120 0006 0895      		ret
 121               	/* epilogue end (size=1) */
 122               	/* function CC1000ControlGetLOStatus size 4 (3) */
 126               	.global	CC1000ControlComputeFreq
 128               	CC1000ControlComputeFreq:
  77:cc1000.c      **** 
  78:cc1000.c      **** result_t CC1000ControlSelectLock(uint8_t Value)				// 设置CC1000的PLL
  79:cc1000.c      **** {
  80:cc1000.c      **** 	CC1000ControlM_gCurrentParameters[0xd] = Value << 4;
  81:cc1000.c      **** 	return CC1000HPLWrite(0x0D, Value << 4);
  82:cc1000.c      **** }
  83:cc1000.c      **** 
  84:cc1000.c      **** result_t CC1000ControlChipconCal(void)
  85:cc1000.c      **** {
  86:cc1000.c      **** 	CC1000HPLWrite(0x0B, 0x00);
  87:cc1000.c      **** 	CC1000HPLWrite(0x42, 0x3f);
  88:cc1000.c      **** 	
  89:cc1000.c      **** 	CC1000HPLWrite(0x00, (
  90:cc1000.c      **** 		1 << 4) | (1 << 0));
  91:cc1000.c      **** 	
  92:cc1000.c      **** 	CC1000HPLWrite(0x0E, ((
  93:cc1000.c      **** 		1 << 7) | (
  94:cc1000.c      **** 		1 << 5)) | (6 << 0));
  95:cc1000.c      **** 	
  96:cc1000.c      **** 	while ((CC1000HPLRead(0x0E) & (1 << 3)) == 0) ;
  97:cc1000.c      **** 	
  98:cc1000.c      **** 	CC1000HPLWrite(0x0E, (
  99:cc1000.c      **** 		1 << 5) | (6 << 0));
 100:cc1000.c      **** 	
 101:cc1000.c      **** 	CC1000HPLWrite(0x00, (((
 102:cc1000.c      **** 		1 << 7) | (1 << 6)) | (1 << 5)) | (
 103:cc1000.c      **** 		1 << 0));
 104:cc1000.c      **** 	
 105:cc1000.c      **** 	CC1000HPLWrite(0x09, CC1000ControlM_gCurrentParameters[29]);
 106:cc1000.c      **** 	CC1000HPLWrite(0x0B, 0x00);
 107:cc1000.c      **** 	
 108:cc1000.c      **** 	CC1000HPLWrite(0x0E, ((
 109:cc1000.c      **** 		1 << 7) | (
 110:cc1000.c      **** 		1 << 5)) | (6 << 0));
 111:cc1000.c      **** 	
 112:cc1000.c      **** 	while ((CC1000HPLRead(0x0E) & (1 << 3)) == 0) ;
 113:cc1000.c      **** 	
 114:cc1000.c      **** 	CC1000HPLWrite(0x0E, (
 115:cc1000.c      **** 		1 << 5) | (6 << 0));
 116:cc1000.c      **** 	
 117:cc1000.c      **** 	return SUCCESS;
 118:cc1000.c      **** }
 119:cc1000.c      **** 
 120:cc1000.c      **** void CC1000ControlCC1000SetFreq(void)
 121:cc1000.c      **** {
 122:cc1000.c      **** 	uint8_t i;
 123:cc1000.c      **** 	
 124:cc1000.c      **** 	for (i = 1; i < 0x0d; i++) {
 125:cc1000.c      **** 		CC1000HPLWrite(i, CC1000ControlM_gCurrentParameters[i]);
 126:cc1000.c      ****     }
 127:cc1000.c      **** 	
 128:cc1000.c      **** 	
 129:cc1000.c      **** 	CC1000HPLWrite(0x12, CC1000ControlM_gCurrentParameters[0x12]);
 130:cc1000.c      **** 	
 131:cc1000.c      **** 	CC1000ControlChipconCal();
 132:cc1000.c      **** 	
 133:cc1000.c      **** 	return;
 134:cc1000.c      **** }
 135:cc1000.c      **** 
 136:cc1000.c      **** uint32_t CC1000ControlComputeFreq(uint32_t desiredFreq)
 137:cc1000.c      **** {
 130               	.LM4:
 131               	/* prologue: frame size=30 */
 132 0008 2F92      		push r2
 133 000a 3F92      		push r3
 134 000c 4F92      		push r4
 135 000e 5F92      		push r5
 136 0010 6F92      		push r6
 137 0012 7F92      		push r7
 138 0014 8F92      		push r8
 139 0016 9F92      		push r9
 140 0018 AF92      		push r10
 141 001a BF92      		push r11
 142 001c CF92      		push r12
 143 001e DF92      		push r13
 144 0020 EF92      		push r14
 145 0022 FF92      		push r15
 146 0024 0F93      		push r16
 147 0026 1F93      		push r17
 148 0028 CF93      		push r28
 149 002a DF93      		push r29
 150 002c CDB7      		in r28,__SP_L__
 151 002e DEB7      		in r29,__SP_H__
 152 0030 6E97      		sbiw r28,30
 153 0032 0FB6      		in __tmp_reg__,__SREG__
 154 0034 F894      		cli
 155 0036 DEBF      		out __SP_H__,r29
 156 0038 0FBE      		out __SREG__,__tmp_reg__
 157 003a CDBF      		out __SP_L__,r28
 158               	/* prologue end (size=26) */
 159 003c 6983      		std Y+1,r22
 160 003e 7A83      		std Y+2,r23
 161 0040 8B83      		std Y+3,r24
 162 0042 9C83      		std Y+4,r25
 138:cc1000.c      ****   uint32_t ActualChannel = 0;
 164               	.LM5:
 165 0044 1D82      		std Y+5,__zero_reg__
 166 0046 1E82      		std Y+6,__zero_reg__
 167 0048 1F82      		std Y+7,__zero_reg__
 168 004a 1886      		std Y+8,__zero_reg__
 139:cc1000.c      ****   uint32_t RXFreq = 0;
 170               	.LM6:
 171 004c 20E0      		ldi r18,lo8(0)
 172 004e 30E0      		ldi r19,hi8(0)
 173 0050 40E0      		ldi r20,hlo8(0)
 174 0052 50E0      		ldi r21,hhi8(0)
 175 0054 2987      		std Y+9,r18
 176 0056 3A87      		std Y+10,r19
 177 0058 4B87      		std Y+11,r20
 178 005a 5C87      		std Y+12,r21
 140:cc1000.c      ****   uint32_t TXFreq = 0;
 180               	.LM7:
 181 005c 2D87      		std Y+13,r18
 182 005e 3E87      		std Y+14,r19
 183 0060 4F87      		std Y+15,r20
 184 0062 588B      		std Y+16,r21
 141:cc1000.c      ****   int32_t Offset = 0x7fffffff;
 186               	.LM8:
 187 0064 2FEF      		ldi r18,lo8(2147483647)
 188 0066 3FEF      		ldi r19,hi8(2147483647)
 189 0068 4FEF      		ldi r20,hlo8(2147483647)
 190 006a 5FE7      		ldi r21,hhi8(2147483647)
 191 006c 298B      		std Y+17,r18
 192 006e 3A8B      		std Y+18,r19
 193 0070 4B8B      		std Y+19,r20
 194 0072 5C8B      		std Y+20,r21
 142:cc1000.c      ****   uint16_t FSep = 0;
 196               	.LM9:
 197 0074 1D8E      		std Y+29,__zero_reg__
 198 0076 1E8E      		std Y+30,__zero_reg__
 143:cc1000.c      ****   uint8_t RefDiv = 0;
 200               	.LM10:
 201 0078 1D8A      		std Y+21,__zero_reg__
 144:cc1000.c      ****   uint8_t i;
 145:cc1000.c      **** 
 146:cc1000.c      ****   for (i = 0; i < 9; i++) {
 203               	.LM11:
 204 007a 3D89      		ldd r19,Y+21
 205 007c 3E8B      		std Y+22,r19
 206 007e 40E0      		ldi r20,lo8(CC1000ControlM_FRefTbl)
 207 0080 50E0      		ldi r21,hi8(CC1000ControlM_FRefTbl)
 208 0082 4F8B      		std Y+23,r20
 209 0084 588F      		std Y+24,r21
 210 0086 80E0      		ldi r24,lo8(CC1000ControlM_CorTbl)
 211 0088 90E0      		ldi r25,hi8(CC1000ControlM_CorTbl)
 212 008a 898F      		std Y+25,r24
 213 008c 9A8F      		std Y+26,r25
 214 008e A0E0      		ldi r26,lo8(0)
 215 0090 B0E0      		ldi r27,hi8(0)
 216 0092 AB8F      		std Y+27,r26
 217 0094 BC8F      		std Y+28,r27
 218               	.L12:
 219               	.LBB2:
 147:cc1000.c      **** 
 148:cc1000.c      ****       uint32_t NRef = desiredFreq + CC1000ControlM_IF;
 221               	.LM12:
 222 0096 2981      		ldd r18,Y+1
 223 0098 3A81      		ldd r19,Y+2
 224 009a 4B81      		ldd r20,Y+3
 225 009c 5C81      		ldd r21,Y+4
 226 009e 2051      		subi r18,lo8(-(150000))
 227 00a0 364B      		sbci r19,hi8(-(150000))
 228 00a2 4D4F      		sbci r20,hlo8(-(150000))
 229 00a4 5F4F      		sbci r21,hhi8(-(150000))
 149:cc1000.c      ****       uint32_t FRef = CC1000ControlM_FRefTbl[i];
 231               	.LM13:
 232 00a6 EF89      		ldd r30,Y+23
 233 00a8 F88D      		ldd r31,Y+24
 234 00aa A190      		ld r10,Z+
 235 00ac B190      		ld r11,Z+
 236 00ae C190      		ld r12,Z+
 237 00b0 D190      		ld r13,Z+
 238 00b2 EF8B      		std Y+23,r30
 239 00b4 F88F      		std Y+24,r31
 150:cc1000.c      ****       uint32_t Channel = 0;
 241               	.LM14:
 242 00b6 EE24      		clr r14
 243 00b8 FF24      		clr r15
 244 00ba 8701      		movw r16,r14
 151:cc1000.c      ****       uint32_t RXCalc = 0;
 246               	.LM15:

⌨️ 快捷键说明

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