📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_serial_num::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\code\main.c
.dbsym e serial_num _serial_num c
.area text(rom, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\code\main.c
.dbfunc e main _main fV
; j -> R22,R23
; i -> R20
.even
_main::
.dbline -1
.dbline 21
; /***************************************
; *2008,浙江工业大学信息与控制研究所
; *All rights reserved
; *
; *文件名称:main.c
; *摘 要:无线接收发送测试程序(发送端)
; *
; *当前版本:1.0
; *作 者:董齐芬
; *完成日期:2008.8.20
; ****************************************/
;
; #include "cc2420.h"
; #include "spi.h"
;
; unsigned char Data_TXFIFO[TX_length]; //要写入TXFIFO中的数据,包括帧长度,MAC头,MAC有效负载等部分
; unsigned char serial_num=0; //数据序号
;
;
; void main(void)
; {
.dbline 25
; unsigned char i;
; unsigned int j;
;
; initled();
xcall _initled
.dbline 26
; init_spi();
xcall _init_spi
.dbline 28
;
; LED_YELLOW;
sbi 0x1b,0
.dbline 28
cbi 0x1b,1
.dbline 28
.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
;
; Data_TXFIFO[0]=TX_length+1; //第一字节为帧长度,不包括长度域本身的字节,但包含帧校验序列2字节
ldi R24,113
sts _Data_TXFIFO,R24
.dbline 36
;
; //帧控制域,无安全,确认要求,数据帧,包含16位的目标地址,源地址,目标PAN标识符,源PAN标识符
; Data_TXFIFO[1]=0x88; //高字节
ldi R24,136
sts _Data_TXFIFO+1,R24
.dbline 37
; Data_TXFIFO[2]=0x01; //低字节
ldi R24,1
sts _Data_TXFIFO+2,R24
.dbline 40
;
; //目的PAN标识符
; Data_TXFIFO[4]=0x23;
ldi R24,35
sts _Data_TXFIFO+4,R24
.dbline 41
; Data_TXFIFO[5]=0x45;
ldi R24,69
sts _Data_TXFIFO+5,R24
.dbline 44
;
; //目的地址
; Data_TXFIFO[6]=0x15;
ldi R24,21
sts _Data_TXFIFO+6,R24
.dbline 45
; Data_TXFIFO[7]=0x73;
ldi R24,115
sts _Data_TXFIFO+7,R24
.dbline 48
;
; //源PAN标识符
; Data_TXFIFO[8]=0x86;
ldi R24,134
sts _Data_TXFIFO+8,R24
.dbline 49
; Data_TXFIFO[9]=0x49;
ldi R24,73
sts _Data_TXFIFO+9,R24
.dbline 52
;
; //源地址
; Data_TXFIFO[10]=0x59;
ldi R24,89
sts _Data_TXFIFO+10,R24
.dbline 53
; Data_TXFIFO[11]=0x04;
ldi R24,4
sts _Data_TXFIFO+11,R24
.dbline 56
;
; //有效负载
; for (i=12;i<TX_length;i++)
ldi R20,12
xjmp L15
L12:
.dbline 57
.dbline 58
ldi R24,<_Data_TXFIFO
ldi R25,>_Data_TXFIFO
mov R30,R20
clr R31
add R30,R24
adc R31,R25
mov R24,R20
subi R24,12
std z+0,R24
.dbline 59
L13:
.dbline 56
inc R20
L15:
.dbline 56
cpi R20,112
brlo L12
.dbline 61
; {
; Data_TXFIFO[i]=i-12;
; }
;
; Set_Configure(); //初始化设置配置字
xcall _Set_Configure
.dbline 62
; PwDown_Idle(); //从掉电模式转换到空闲模式
xcall _PwDown_Idle
.dbline 64
;
; j=0;
clr R22
clr R23
xjmp L17
L16:
.dbline 66
; while(1)
; {
.dbline 67
; j++;
subi R22,255 ; offset = 1
sbci R23,255
.dbline 68
; if (j==2048)
cpi R22,0
ldi R30,8
cpc R23,R30
brne L19
.dbline 69
; {
.dbline 70
; break;
xjmp L18
L19:
.dbline 72
; }
; AllStates_Idle();
xcall _AllStates_Idle
.dbline 74
; //序列号
; Data_TXFIFO[3]=serial_num;
lds R2,_serial_num
sts _Data_TXFIFO+3,R2
.dbline 75
; serial_num++;
mov R24,R2
subi R24,255 ; addi 1
sts _serial_num,R24
.dbline 76
; if(serial_num==250)
cpi R24,250
brne L22
.dbline 77
; {
.dbline 78
; serial_num=0;
clr R2
sts _serial_num,R2
.dbline 79
; }
L22:
.dbline 81
ldi R18,<_Data_TXFIFO
ldi R19,>_Data_TXFIFO
ldi R16,112
xcall _Write_TXFIFO
.dbline 82
xcall _Idle_Tx
.dbline 84
xcall _Delay10ms
.dbline 85
xcall _Delay10ms
.dbline 86
L17:
.dbline 65
xjmp L16
L18:
.dbline 87
;
; Write_TXFIFO(TX_length,Data_TXFIFO); //将数据写入到TXFIFO中
; Idle_Tx(); //启动发送
;
; Delay10ms();
; Delay10ms();
; }
; LED_RED;
cbi 0x1b,0
.dbline 87
sbi 0x1b,1
.dbline 87
L24:
.dbline 88
.dbline 88
.dbline 88
L25:
.dbline 88
xjmp L24
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r j 22 i
.dbsym r i 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\无线传感器网络资料\cc2420驱动\测试1\code\main.c
_Data_TXFIFO::
.blkb 112
.dbsym e Data_TXFIFO _Data_TXFIFO A[112:112]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -