📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_serial_num::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\RX\main.c
.dbsym e serial_num _serial_num i
_PAN_id::
.blkb 2
.area idata
.byte 35,'E
.area data(ram, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\RX\main.c
.dbsym e PAN_id _PAN_id A[2:2]c
_short_addr::
.blkb 2
.area idata
.byte 21,'s
.area data(ram, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\RX\main.c
.dbsym e short_addr _short_addr A[2:2]c
.area text(rom, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\RX\main.c
.dbfunc e main _main fV
; dL -> y+5
; dH -> y+4
; i -> R20
.even
_main::
sbiw R28,6
.dbline -1
.dbline 23
; /***************************************
; *2008,浙江工业大学信息与控制研究所
; *All rights reserved
; *
; *文件名称:main.c
; *摘 要:无线接收发送测试程序(接收端)
; *
; *当前版本:1.0
; *作 者:董齐芬
; *完成日期:2008.8.20
; ****************************************/
;
; #include "cc2420.h"
; #include "spi.h"
;
; unsigned char Data_RXFIFO[TX_length]; //从RXFIFO中读入的数据,包括帧长度,MAC头,MAC有效负载等部分
; unsigned int serial_num=0; //数据序号
; unsigned char numbers[2048]; //存放接收到的数据序列号
; unsigned char PAN_id[2]={0x23,0x45}; //
; unsigned char short_addr[2]={0x15,0x73};
;
; void main(void)
; {
.dbline 27
; unsigned char i;
; unsigned char dH[1],dL[1];
;
; init_spi();
xcall _init_spi
.dbline 29
;
; PORTB |=(1<<CSn); //CSN引脚置位,停止SPI操作,
sbi 0x18,0
.dbline 30
; PORTB |=1<<SCK; // Spi clock line init high
sbi 0x18,1
.dbline 31
; PORTE |=1<<RST; //注意该引脚低电平时,cc2420处于复位状态
sbi 0x3,2
.dbline 33
;
; Set_Configure(); //初始化设置配置字
xcall _Set_Configure
.dbline 34
; PwDown_Idle(); //从掉电模式转换到空闲模式
xcall _PwDown_Idle
.dbline 36
;
; Write_RAM(0x6a,0x02,2,short_addr);
ldi R24,<_short_addr
ldi R25,>_short_addr
std y+3,R25
std y+2,R24
ldi R24,2
std y+0,R24
ldi R18,2
ldi R16,106
xcall _Write_RAM
.dbline 37
; Write_RAM(0x68,0x02,2,PAN_id); //向RAM中写入地址,用于地址识别
ldi R24,<_PAN_id
ldi R25,>_PAN_id
std y+3,R25
std y+2,R24
ldi R24,2
std y+0,R24
ldi R18,2
ldi R16,104
xcall _Write_RAM
.dbline 39
;
; Idle_Rx(); //进入接收模式
xcall _Idle_Rx
.dbline 41
;
; i=0;
clr R20
xjmp L3
L2:
.dbline 43
; while(1)
; {
.dbline 44
; if((PINE&(1<<FIFOP))!=0) //检测到数据
sbis 0x1,6
rjmp L5
.dbline 45
; {
.dbline 46
; Read_RXFIFO(TX_length,Data_RXFIFO); //因为设置了自动CRC校验,RXFIFO中包含两字节的RSSI,CRC结果等
ldi R18,<_Data_RXFIFO
ldi R19,>_Data_RXFIFO
ldi R16,112
xcall _Read_RXFIFO
.dbline 47
; Write_Command(SFLUSHRX); //清除RXFIFO,否则会一直请求微处理器读数据
ldi R16,8
xcall _Write_Command
.dbline 48
; numbers[serial_num]=Data_RXFIFO[3];
ldi R24,<_numbers
ldi R25,>_numbers
lds R30,_serial_num
lds R31,_serial_num+1
add R30,R24
adc R31,R25
lds R2,_Data_RXFIFO+3
std z+0,R2
.dbline 49
; serial_num++;
lds R24,_serial_num
lds R25,_serial_num+1
adiw R24,1
sts _serial_num+1,R25
sts _serial_num,R24
.dbline 50
; if(serial_num==2047)
cpi R24,255
ldi R30,7
cpc R25,R30
brne L8
.dbline 51
; {
.dbline 52
; serial_num=0;
clr R2
clr R3
sts _serial_num+1,R3
sts _serial_num,R2
.dbline 53
; }
L8:
.dbline 54
; }
L5:
.dbline 55
L3:
.dbline 42
xjmp L2
X0:
.dbline -2
L1:
adiw R28,6
.dbline 0 ; func end
ret
.dbsym l dL 5 A[1:1]c
.dbsym l dH 4 A[1:1]c
.dbsym r i 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\RX\main.c
_numbers::
.blkb 2048
.dbsym e numbers _numbers A[2048:2048]c
_Data_RXFIFO::
.blkb 112
.dbsym e Data_RXFIFO _Data_RXFIFO A[112:112]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -