📄 phy.lst
字号:
##############################################################################
# #
# IAR 8051 C/C++ Compiler V7.20H/W32 11/Dec/2008 13:41:49 #
# 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\phy.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\phy.c #
# List file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\List\phy.lst #
# Object file = D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
# o\Debug\Obj\phy.r51 #
# #
# #
##############################################################################
D:\zigbee\演示程序\简化协议的无线收发演示\demo_pro\src\phy.c
1
2 #include "compiler.h"
3 #include "lrwpan_config.h" //user configurations
4 #include "lrwpan_common_types.h" //types common acrosss most files
5 #include "ieee_lrwpan_defs.h"
6 #include "hal.h"
7 #include "halStack.h"
8 #include "console.h"
9 #include "phy.h"
10
11
12 #include "evboard.h"
13
14
15
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
16 PHY_PIB phy_pib;
\ phy_pib:
\ 000000 DS 17
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
17 PHY_SERVICE a_phy_service;
\ a_phy_service:
\ 000000 DS 4
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
18 PHY_STATE_ENUM phyState;
\ phyState:
\ 000000 DS 1
19
20
\ In segment XDATA_Z, align 1, keep-with-next
\ 000000 REQUIRE __INIT_XDATA_Z
21 BYTE tmpTxBuff[LRWPAN_MAX_FRAME_SIZE];
\ tmpTxBuff:
\ 000000 DS 127
22
\ In segment NEAR_CODE, align 1, keep-with-next
23 void phyInit(void ) {
\ phyInit:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
24 phyState = PHY_STATE_IDLE;
\ 000004 7400 MOV A,#0x0
\ 000006 90.... MOV DPTR,#phyState
\ 000009 F0 MOVX @DPTR,A
25 phy_pib.flags.val = 0;
\ 00000A 7400 MOV A,#0x0
\ 00000C 90.... MOV DPTR,#(phy_pib + 8)
\ 00000F F0 MOVX @DPTR,A
26 phy_pib.flags.bits.txFinished=1;
\ 000010 90.... MOV DPTR,#(phy_pib + 8)
\ 000013 E0 MOVX A,@DPTR
\ 000014 4401 ORL A,#0x1
\ 000016 F0 MOVX @DPTR,A
\ 000017 A3 INC DPTR
\ 000018 E0 MOVX A,@DPTR
\ 000019 4400 ORL A,#0x0
\ 00001B F0 MOVX @DPTR,A
27 }
\ 00001C D083 POP DPH
\ 00001E D082 POP DPL
\ 000020 22 RET
28
\ In segment NEAR_CODE, align 1, keep-with-next
29 void phyRxCallback(void)
\ phyRxCallback:
30 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
31 }
\ 000000 22 RET
32
\ In segment NEAR_CODE, align 1, keep-with-next
33 void phyTxStartCallBack(void)
\ phyTxStartCallBack:
34 {
\ 000000 74F5 MOV A,#-0xb
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 11
\ 000005 ; Auto size: 0
35 phy_pib.txStartTime = halGetMACTimer();
\ 000005 ; Setup parameters for call to function halGetMACTimer
\ 000005 12.... LCALL halGetMACTimer
\ 000008 8A.. MOV ?V0 + 0,R2
\ 00000A 8B.. MOV ?V0 + 1,R3
\ 00000C 8C.. MOV ?V0 + 2,R4
\ 00000E 8D.. MOV ?V0 + 3,R5
\ 000010 90.... MOV DPTR,#(phy_pib + 10)
\ 000013 78.. MOV R0,#?V0 + 0
\ 000015 12.... LCALL ?L_MOV_TO_X
36 }
\ 000018 7F04 MOV R7,#0x4
\ 00001A 02.... LJMP ?FUNC_LEAVE_XDATA
37
38
\ In segment NEAR_CODE, align 1, keep-with-next
39 void phyFSM(void) {
\ phyFSM:
\ 000000 74F1 MOV A,#-0xf
\ 000002 12.... LCALL ?FUNC_ENTER_XDATA
\ 000005 ; Saved register size: 15
\ 000005 ; Auto size: 0
40
41 switch (phyState)
\ 000005 90.... MOV DPTR,#phyState
\ 000008 E0 MOVX A,@DPTR
\ 000009 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for phyFSM>_0`:
\ 00000C 01 DB 1
\ 00000D 01 DB 1
\ 00000E .... DW ??phyFSM_0
\ 000010 .... DW ??phyFSM_1
\ 000012 .... DW ??phyFSM_2
42 {
43 case PHY_STATE_IDLE:
44 break;
45
46 case PHY_STATE_COMMAND_START:
47 switch(a_phy_service.cmd)
\ ??phyFSM_1:
\ 000014 90.... MOV DPTR,#a_phy_service
\ 000017 E0 MOVX A,@DPTR
\ 000018 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for phyFSM>_1`:
\ 00001B 02 DB 2
\ 00001C 00 DB 0
\ 00001D .... DW ??phyFSM_0
\ 00001F .... DW ??phyFSM_3
48 {
49 case LRWPAN_SVC_PHY_TX_DATA:
50 phy_pib.flags.bits.txFinished = 0;
\ ??phyFSM_3:
\ 000021 90.... MOV DPTR,#(phy_pib + 8)
\ 000024 E0 MOVX A,@DPTR
\ 000025 54FE ANL A,#0xfe
\ 000027 F0 MOVX @DPTR,A
\ 000028 A3 INC DPTR
\ 000029 E0 MOVX A,@DPTR
\ 00002A 54FF ANL A,#0xff
\ 00002C F0 MOVX @DPTR,A
51
52 a_phy_service.status =halSendPacket(phy_pib.currentTxFlen,tmpTxBuff);
\ 00002D ; Setup parameters for call to function halSendPacket
\ 00002D 7A.. MOV R2,#(tmpTxBuff & 0xff)
\ 00002F 7B.. MOV R3,#((tmpTxBuff >> 8) & 0xff)
\ 000031 90.... MOV DPTR,#(phy_pib + 16)
\ 000034 E0 MOVX A,@DPTR
\ 000035 F9 MOV R1,A
\ 000036 12.... LCALL halSendPacket
\ 000039 E9 MOV A,R1
\ 00003A 90.... MOV DPTR,#(a_phy_service + 3)
\ 00003D F0 MOVX @DPTR,A
53 if (a_phy_service.status == LRWPAN_STATUS_SUCCESS)
\ 00003E 90.... MOV DPTR,#(a_phy_service + 3)
\ 000041 E0 MOVX A,@DPTR
\ 000042 7009 JNZ ??phyFSM_4
54 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -