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

📄 cc2420.lst

📁 利用zigbee进行定位的程序
💻 LST
字号:
   1               		.file	"cc2420.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:
 119               	.global	frst
 120               		.data
 123               	frst:
 124 0000 01        		.byte	1
 125               	.global	trd
 126               	.global	trd
 127               		.section .bss
 130               	trd:
 131 0000 00        		.skip 1,0
 132               	.global	scd
 133               	.global	scd
 136               	scd:
 137 0001 00        		.skip 1,0
 138               	.global	paktnum
 139               	.global	paktnum
 142               	paktnum:
 143 0002 0000      		.skip 2,0
 144               		.text
 146               	.global	cc2420_pin_init
 148               	cc2420_pin_init:
   1:cc2420.c      **** //----------------------------------------------------//
   2:cc2420.c      **** //-------Institute Of  Computing Technology-----------//
   3:cc2420.c      **** //------------Chinese Academic  Science---------------//
   4:cc2420.c      **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
   5:cc2420.c      **** //----------------------------------------------------//
   6:cc2420.c      **** 
   7:cc2420.c      **** /**
   8:cc2420.c      ****  * www.wsn.net.cn
   9:cc2420.c      ****  * @copyright:nbicc_lpp
  10:cc2420.c      ****  * @data:2005.11.22
  11:cc2420.c      ****  * @version:0.0.1
  12:cc2420.c      ****  * @updata:$
  13:cc2420.c      ****  *
  14:cc2420.c      ****  */
  15:cc2420.c      **** #include "cc2420.h"
  16:cc2420.c      **** //send
  17:cc2420.c      **** uint16_t paktnum=0;
  18:cc2420.c      **** bool scd=0,trd=0,frst=1;
  19:cc2420.c      **** //------------------------------HPL----------------------------------------------------------------
  20:cc2420.c      **** inline  uint8_t cc2420_pin_init(void)
  21:cc2420.c      **** {
 150               	.LM1:
 151               	/* prologue: frame size=0 */
 152               	/* prologue end (size=0) */
  22:cc2420.c      **** 
  23:cc2420.c      ****   cc2420_bramspi = TRUE;
 154               	.LM2:
 155 0000 81E0      		ldi r24,lo8(1)
 156 0002 8093 0000 		sts cc2420_bramspi,r24
  24:cc2420.c      ****   OS_MAKE_MISO_INPUT();
 158               	.LM3:
 159 0006 0E94 0000 		call OS_MAKE_MISO_INPUT
  25:cc2420.c      ****   OS_MAKE_MOSI_OUTPUT();
 161               	.LM4:
 162 000a 0E94 0000 		call OS_MAKE_MOSI_OUTPUT
  26:cc2420.c      ****   OS_MAKE_SPI_SCK_OUTPUT();
 164               	.LM5:
 165 000e 0E94 0000 		call OS_MAKE_SPI_SCK_OUTPUT
  27:cc2420.c      ****   OS_MAKE_CC_RSTN_OUTPUT();
 167               	.LM6:
 168 0012 0E94 0000 		call OS_MAKE_CC_RSTN_OUTPUT
  28:cc2420.c      ****   OS_MAKE_CC_VREN_OUTPUT();
 170               	.LM7:
 171 0016 0E94 0000 		call OS_MAKE_CC_VREN_OUTPUT
  29:cc2420.c      ****   OS_MAKE_CC_CS_OUTPUT();
 173               	.LM8:
 174 001a 0E94 0000 		call OS_MAKE_CC_CS_OUTPUT
  30:cc2420.c      ****   OS_MAKE_CC_FIFOP1_INPUT();
 176               	.LM9:
 177 001e 0E94 0000 		call OS_MAKE_CC_FIFOP1_INPUT
  31:cc2420.c      ****   OS_MAKE_CC_CCA_INPUT();
 179               	.LM10:
 180 0022 0E94 0000 		call OS_MAKE_CC_CCA_INPUT
  32:cc2420.c      ****   OS_MAKE_CC_SFD_INPUT();
 182               	.LM11:
 183 0026 0E94 0000 		call OS_MAKE_CC_SFD_INPUT
  33:cc2420.c      ****   OS_MAKE_CC_FIFO_INPUT();
 185               	.LM12:
 186 002a 0E94 0000 		call OS_MAKE_CC_FIFO_INPUT
  34:cc2420.c      ****   
  35:cc2420.c      ****     return SUCCESS;
  36:cc2420.c      **** }
 188               	.LM13:
 189 002e 81E0      		ldi r24,lo8(1)
 190 0030 90E0      		ldi r25,hi8(1)
 191               	/* epilogue: frame size=0 */
 192 0032 0895      		ret
 193               	/* epilogue end (size=1) */
 194               	/* function cc2420_pin_init size 26 (25) */
 197               	.global	cc2420_reginit
 199               	cc2420_reginit:
  37:cc2420.c      **** 
  38:cc2420.c      **** inline static  uint8_t SPI_init(void)
  39:cc2420.c      **** {
  40:cc2420.c      ****    { os_atomic_t _nesc_atomic = os_atomic_start();
  41:cc2420.c      ****     {
  42:cc2420.c      ****       OS_MAKE_SPI_SCK_OUTPUT();
  43:cc2420.c      ****       OS_MAKE_MISO_INPUT();
  44:cc2420.c      ****       OS_MAKE_MOSI_OUTPUT();
  45:cc2420.c      ****       SPSR |= 1 << 0;//SPI STATE 
  46:cc2420.c      ****       SPCR |= 1 << 4;
  47:cc2420.c      ****       SPCR &= ~(1 << 3);
  48:cc2420.c      ****       SPCR &= ~(1 << 2);
  49:cc2420.c      ****       SPCR &= ~(1 << 1);
  50:cc2420.c      ****       SPCR &= ~(1 << 0);
  51:cc2420.c      ****       SPCR |= 1 << 6;
  52:cc2420.c      ****     }
  53:cc2420.c      ****     os_atomic_end(_nesc_atomic); }
  54:cc2420.c      **** 	return SUCCESS;
  55:cc2420.c      **** }
  56:cc2420.c      **** 
  57:cc2420.c      **** inline  uint8_t cc2420_reginit(void)
  58:cc2420.c      **** {
 201               	.LM14:
 202               	/* prologue: frame size=0 */
 203               	/* prologue end (size=0) */
  59:cc2420.c      ****   
  60:cc2420.c      ****   // Set default parameters
  61:cc2420.c      ****   cc2420_currentparameters[CP_MAIN] = 0xf800;
 205               	.LM15:
 206 0034 80E0      		ldi r24,lo8(-2048)
 207 0036 98EF      		ldi r25,hi8(-2048)
 208 0038 9093 0000 		sts (cc2420_currentparameters)+1,r25
 209 003c 8093 0000 		sts cc2420_currentparameters,r24
  62:cc2420.c      ****   cc2420_currentparameters[CP_MDMCTRL0] = ((0 << cc2420_MDMCTRL0_PANCRD) |(0 << cc2420_MDMCTRL0_ADR
 211               	.LM16:
 212 0040 82EE      		ldi r24,lo8(738)
 213 0042 92E0      		ldi r25,hi8(738)
 214 0044 9093 0000 		sts (cc2420_currentparameters+2)+1,r25
 215 0048 8093 0000 		sts cc2420_currentparameters+2,r24
  63:cc2420.c      ****        (2 << cc2420_MDMCTRL0_CCAHIST) | (3 << cc2420_MDMCTRL0_CCAMODE)  | //cca mode is 3
  64:cc2420.c      ****        (1 << cc2420_MDMCTRL0_AUTOCRC) | (2 << cc2420_MDMCTRL0_PREAMBL)); //auto crc is set 
  65:cc2420.c      **** 
  66:cc2420.c      ****   cc2420_currentparameters[CP_MDMCTRL1] = 20 << cc2420_MDMCTRL1_CORRTHRESH;//default
 217               	.LM17:
 218 004c 80E0      		ldi r24,lo8(1280)
 219 004e 95E0      		ldi r25,hi8(1280)
 220 0050 9093 0000 		sts (cc2420_currentparameters+4)+1,r25
 221 0054 8093 0000 		sts cc2420_currentparameters+4,r24
  67:cc2420.c      ****   cc2420_currentparameters[CP_RSSI] =     0xE080;//default 
 223               	.LM18:
 224 0058 80E8      		ldi r24,lo8(-8064)
 225 005a 90EE      		ldi r25,hi8(-8064)
 226 005c 9093 0000 		sts (cc2420_currentparameters+6)+1,r25
 227 0060 8093 0000 		sts cc2420_currentparameters+6,r24
  68:cc2420.c      ****   cc2420_currentparameters[CP_SYNCWORD] = 0xA70F;
 229               	.LM19:
 230 0064 8FE0      		ldi r24,lo8(-22769)
 231 0066 97EA      		ldi r25,hi8(-22769)
 232 0068 9093 0000 		sts (cc2420_currentparameters+8)+1,r25
 233 006c 8093 0000 		sts cc2420_currentparameters+8,r24
  69:cc2420.c      ****   cc2420_currentparameters[CP_TXCTRL] = ((1 << cc2420_TXCTRL_BUFCUR) | //default is 2-1.16ma,now is
 235               	.LM20:
 236 0070 8FEF      		ldi r24,lo8(24831)
 237 0072 90E6      		ldi r25,hi8(24831)
 238 0074 9093 0000 		sts (cc2420_currentparameters+10)+1,r25
 239 0078 8093 0000 		sts cc2420_currentparameters+10,r24
  70:cc2420.c      ****        (1 << cc2420_TXCTRL_TURNARND) | (3 << cc2420_TXCTRL_PACUR) | //default ,turnaround time is 1
  71:cc2420.c      ****        (1 << cc2420_TXCTRL_PADIFF) | (0x1f << cc2420_TXCTRL_PAPWR));//default
  72:cc2420.c      ****  cc2420_currentparameters[CP_RXCTRL0] = ((1 << cc2420_RXCTRL0_BUFCUR) | //default is 980ua
 241               	.LM21:
 242 007c 85EE      		ldi r24,lo8(4837)
 243 007e 92E1      		ldi r25,hi8(4837)
 244 0080 9093 0000 		sts (cc2420_currentparameters+12)+1,r25
 245 0084 8093 0000 		sts cc2420_currentparameters+12,r24
  73:cc2420.c      ****        (2 << cc2420_RXCTRL0_MLNAG) | (3 << cc2420_RXCTRL0_LOLNAG) | 
  74:cc2420.c      ****        (2 << cc2420_RXCTRL0_HICUR) | (1 << cc2420_RXCTRL0_MCUR) | 
  75:cc2420.c      ****        (1 << cc2420_RXCTRL0_LOCUR));//default
  76:cc2420.c      ****  cc2420_currentparameters[CP_RXCTRL1]  = ((1 << cc2420_RXCTRL1_LOLOGAIN)   | (1 << cc2420_RXCTRL1_H
 247               	.LM22:
 248 0088 86E5      		ldi r24,lo8(2646)
 249 008a 9AE0      		ldi r25,hi8(2646)
 250 008c 9093 0000 		sts (cc2420_currentparameters+14)+1,r25
 251 0090 8093 0000 		sts cc2420_currentparameters+14,r24
  77:cc2420.c      **** 	                                   (1 << cc2420_RXCTRL1_LNACAP)     | (1 << cc2420_RXCTRL1_RMIXT  
  78:cc2420.c      **** 									   (1 << cc2420_RXCTRL1_RMIXV)      | (2 << cc2420_RXCTRL1_RMIXCUR  ) );//default
  79:cc2420.c      **** 							    
  80:cc2420.c      ****  cc2420_currentparameters[CP_FSCTRL]   = ((1 << cc2420_FSCTRL_LOCK)        | ((357+5*(cc2420_DEF_CH
 253               	.LM23:
 254 0094 85E6      		ldi r24,lo8(16741)
 255 0096 91E4      		ldi r25,hi8(16741)
 256 0098 9093 0000 		sts (cc2420_currentparameters+16)+1,r25
 257 009c 8093 0000 		sts cc2420_currentparameters+16,r24
  81:cc2420.c      ****  cc2420_currentparameters[CP_SECCTRL0] = ((0 << cc2420_SECCTRL0_PROTECT) |(1 << cc2420_SECCTRL0_CBC
 259               	.LM24:
 260 00a0 84EC      		ldi r24,lo8(452)
 261 00a2 91E0      		ldi r25,hi8(452)
 262 00a4 9093 0000 		sts (cc2420_currentparameters+18)+1,r25
 263 00a8 8093 0000 		sts cc2420_currentparameters+18,r24
  82:cc2420.c      **** 	                                   (1 << cc2420_SECCTRL0_SAKEYSEL)  | (1 << cc2420_SECCTRL0_TXKEYS
  83:cc2420.c      **** 									   (1 << cc2420_SECCTRL0_SECM ) );//disable the security
  84:cc2420.c      ****  cc2420_currentparameters[CP_SECCTRL1] = 0;
 265               	.LM25:
 266 00ac 1092 0000 		sts (cc2420_currentparameters+20)+1,__zero_reg__
 267 00b0 1092 0000 		sts cc2420_currentparameters+20,__zero_reg__
  85:cc2420.c      ****  cc2420_currentparameters[CP_BATTMON]  = 0;//battery monitor is disable 
 269               	.LM26:
 270 00b4 1092 0000 		sts (cc2420_currentparameters+22)+1,__zero_reg__
 271 00b8 1092 0000 		sts cc2420_currentparameters+22,__zero_reg__
  86:cc2420.c      ****     //cc2420_currentparameters[CP_IOCFG0]   = (((TOSH_DATA_LENGTH + 2) << cc2420_IOCFG0_FIFOTHR) | 
  87:cc2420.c      **** 	//set fifop threshold to greater than size of  msg, fifop goes active at end of msg
  88:cc2420.c      ****  cc2420_currentparameters[CP_IOCFG0]   = (((127) << cc2420_IOCFG0_FIFOTHR) | (1 <<cc2420_IOCFG0_FIF
 273               	.LM27:
 274 00bc 8FE7      		ldi r24,lo8(639)
 275 00be 92E0      		ldi r25,hi8(639)
 276 00c0 9093 0000 		sts (cc2420_currentparameters+24)+1,r25
 277 00c4 8093 0000 		sts cc2420_currentparameters+24,r24
  89:cc2420.c      ****  cc2420_currentparameters[CP_IOCFG1]   =  0;
 279               	.LM28:
 280 00c8 1092 0000 		sts (cc2420_currentparameters+26)+1,__zero_reg__
 281 00cc 1092 0000 		sts cc2420_currentparameters+26,__zero_reg__
  90:cc2420.c      ****   return SUCCESS;
  91:cc2420.c      **** 
  92:cc2420.c      **** }
 283               	.LM29:
 284 00d0 81E0      		ldi r24,lo8(1)
 285 00d2 90E0      		ldi r25,hi8(1)
 286               	/* epilogue: frame size=0 */
 287 00d4 0895      		ret
 288               	/* epilogue end (size=1) */
 289               	/* function cc2420_reginit size 81 (80) */
 292               	.global	cc2420_enablefifop
 294               	cc2420_enablefifop:
  93:cc2420.c      **** 
  94:cc2420.c      **** //---------------------------------------------------------设置cc2420寄存器的值
  95:cc2420.c      **** bool cc2420_setreg(void)
  96:cc2420.c      **** 
  97:cc2420.c      **** {
  98:cc2420.c      ****   uint16_t data;
  99:cc2420.c      ****   
 100:cc2420.c      ****   cc2420_writereg(cc2420_MAIN, cc2420_currentparameters[CP_MAIN]);
 101:cc2420.c      ****   cc2420_writereg(cc2420_MDMCTRL0, cc2420_currentparameters[CP_MDMCTRL0]);
 102:cc2420.c      ****   data = cc2420_readreg(cc2420_MDMCTRL0);
 103:cc2420.c      ****   if (data != cc2420_currentparameters[CP_MDMCTRL0]) {
 104:cc2420.c      ****     printf("reginit is unsuccess\n");
 105:cc2420.c      ****     return FALSE;
 106:cc2420.c      ****     }
 107:cc2420.c      ****   cc2420_writereg(cc2420_MDMCTRL1, cc2420_currentparameters[CP_MDMCTRL1]);
 108:cc2420.c      ****   cc2420_writereg(cc2420_RSSI, cc2420_currentparameters[CP_RSSI]);
 109:cc2420.c      ****   cc2420_writereg(cc2420_SYNCWORD, cc2420_currentparameters[CP_SYNCWORD]);
 110:cc2420.c      ****   cc2420_writereg(cc2420_TXCTRL, cc2420_currentparameters[CP_TXCTRL]);
 111:cc2420.c      ****   cc2420_writereg(cc2420_RXCTRL0, cc2420_currentparameters[CP_RXCTRL0]);
 112:cc2420.c      ****   cc2420_writereg(cc2420_RXCTRL1, cc2420_currentparameters[CP_RXCTRL1]);
 113:cc2420.c      ****   cc2420_writereg(cc2420_FSCTRL, cc2420_currentparameters[CP_FSCTRL]);
 114:cc2420.c      **** 
 115:cc2420.c      ****   cc2420_writereg(cc2420_SECCTRL0, cc2420_currentparameters[CP_SECCTRL0]);
 116:cc2420.c      ****   cc2420_writereg(cc2420_SECCTRL1, cc2420_currentparameters[CP_SECCTRL1]);
 117:cc2420.c      ****   cc2420_writereg(cc2420_IOCFG0, cc2420_currentparameters[CP_IOCFG0]);
 118:cc2420.c      ****   cc2420_writereg(cc2420_IOCFG1, cc2420_currentparameters[CP_IOCFG1]);
 119:cc2420.c      **** 
 120:cc2420.c      ****   cc2420_sendcmd(cc2420_SFLUSHTX);
 121:cc2420.c      ****   cc2420_sendcmd(cc2420_SFLUSHRX);
 122:cc2420.c      ****    printf("reginit is success\n");
 123:cc2420.c      ****   return TRUE;
 124:cc2420.c      **** }
 125:cc2420.c      **** 
 126:cc2420.c      **** //----------------------------------------------------------------FIFOP中断处理中转fifop的中断响应

⌨️ 快捷键说明

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