📄 sendpack.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 11/Dec/2008 13:41:50 #
# Copyright 2004-2006 IAR Systems. All rights reserved. #
# #
# Core = plain #
# Code model = near #
# Data model = large #
# Calling convention = xdata reentrant #
# Constant location = data #
# Dptr setup = 1,16 #
# Source file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\src\SendPack.c #
# Command line = -lC D:\zigbee\演示程序\简化协议的无线收发演示\dem #
# o_pro\Debug\List\ -lA D:\zigbee\演示程序\简化协议 #
# 的无线收发演示\demo_pro\Debug\List\ -o #
# D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\Obj\ -e -z2 --no_cse --no_unroll #
# --no_inline --no_code_motion --no_tbaa --debug #
# --core=plain --dptr=16,1 --data_model=large #
# --code_model=near --calling_convention=xdata_reen #
# trant --place_constants=data --nr_virtual_regs 8 #
# -I "C:\Program Files\IAR Systems\Embedded #
# Workbench 4.05 Evaluation version\8051\INC\" -I #
# "C:\Program Files\IAR Systems\Embedded Workbench #
# 4.05 Evaluation version\8051\INC\CLIB\" #
# D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\src\SendPack.c #
# List file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\List\SendPack.lst #
# Object file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\Obj\SendPack.r51 #
# #
# #
##############################################################################
D:\zigbee\演示程序\简化协议的无线收发演示\demo_pro\src\SendPack.c
1
2 #include "msstate_lrwpan.h"
3 #include "mac.h"
4
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
5 NODE_INFO dest;
\ dest:
\ 000000 DS 13
6
7
8 extern BYTE DebugParam[];
9 extern BYTE DebugParamLen;
10 extern BYTE IDNUM,STATES;
11
12 extern BYTE SensorInfo;
13 extern BYTE DebugCode;
14 extern BYTE ChannelIdx,NewChannelIdx,GroupChannelIdx,NewGroupChannel;
\ In segment NEAR_CODE, align 1, keep-with-next
15 void WirelessSendData(BYTE frame)
\ WirelessSendData:
16 {
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 61
\ 000005 74C3 MOV A,#-0x3d
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A 89.. MOV ?V0 + 1,R1
17 //数据格式如下:
18
19 //MacPutHeader()函数构造Mac帧头: 帧控制[2byte]+流水号[1byte]+目的PanID+目的Addr+源PanID+源Addr
20 //--> //WirelessSendData()构造数据: 数据类型[1Byte]+Dst Addr[2Byte]+Src Addr[2Byte]+data Len[cs+data]+Head Cs[之前6Byte 相加]+Data;
21 //MACPutArray()函数:会给data数据在计算一次校验和,追加在data之后;
22 //MACFlush函数:会在总包头前增加包数据长度[包含Header+userdata+rssi+crc],最后由2430自动追加RSSI and CRC 共两个字节
23
24 #if defined(USE_TAGRSSI)
25 BYTE SendData[MAX_GROUPMENBER_NUM *3+16];
26 #else
27 BYTE SendData[MAX_GROUPMENBER_NUM *2+16];
28 #endif
29 BYTE i,rssi,cs;
30
31
32
33 while (!MACIsPutReady()) ;
\ ??WirelessSendData_0:
\ 00000C 90.... MOV DPTR,#(phy_pib + 8)
\ 00000F E0 MOVX A,@DPTR
\ 000010 5402 ANL A,#0x2
\ 000012 70F8 JNZ ??WirelessSendData_0
34 phyGrabTxLock();
\ 000014 90.... MOV DPTR,#(phy_pib + 8)
\ 000017 E0 MOVX A,@DPTR
\ 000018 4402 ORL A,#0x2
\ 00001A F0 MOVX @DPTR,A
\ 00001B A3 INC DPTR
\ 00001C E0 MOVX A,@DPTR
\ 00001D 4400 ORL A,#0x0
\ 00001F F0 MOVX @DPTR,A
35
36
37 macInfo.addrMode = MAC_SRC_NO_ADDR;
\ 000020 7400 MOV A,#0x0
\ 000022 90.... MOV DPTR,#macInfo
\ 000025 F0 MOVX @DPTR,A
38 dest.addrMode = MAC_DST_SHORT_ADDR;
\ 000026 7408 MOV A,#0x8
\ 000028 90.... MOV DPTR,#dest
\ 00002B F0 MOVX @DPTR,A
39 dest.shortAddr.Val = 0xffff;
\ 00002C 90.... MOV DPTR,#(dest + 9)
\ 00002F 74FF MOV A,#-0x1
\ 000031 F0 MOVX @DPTR,A
\ 000032 A3 INC DPTR
\ 000033 74FF MOV A,#-0x1
\ 000035 F0 MOVX @DPTR,A
40 dest.panID.Val = 0xffff;
\ 000036 90.... MOV DPTR,#(dest + 11)
\ 000039 74FF MOV A,#-0x1
\ 00003B F0 MOVX @DPTR,A
\ 00003C A3 INC DPTR
\ 00003D 74FF MOV A,#-0x1
\ 00003F F0 MOVX @DPTR,A
41
42 MACPutHeader(&dest, // Dest
43 MAC_FRAME_DATA | // Frame Control LSB
44 MAC_SECURITY | MAC_FRAME_PENDING_NO | MAC_ACK_NO | MAC_INTRA_PAN_NO);
\ 000040 ; Setup parameters for call to function MACPutHeader
\ 000040 7901 MOV R1,#0x1
\ 000042 7A.. MOV R2,#(dest & 0xff)
\ 000044 7B.. MOV R3,#((dest >> 8) & 0xff)
\ 000046 12.... LCALL MACPutHeader
45 cs=0;
\ 000049 7E00 MOV R6,#0x0
46 SendData[0] = frame;
\ 00004B 85..82 MOV DPL,?XSP + 0
\ 00004E 85..83 MOV DPH,?XSP + 1
\ 000051 E5.. MOV A,?V0 + 1
\ 000053 F0 MOVX @DPTR,A
47
48 switch (frame)
\ 000054 E5.. MOV A,?V0 + 1
\ 000056 12.... LCALL ?UC_SWITCH_SPARSE
\ `?<Jumptable for WirelessSendData>_0`:
\ 000059 00 DB 0
\ 00005A 15 DB 21
\ 00005B 00 DB 0
\ 00005C .... DW ??WirelessSendData_1
\ 00005E 01 DB 1
\ 00005F .... DW ??WirelessSendData_2
\ 000061 10 DB 16
\ 000062 .... DW ??WirelessSendData_3
\ 000064 11 DB 17
\ 000065 .... DW ??WirelessSendData_4
\ 000067 12 DB 18
\ 000068 .... DW ??WirelessSendData_5
\ 00006A 13 DB 19
\ 00006B .... DW ??WirelessSendData_6
\ 00006D 14 DB 20
\ 00006E .... DW ??WirelessSendData_7
\ 000070 15 DB 21
\ 000071 .... DW ??WirelessSendData_8
\ 000073 16 DB 22
\ 000074 .... DW ??WirelessSendData_9
\ 000076 17 DB 23
\ 000077 .... DW ??WirelessSendData_10
\ 000079 18 DB 24
\ 00007A .... DW ??WirelessSendData_11
\ 00007C 19 DB 25
\ 00007D .... DW ??WirelessSendData_12
\ 00007F 1A DB 26
\ 000080 .... DW ??WirelessSendData_13
\ 000082 1B DB 27
\ 000083 .... DW ??WirelessSendData_14
\ 000085 1C DB 28
\ 000086 .... DW ??WirelessSendData_15
\ 000088 1D DB 29
\ 000089 .... DW ??WirelessSendData_16
\ 00008B 20 DB 32
\ 00008C .... DW ??WirelessSendData_17
\ 00008E 22 DB 34
\ 00008F .... DW ??WirelessSendData_18
\ 000091 23 DB 35
\ 000092 .... DW ??WirelessSendData_19
\ 000094 24 DB 36
\ 000095 .... DW ??WirelessSendData_20
\ 000097 A0 DB 160
\ 000098 .... DW ??WirelessSendData_21
\ 00009A .... DW ??WirelessSendData_22
49 {
50 case MSG_DEBUG_OUT:
51 SendData[1] = 0xff;
\ ??WirelessSendData_21:
\ 00009C 74FF MOV A,#-0x1
\ 00009E C0E0 PUSH A
\ 0000A0 7401 MOV A,#0x1
\ 0000A2 12.... LCALL ?XSTACK_DISP0_8
\ 0000A5 D0E0 POP A
\ 0000A7 F0 MOVX @DPTR,A
52 SendData[2] = 0xff;
\ 0000A8 74FF MOV A,#-0x1
\ 0000AA C0E0 PUSH A
\ 0000AC 7402 MOV A,#0x2
\ 0000AE 12.... LCALL ?XSTACK_DISP0_8
\ 0000B1 D0E0 POP A
\ 0000B3 F0 MOVX @DPTR,A
53 SendData[3] = macInfo.longAddr.v[0];
\ 0000B4 90.... MOV DPTR,#(macInfo + 1)
\ 0000B7 E0 MOVX A,@DPTR
\ 0000B8 C0E0 PUSH A
\ 0000BA 7403 MOV A,#0x3
\ 0000BC 12.... LCALL ?XSTACK_DISP0_8
\ 0000BF D0E0 POP A
\ 0000C1 F0 MOVX @DPTR,A
54 SendData[4] = macInfo.longAddr.v[1];
\ 0000C2 90.... MOV DPTR,#(macInfo + 2)
\ 0000C5 E0 MOVX A,@DPTR
\ 0000C6 C0E0 PUSH A
\ 0000C8 7404 MOV A,#0x4
\ 0000CA 12.... LCALL ?XSTACK_DISP0_8
\ 0000CD D0E0 POP A
\ 0000CF F0 MOVX @DPTR,A
55 SendData[5] = 1+1+1+DebugParamLen;//len;
\ 0000D0 90.... MOV DPTR,#DebugParamLen
\ 0000D3 E0 MOVX A,@DPTR
\ 0000D4 2403 ADD A,#0x3
\ 0000D6 C0E0 PUSH A
\ 0000D8 7405 MOV A,#0x5
\ 0000DA 12.... LCALL ?XSTACK_DISP0_8
\ 0000DD D0E0 POP A
\ 0000DF F0 MOVX @DPTR,A
56 for(i=0;i<=5;i++)cs+=SendData[i];
\ 0000E0 75..00 MOV ?V0 + 0,#0x0
\ ??WirelessSendData_23:
\ 0000E3 E5.. MOV A,?V0 + 0
\ 0000E5 C3 CLR C
\ 0000E6 9406 SUBB A,#0x6
\ 0000E8 501F JNC ??WirelessSendData_24
\ 0000EA 85.... MOV ?V0 + 2,?V0 + 0
\ 0000ED 75..00 MOV ?V0 + 3,#0x0
\ 0000F0 85..82 MOV DPL,?XSP + 0
\ 0000F3 85..83 MOV DPH,?XSP + 1
\ 0000F6 E582 MOV A,DPL
\ 0000F8 25.. ADD A,?V0 + 2
\ 0000FA F582 MOV DPL,A
\ 0000FC E583 MOV A,DPH
\ 0000FE 35.. ADDC A,?V0 + 3
\ 000100 F583 MOV DPH,A
\ 000102 E0 MOVX A,@DPTR
\ 000103 2E ADD A,R6
\ 000104 FE MOV R6,A
\ 000105 05.. INC ?V0 + 0
\ 000107 80DA SJMP ??WirelessSendData_23
57 SendData[6] = cs;//checksum;
\ ??WirelessSendData_24:
\ 000109 EE MOV A,R6
\ 00010A C0E0 PUSH A
\ 00010C 7406 MOV A,#0x6
\ 00010E 12.... LCALL ?XSTACK_DISP0_8
\ 000111 D0E0 POP A
\ 000113 F0 MOVX @DPTR,A
58
59 SendData[7] = DebugCode;
\ 000114 90.... MOV DPTR,#DebugCode
\ 000117 E0 MOVX A,@DPTR
\ 000118 C0E0 PUSH A
\ 00011A 7407 MOV A,#0x7
\ 00011C 12.... LCALL ?XSTACK_DISP0_8
\ 00011F D0E0 POP A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -