📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _serial_num::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\无线传感器网络资料\cc2420驱动\测试1\code\main.c
0001 .dbsym e serial_num _serial_num c
.area text(rom, con, rel)
0000 .dbfile E:\无线传感器网络资料\cc2420驱动\测试1\code\main.c
0000 .dbfunc e main _main fV
0000 ; j -> R22,R23
0000 ; i -> R20
.even
0000 _main::
0000 .dbline -1
0000 .dbline 21
0000 ; /***************************************
0000 ; *2008,浙江工业大学信息与控制研究所
0000 ; *All rights reserved
0000 ; *
0000 ; *文件名称:main.c
0000 ; *摘 要:无线接收发送测试程序(发送端)
0000 ; *
0000 ; *当前版本:1.0
0000 ; *作 者:董齐芬
0000 ; *完成日期:2008.8.20
0000 ; ****************************************/
0000 ;
0000 ; #include "cc2420.h"
0000 ; #include "spi.h"
0000 ;
0000 ; unsigned char Data_TXFIFO[TX_length]; //要写入TXFIFO中的数据,包括帧长度,MAC头,MAC有效负载等部分
0000 ; unsigned char serial_num=0; //数据序号
0000 ;
0000 ;
0000 ; void main(void)
0000 ; {
0000 .dbline 25
0000 ; unsigned char i;
0000 ; unsigned int j;
0000 ;
0000 ; initled();
0000 0E940000 xcall _initled
0004 .dbline 26
0004 ; init_spi();
0004 0E940000 xcall _init_spi
0008 .dbline 28
0008 ;
0008 ; LED_YELLOW;
0008 D89A sbi 0x1b,0
000A .dbline 28
000A D998 cbi 0x1b,1
000C .dbline 28
000C .dbline 29
000C ; PORTB |=(1<<CSn); //CSN引脚置位,停止SPI操作,
000C C09A sbi 0x18,0
000E .dbline 30
000E ; PORTB |=1<<SCK; // Spi clock line init high
000E C19A sbi 0x18,1
0010 .dbline 31
0010 ; PORTE |=1<<RST; //注意该引脚低电平时,cc2420处于复位状态
0010 1A9A sbi 0x3,2
0012 .dbline 33
0012 ;
0012 ; Data_TXFIFO[0]=TX_length+1; //第一字节为帧长度,不包括长度域本身的字节,但包含帧校验序列2字节
0012 81E7 ldi R24,113
0014 80930000 sts _Data_TXFIFO,R24
0018 .dbline 36
0018 ;
0018 ; //帧控制域,无安全,确认要求,数据帧,包含16位的目标地址,源地址,目标PAN标识符,源PAN标识符
0018 ; Data_TXFIFO[1]=0x88; //高字节
0018 88E8 ldi R24,136
001A 80930100 sts _Data_TXFIFO+1,R24
001E .dbline 37
001E ; Data_TXFIFO[2]=0x01; //低字节
001E 81E0 ldi R24,1
0020 80930200 sts _Data_TXFIFO+2,R24
0024 .dbline 40
0024 ;
0024 ; //目的PAN标识符
0024 ; Data_TXFIFO[4]=0x23;
0024 83E2 ldi R24,35
0026 80930400 sts _Data_TXFIFO+4,R24
002A .dbline 41
002A ; Data_TXFIFO[5]=0x45;
002A 85E4 ldi R24,69
002C 80930500 sts _Data_TXFIFO+5,R24
0030 .dbline 44
0030 ;
0030 ; //目的地址
0030 ; Data_TXFIFO[6]=0x15;
0030 85E1 ldi R24,21
0032 80930600 sts _Data_TXFIFO+6,R24
0036 .dbline 45
0036 ; Data_TXFIFO[7]=0x73;
0036 83E7 ldi R24,115
0038 80930700 sts _Data_TXFIFO+7,R24
003C .dbline 48
003C ;
003C ; //源PAN标识符
003C ; Data_TXFIFO[8]=0x86;
003C 86E8 ldi R24,134
003E 80930800 sts _Data_TXFIFO+8,R24
0042 .dbline 49
0042 ; Data_TXFIFO[9]=0x49;
0042 89E4 ldi R24,73
0044 80930900 sts _Data_TXFIFO+9,R24
0048 .dbline 52
0048 ;
0048 ; //源地址
0048 ; Data_TXFIFO[10]=0x59;
0048 89E5 ldi R24,89
004A 80930A00 sts _Data_TXFIFO+10,R24
004E .dbline 53
004E ; Data_TXFIFO[11]=0x04;
004E 84E0 ldi R24,4
0050 80930B00 sts _Data_TXFIFO+11,R24
0054 .dbline 56
0054 ;
0054 ; //有效负载
0054 ; for (i=12;i<TX_length;i++)
0054 4CE0 ldi R20,12
0056 0AC0 xjmp L15
0058 L12:
0058 .dbline 57
0058 .dbline 58
0058 80E0 ldi R24,<_Data_TXFIFO
005A 90E0 ldi R25,>_Data_TXFIFO
005C E42F mov R30,R20
005E FF27 clr R31
0060 E80F add R30,R24
0062 F91F adc R31,R25
0064 842F mov R24,R20
0066 8C50 subi R24,12
0068 8083 std z+0,R24
006A .dbline 59
006A L13:
006A .dbline 56
006A 4395 inc R20
006C L15:
006C .dbline 56
006C 4037 cpi R20,112
006E A0F3 brlo L12
0070 .dbline 61
0070 ; {
0070 ; Data_TXFIFO[i]=i-12;
0070 ; }
0070 ;
0070 ; Set_Configure(); //初始化设置配置字
0070 0E940000 xcall _Set_Configure
0074 .dbline 62
0074 ; PwDown_Idle(); //从掉电模式转换到空闲模式
0074 0E940000 xcall _PwDown_Idle
0078 .dbline 64
0078 ;
0078 ; j=0;
0078 6627 clr R22
007A 7727 clr R23
007C 21C0 xjmp L17
007E L16:
007E .dbline 66
007E ; while(1)
007E ; {
007E .dbline 67
007E ; j++;
007E 6F5F subi R22,255 ; offset = 1
0080 7F4F sbci R23,255
0082 .dbline 68
0082 ; if (j==2048)
0082 6030 cpi R22,0
0084 E8E0 ldi R30,8
0086 7E07 cpc R23,R30
0088 09F4 brne L19
008A .dbline 69
008A ; {
008A .dbline 70
008A ; break;
008A 1BC0 xjmp L18
008C L19:
008C .dbline 72
008C ; }
008C ; AllStates_Idle();
008C 0E940000 xcall _AllStates_Idle
0090 .dbline 74
0090 ; //序列号
0090 ; Data_TXFIFO[3]=serial_num;
0090 20900000 lds R2,_serial_num
0094 20920300 sts _Data_TXFIFO+3,R2
0098 .dbline 75
0098 ; serial_num++;
0098 822D mov R24,R2
009A 8F5F subi R24,255 ; addi 1
009C 80930000 sts _serial_num,R24
00A0 .dbline 76
00A0 ; if(serial_num==250)
00A0 8A3F cpi R24,250
00A2 19F4 brne L22
00A4 .dbline 77
00A4 ; {
00A4 .dbline 78
00A4 ; serial_num=0;
00A4 2224 clr R2
00A6 20920000 sts _serial_num,R2
00AA .dbline 79
00AA ; }
00AA L22:
00AA .dbline 81
00AA 20E0 ldi R18,<_Data_TXFIFO
00AC 30E0 ldi R19,>_Data_TXFIFO
00AE 00E7 ldi R16,112
00B0 0E940000 xcall _Write_TXFIFO
00B4 .dbline 82
00B4 0E940000 xcall _Idle_Tx
00B8 .dbline 84
00B8 0E940000 xcall _Delay10ms
00BC .dbline 85
00BC 0E940000 xcall _Delay10ms
00C0 .dbline 86
00C0 L17:
00C0 .dbline 65
00C0 DECF xjmp L16
00C2 L18:
00C2 .dbline 87
00C2 ;
00C2 ; Write_TXFIFO(TX_length,Data_TXFIFO); //将数据写入到TXFIFO中
00C2 ; Idle_Tx(); //启动发送
00C2 ;
00C2 ; Delay10ms();
00C2 ; Delay10ms();
00C2 ; }
00C2 ; LED_RED;
00C2 D898 cbi 0x1b,0
00C4 .dbline 87
00C4 D99A sbi 0x1b,1
00C6 .dbline 87
00C6 L24:
00C6 .dbline 88
00C6 .dbline 88
00C6 .dbline 88
00C6 L25:
00C6 .dbline 88
00C6 FFCF xjmp L24
00C8 X0:
00C8 .dbline -2
00C8 L1:
00C8 .dbline 0 ; func end
00C8 0895 ret
00CA .dbsym r j 22 i
00CA .dbsym r i 20 c
00CA .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\无线传感器网络资料\cc2420驱动\测试1\code\main.c
0000 _Data_TXFIFO::
0000 .blkb 112
0070 .dbsym e Data_TXFIFO _Data_TXFIFO A[112:112]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -