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

📄 rx.lst

📁 该程序通过调试
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0411)   Write_ConfigureWord(MDMCTRL0,RegisterValueH,RegisterValueL); 
    01E6 8368      STD	Y+0,R22
    01E7 2F24      MOV	R18,R20
    01E8 E101      LDI	R16,0x11
    01E9 DE97      RCALL	_Write_ConfigureWord
(0412)   
(0413)   RegisterValueH=0X05;
    01EA E045      LDI	R20,5
(0414)   RegisterValueL=0X00; 
    01EB 2766      CLR	R22
(0415)   Write_ConfigureWord(MDMCTRL1,RegisterValueH,RegisterValueL); 
    01EC 8368      STD	Y+0,R22
    01ED 2F24      MOV	R18,R20
    01EE E102      LDI	R16,0x12
    01EF DE91      RCALL	_Write_ConfigureWord
(0416)   
(0417)  // RegisterValueH=-50;
(0418)  // RegisterValueL=0X00; 
(0419)  // Write_ConfigureWord(RSSI,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
(0420)   
(0421)   RegisterValueH=0x41;
    01F0 E441      LDI	R20,0x41
(0422)   RegisterValueL=0X92;    //2.45GHz
    01F1 E962      LDI	R22,0x92
(0423)   Write_ConfigureWord(FSCTRL,RegisterValueH,RegisterValueL); 
    01F2 8368      STD	Y+0,R22
    01F3 2F24      MOV	R18,R20
    01F4 E108      LDI	R16,0x18
    01F5 DE8B      RCALL	_Write_ConfigureWord
(0424)   
(0425)   RegisterValueH=0x01;
    01F6 E041      LDI	R20,1
(0426)   RegisterValueL=0Xe4;    //安全模式不使能
    01F7 EE64      LDI	R22,0xE4
(0427)   Write_ConfigureWord(SECCTRL0,RegisterValueH,RegisterValueL); 
    01F8 8368      STD	Y+0,R22
    01F9 2F24      MOV	R18,R20
    01FA E109      LDI	R16,0x19
    01FB DE85      RCALL	_Write_ConfigureWord
(0428)   
(0429)   //RegisterValueH=128;
(0430)   //RegisterValueL=128; 
(0431)   //Write_ConfigureWord(SECCTRL1,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
(0432)   
(0433)   RegisterValueH=0;
    01FC 2744      CLR	R20
(0434)   RegisterValueL=TX_length;  //RXFIFO的极限值
    01FD E760      LDI	R22,0x70
(0435)   Write_ConfigureWord(IOCFG0,RegisterValueH,RegisterValueL); //???????????????????????调试时修改
    01FE 8368      STD	Y+0,R22
    01FF 2F24      MOV	R18,R20
    0200 E10C      LDI	R16,0x1C
    0201 DE7F      RCALL	_Write_ConfigureWord
(0436)   
(0437)   disable_spi();      //禁止SPI口 
    0202 940E028B  CALL	_disable_spi
    0204 9621      ADIW	R28,1
    0205 940E028D  CALL	pop_gset2
    0207 9508      RET
FILE: E:\无线传感器网络资料\cc2420驱动\测试1\RX\common.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:common.c
(0006) *摘    要:公共函数的定义
(0007) *
(0008) *当前版本:1.0
(0009) *作    者:董齐芬
(0010) *完成日期:2008.8.20
(0011) ****************************************/
(0012) #include "common.h"
(0013) 
(0014) /*******************************************
(0015) *函数功能:延时600us用于电压校准器的启动延时
(0016) *输入参数:无
(0017) *输出参数:无
(0018) *返 回 值:无
(0019) ********************************************/
(0020) void Delay600us(void)   
(0021) {
(0022)   unsigned char i,t;
(0023)   for (i=0;i<5;i++)
_Delay600us:
  i                    --> R16
  t                    --> R18
    0208 2700      CLR	R16
    0209 C006      RJMP	0x0210
(0024)   {
(0025)     for (t=0;t<250;t++)
    020A 2722      CLR	R18
    020B C001      RJMP	0x020D
    020C 9523      INC	R18
    020D 3F2A      CPI	R18,0xFA
    020E F3E8      BCS	0x020C
    020F 9503      INC	R16
    0210 3005      CPI	R16,5
    0211 F3C0      BCS	0x020A
    0212 9508      RET
(0026)     {
(0027)       ;
(0028)     }
(0029)   }
(0030) }
(0031) 
(0032) /*******************************************
(0033) *函数功能:延时10ms用于发送数据包的间隔测试
(0034) *输入参数:无
(0035) *输出参数:无
(0036) *返 回 值:无
(0037) ********************************************/     
(0038) void Delay10ms(void)  
(0039) {
(0040)   unsigned int t,i;
(0041)   for (t=0;t<3500;t++)
_Delay10ms:
  t                    --> R16
  i                    --> R18
    0213 2700      CLR	R16
    0214 2711      CLR	R17
    0215 C00B      RJMP	0x0221
(0042)   {
(0043)     for (i=0;i<3;i++)
    0216 2722      CLR	R18
    0217 2733      CLR	R19
    0218 C002      RJMP	0x021B
    0219 5F2F      SUBI	R18,0xFF
    021A 4F3F      SBCI	R19,0xFF
    021B 3023      CPI	R18,3
    021C E0E0      LDI	R30,0
    021D 073E      CPC	R19,R30
    021E F3D0      BCS	0x0219
    021F 5F0F      SUBI	R16,0xFF
    0220 4F1F      SBCI	R17,0xFF
    0221 3A0C      CPI	R16,0xAC
    0222 E0ED      LDI	R30,0xD
    0223 071E      CPC	R17,R30
    0224 F388      BCS	0x0216
    0225 9508      RET
_main:
  dL                   --> Y+5
  dH                   --> Y+4
  i                    --> R20
    0226 9726      SBIW	R28,6
FILE: E:\无线传感器网络资料\cc2420驱动\测试1\RX\main.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:main.c
(0006) *摘    要:无线接收发送测试程序(接收端)
(0007) *
(0008) *当前版本:1.0
(0009) *作    者:董齐芬
(0010) *完成日期:2008.8.20
(0011) ****************************************/
(0012) 
(0013) #include "cc2420.h"
(0014) #include "spi.h"
(0015) 
(0016) unsigned char Data_RXFIFO[TX_length];    //从RXFIFO中读入的数据,包括帧长度,MAC头,MAC有效负载等部分
(0017) unsigned int serial_num=0;         //数据序号
(0018) unsigned char numbers[2048];        //存放接收到的数据序列号
(0019) unsigned char PAN_id[2]={0x23,0x45};  //
(0020) unsigned char short_addr[2]={0x15,0x73};
(0021) 
(0022) void main(void)
(0023) {
(0024)   unsigned char i;
(0025)   unsigned char dH[1],dL[1];
(0026)  
(0027)   init_spi();
    0227 940E0273  CALL	_init_spi
(0028)   
(0029)   PORTB |=(1<<CSn);                //CSN引脚置位,停止SPI操作,
    0229 9AC0      SBI	0x18,0
(0030)   PORTB |=1<<SCK;                    // Spi clock line init high
    022A 9AC1      SBI	0x18,1
(0031)   PORTE |=1<<RST;                     //注意该引脚低电平时,cc2420处于复位状态
    022B 9A1A      SBI	0x03,2
(0032)   
(0033)   Set_Configure();     //初始化设置配置字
    022C 940E01DD  CALL	_Set_Configure
(0034)   PwDown_Idle();       //从掉电模式转换到空闲模式 
    022E 940E01BE  CALL	_PwDown_Idle
(0035)   
(0036)   Write_RAM(0x6a,0x02,2,short_addr);
    0230 E084      LDI	R24,4
    0231 E091      LDI	R25,1
    0232 839B      STD	Y+3,R25
    0233 838A      STD	Y+2,R24
    0234 E082      LDI	R24,2
    0235 8388      STD	Y+0,R24
    0236 E022      LDI	R18,2
    0237 E60A      LDI	R16,0x6A
    0238 940E0114  CALL	_Write_RAM
(0037)   Write_RAM(0x68,0x02,2,PAN_id);    //向RAM中写入地址,用于地址识别
    023A E082      LDI	R24,2
    023B E091      LDI	R25,1
    023C 839B      STD	Y+3,R25
    023D 838A      STD	Y+2,R24
    023E E082      LDI	R24,2
    023F 8388      STD	Y+0,R24
    0240 E022      LDI	R18,2
    0241 E608      LDI	R16,0x68
    0242 940E0114  CALL	_Write_RAM
(0038)   
(0039)   Idle_Rx();           //进入接收模式
    0244 940E01DA  CALL	_Idle_Rx
(0040)   
(0041)   i=0;
    0246 2744      CLR	R20
    0247 C028      RJMP	0x0270
(0042)   while(1)
(0043)   {
(0044)     if((PINE&(1<<FIFOP))!=0)     //检测到数据
    0248 9B0E      SBIS	0x01,6
    0249 C026      RJMP	0x0270
(0045) 	{
(0046) 	  Read_RXFIFO(TX_length,Data_RXFIFO);        //因为设置了自动CRC校验,RXFIFO中包含两字节的RSSI,CRC结果等
    024A E026      LDI	R18,6
    024B E039      LDI	R19,0x9
    024C E700      LDI	R16,0x70
    024D 940E00B0  CALL	_Read_RXFIFO
(0047) 	  Write_Command(SFLUSHRX);                   //清除RXFIFO,否则会一直请求微处理器读数据
    024F E008      LDI	R16,0x8
    0250 940E006A  CALL	_Write_Command
(0048) 	  numbers[serial_num]=Data_RXFIFO[3];
    0252 E086      LDI	R24,6
    0253 E091      LDI	R25,1
    0254 91E00100  LDS	R30,serial_num
    0256 91F00101  LDS	R31,serial_num+1
    0258 0FE8      ADD	R30,R24
    0259 1FF9      ADC	R31,R25
    025A 90200909  LDS	R2,Data_RXFIFO+3
    025C 8220      STD	Z+0,R2
(0049) 	  serial_num++;
    025D 91800100  LDS	R24,serial_num
    025F 91900101  LDS	R25,serial_num+1
    0261 9601      ADIW	R24,1
    0262 93900101  STS	serial_num+1,R25
    0264 93800100  STS	serial_num,R24
(0050) 	  if(serial_num==2047)
    0266 3F8F      CPI	R24,0xFF
    0267 E0E7      LDI	R30,7
    0268 079E      CPC	R25,R30
    0269 F431      BNE	0x0270
(0051) 	  {
(0052) 	    serial_num=0;
    026A 2422      CLR	R2
    026B 2433      CLR	R3
    026C 92300101  STS	serial_num+1,R3
    026E 92200100  STS	serial_num,R2
    0270 CFD7      RJMP	0x0248
    0271 9626      ADIW	R28,6
    0272 9508      RET
FILE: E:\无线传感器网络资料\cc2420驱动\测试1\RX\spi.c
(0001) /***************************************
(0002) *2008,浙江工业大学信息与控制研究所
(0003) *All rights reserved
(0004) *
(0005) *文件名称:SPI.c
(0006) *摘    要:SPI的子程序实现
(0007) *
(0008) *当前版本:1.1
(0009) *作    者:王微
(0010) *完成日期:2008.4.22
(0011) ****************************************/
(0012) 
(0013) #include"spi.h"
(0014) 
(0015) /*************************************************
(0016) 函数功能:初始化SPI口
(0017) 输入参数:无
(0018) 返回值:无
(0019) **************************************************/
(0020) void init_spi(void)
(0021) { 
(0022)     unsigned char temp;
(0023) 	DDRB|=(1<<MOSI)|(1<<SCK)|(1<<CSn);//设置MOSI、SCK和SS 为输出,其他为输入 
_init_spi:
  temp                 --> R16
    0273 B387      IN	R24,0x17
    0274 6087      ORI	R24,7
    0275 BB87      OUT	0x17,R24
(0024) 	DDRE|=(1<<VREGEN)|(1<<RST);
    0276 B182      IN	R24,0x02
    0277 608C      ORI	R24,0xC
    0278 B982      OUT	0x02,R24
(0025) 
(0026)     SPCR = (1<<SPE)|(1<<MSTR);//|(1<<SPR0);// 使能SPI,主机模式,设置时钟速率为fck/4
    0279 E580      LDI	R24,0x50
    027A B98D      OUT	0x0D,R24
(0027) 	SPSR = BIT(SPI2X);     //SPI时钟加倍
    027B E081      LDI	R24,1
    027C B98E      OUT	0x0E,R24
(0028) 
(0029)     temp = SPSR; //!!! 读一次SPSR为了清除SPIF位和WCOL位
    027D B10E      IN	R16,0x0E
(0030) 
(0031)     temp = SPDR; //清空SPI,和中断标志,使SPI空闲
    027E B10F      IN	R16,0x0F
    027F 9508      RET
_SpiWrite:
  temp                 --> R20
  temp1                --> R22
  data_spi             --> R16
    0280 D018      RCALL	push_gset2
(0032) }
(0033) 
(0034) /**************************************************
(0035) 函数功能:写SPI一个字节
(0036) 输入参数:SPI指令
(0037) 返回值:对应指令的结果
(0038) **************************************************/
(0039) unsigned char SpiWrite(unsigned char data_spi)
(0040) { 
(0041)   unsigned char temp,temp1;
(0042)   SPDR=data_spi;
    0281 B90F      OUT	0x0F,R16
(0043)   while(!(SPSR & (1<<SPIF))){;}//等待传输结束
    0282 9B77      SBIS	0x0E,7
    0283 CFFE      RJMP	0x0282
(0044)   temp1=SPDR;
    0284 B16F      IN	R22,0x0F
(0045)   temp = SPSR;
    0285 B14E      IN	R20,0x0E
(0046)   
(0047)   return temp1;
    0286 2F06      MOV	R16,R22
    0287 D005      RCALL	pop_gset2
    0288 9508      RET
(0048) }
(0049) 
(0050) /*******************************************
(0051) *函数功能:使能SPI口
(0052) *输入参数:无
(0053) *输出参数:无
(0054) *返 回 值:无
(0055) ********************************************/
(0056) void enable_spi(void) 
(0057) {
(0058)   PORTB &=~(1<<CSn);     //使能SPI口
_enable_spi:
    0289 98C0      CBI	0x18,0
    028A 9508      RET
(0059) }
(0060) 
(0061) /*******************************************
(0062) *函数功能:禁止SPI口
(0063) *输入参数:无
(0064) *输出参数:无
(0065) *返 回 值:无
(0066) ********************************************/
(0067) void disable_spi(void)
(0068) {
(0069)   PORTB |=(1<<CSn);      //禁止SPI口  
FILE: <library>
_disable_spi:
    028B 9AC0      SBI	0x18,0
    028C 9508      RET
pop_gset2:
    028D E0E2      LDI	R30,2
    028E 940C029F  JMP	pop
pop_gset4:
    0290 E0E8      LDI	R30,0x8
    0291 940C029F  JMP	pop
push_gset5:
    0293 92FA      ST	R15,-Y
    0294 92EA      ST	R14,-Y
push_gset4:
    0295 92DA      ST	R13,-Y
    0296 92CA      ST	R12,-Y
push_gset3:
    0297 92BA      ST	R11,-Y
    0298 92AA      ST	R10,-Y
push_gset2:
    0299 937A      ST	R23,-Y
    029A 936A      ST	R22,-Y
push_gset1:
    029B 935A      ST	R21,-Y
    029C 934A      ST	R20,-Y
    029D 9508      RET
pop_gset1:
    029E E0E1      LDI	R30,1
pop:
    029F 9149      LD	R20,Y+
    02A0 9159      LD	R21,Y+
    02A1 FDE0      SBRC	R30,0
    02A2 9508      RET
    02A3 9169      LD	R22,Y+
    02A4 9179      LD	R23,Y+
    02A5 FDE1      SBRC	R30,1
    02A6 9508      RET
    02A7 90A9      LD	R10,Y+
    02A8 90B9      LD	R11,Y+
    02A9 FDE2      SBRC	R30,2
    02AA 9508      RET
    02AB 90C9      LD	R12,Y+
    02AC 90D9      LD	R13,Y+
    02AD FDE3      SBRC	R30,3
    02AE 9508      RET
    02AF 90E9      LD	R14,Y+
    02B0 90F9      LD	R15,Y+
    02B1 9508      RET

⌨️ 快捷键说明

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