⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac.lst

📁 无线单片机cc2430简化协议的无线收发程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR 8051 C/C++ Compiler V7.20H/W32                   11/Dec/2008  13:41:48 #
# 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\mac.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\mac.c                                       #
#    List file          =  D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
#                          o\Debug\List\mac.lst                              #
#    Object file        =  D:\zigbee\演示程序\简化协议的无线收发演示\demo_pr #
#                          o\Debug\Obj\mac.r51                               #
#                                                                            #
#                                                                            #
##############################################################################

D:\zigbee\演示程序\简化协议的无线收发演示\demo_pro\src\mac.c
      1          
      2          /*
      3            V0.1 Initial Release   10/July/2006  RBR
      4          
      5          */
      6          
      7          
      8          #include "compiler.h"
      9          #include "lrwpan_config.h"         //user configurations
     10          #include "lrwpan_common_types.h"   //types common acrosss most files
     11          #include "ieee_lrwpan_defs.h"
     12          #include "console.h"
     13          #include "hal.h"
     14          #include "halstack.h"
     15          #include "phy.h"
     16          #include "mac.h"
     17          
     18          #include "sendpack.h"
     19          //#include "nwk.h"
     20          
     21          //#include "neighbor.h"

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     22          SUB_MAC_FRAME submacCurrentFrame;
   \                     submacCurrentFrame:
   \   000000                DS 62
     23          /*
     24          typedef enum _MAC_RXSTATE_ENUM {
     25            MAC_RXSTATE_IDLE,
     26            MAC_RXSTATE_NWK_HANDOFF,
     27            MAC_RXSTATE_CMD_PENDING
     28          } MAC_RXSTATE_ENUM;*/
     29          //
     30          //static MAC_RXSTATE_ENUM macRxState;
     31          

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     32          MAC_PIB mac_pib;
   \                     mac_pib:
   \   000000                DS 551
     33          //MAC_SERVICE a_mac_service;
     34          //MAC_STATE_ENUM macState;
     35          

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     36          NODE_INFO   macInfo;
   \                     macInfo:
   \   000000                DS 13
     37          
     38          
     39          //there can only be one TX in progress at a time, so
     40          //a_mac_tx_data contains the arguments for that TX.

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     41          MAC_TX_DATA a_mac_tx_data;
   \                     a_mac_tx_data:
   \   000000                DS 18
     42          
     43          //this is used for parsing of current packet.

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     44          MAC_RX_DATA a_mac_rx_data;
   \                     a_mac_rx_data:
   \   000000                DS 25
     45          

   \                                 In segment XDATA_Z, align 1, keep-with-next
   \   000000                REQUIRE __INIT_XDATA_Z
     46          LRWPAN_STATUS_ENUM macTxFSM_status;
   \                     macTxFSM_status:
   \   000000                DS 1
     47          
     48          
     49          //locals
     50          //static UINT32 mac_utility_timer;   //utility timer
     51          
     52          //local functions
     53          //static void macTxData(void);
     54          static void macParseHdr(void);
     55          static void macRxFSM(void);
     56          
     57          
     58          
     59          
     60          //does not turn on radio.

   \                                 In segment NEAR_CODE, align 1, keep-with-next
     61          void macInit(void){
   \                     macInit:
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
     62          
     63            BYTE *p;
     64            //macState = MAC_STATE_IDLE;
     65            //macRxState = MAC_RXSTATE_IDLE;
     66            mac_pib.flags.val = 0;
   \   000005   90....       MOV     DPTR,#__Constant_0
   \   000008   78..         MOV     R0,#?V0 + 0
   \   00000A   12....       LCALL   ?L_MOV_X
   \   00000D   90....       MOV     DPTR,#(mac_pib + 4)
   \   000010   78..         MOV     R0,#?V0 + 0
   \   000012   12....       LCALL   ?L_MOV_TO_X
     67            mac_pib.rxTail = 0;
   \   000015   7400         MOV     A,#0x0
   \   000017   90....       MOV     DPTR,#(mac_pib + 39)
   \   00001A   F0           MOVX    @DPTR,A
     68            mac_pib.rxHead = 0;
   \   00001B   7400         MOV     A,#0x0
   \   00001D   90....       MOV     DPTR,#(mac_pib + 40)
   \   000020   F0           MOVX    @DPTR,A
     69            mac_pib.macPANID = LRWPAN_DEFAULT_PANID;
   \   000021   90....       MOV     DPTR,#(mac_pib + 18)
   \   000024   7447         MOV     A,#0x47
   \   000026   F0           MOVX    @DPTR,A
   \   000027   A3           INC     DPTR
   \   000028   7413         MOV     A,#0x13
   \   00002A   F0           MOVX    @DPTR,A
     70            //mac_pib.macMaxAckRetries = aMaxFrameRetries;
     71          
     72            macInfo.panID.Val=0xffff;
   \   00002B   90....       MOV     DPTR,#(macInfo + 11)
   \   00002E   74FF         MOV     A,#-0x1
   \   000030   F0           MOVX    @DPTR,A
   \   000031   A3           INC     DPTR
   \   000032   74FF         MOV     A,#-0x1
   \   000034   F0           MOVX    @DPTR,A
     73            macInfo.panID.Val=0xffff;
   \   000035   90....       MOV     DPTR,#(macInfo + 11)
   \   000038   74FF         MOV     A,#-0x1
   \   00003A   F0           MOVX    @DPTR,A
   \   00003B   A3           INC     DPTR
   \   00003C   74FF         MOV     A,#-0x1
   \   00003E   F0           MOVX    @DPTR,A
     74          
     75          
     76            p = (BYTE*) &macInfo.longAddr;// Initialize the MAC address
   \   00003F   7A..         MOV     R2,#((macInfo + 1) & 0xff)
   \   000041   7B..         MOV     R3,#(((macInfo + 1) >> 8) & 0xff)
     77            *p++ = (DEFAULTID >>8)&0xFF; //MAC_LONG_ADDR_BYTE1;
   \   000043   7404         MOV     A,#0x4
   \   000045   8A82         MOV     DPL,R2
   \   000047   8B83         MOV     DPH,R3
   \   000049   F0           MOVX    @DPTR,A
   \   00004A   8A82         MOV     DPL,R2
   \   00004C   8B83         MOV     DPH,R3
   \   00004E   A3           INC     DPTR
   \   00004F   AA82         MOV     R2,DPL
   \   000051   AB83         MOV     R3,DPH
     78            *p++ = DEFAULTID & 0xFF; //MAC_LONG_ADDR_BYTE0;
   \   000053   7403         MOV     A,#0x3
   \   000055   8A82         MOV     DPL,R2
   \   000057   8B83         MOV     DPH,R3
   \   000059   F0           MOVX    @DPTR,A
     79          
     80          
     81            	
     82            //ntInitAddressMap();  //init the address map
     83          #ifdef LRWPAN_COORDINATOR
     84            mac_pib.depth = 0;
   \   00005A   7400         MOV     A,#0x0
   \   00005C   90....       MOV     DPTR,#(mac_pib + 21)
   \   00005F   F0           MOVX    @DPTR,A
     85          #else
     86            mac_pib.depth = 1; //depth will be at least one
     87          #endif
     88            mac_pib.bcnDepth = 0xFF; //remembers depth of node that responded to beacon
   \   000060   74FF         MOV     A,#-0x1
   \   000062   90....       MOV     DPTR,#(mac_pib + 33)
   \   000065   F0           MOVX    @DPTR,A
     89            //other capability information
     90            mac_pib.macCapInfo = 0;
   \   000066   7400         MOV     A,#0x0
   \   000068   90....       MOV     DPTR,#(mac_pib + 22)
   \   00006B   F0           MOVX    @DPTR,A
     91          #ifdef LRWPAN_ALT_COORDINATOR     //not supported, included for completeness
     92            LRWPAN_SET_CAPINFO_ALTPAN(mac_pib.macCapInfo);
     93          #endif
     94          #ifdef LRWPAN_FFD
     95            LRWPAN_SET_CAPINFO_DEVTYPE(mac_pib.macCapInfo);
   \   00006C   90....       MOV     DPTR,#(mac_pib + 22)
   \   00006F   E0           MOVX    A,@DPTR
   \   000070   D2E1         SETB    0xE0 /* A   */.1
   \   000072   F0           MOVX    @DPTR,A
     96          #endif
     97          #ifdef LRWPAN_ACMAIN_POWERED
     98            LRWPAN_SET_CAPINFO_PWRSRC(mac_pib.macCapInfo);
   \   000073   90....       MOV     DPTR,#(mac_pib + 22)
   \   000076   E0           MOVX    A,@DPTR
   \   000077   D2E2         SETB    0xE0 /* A   */.2
   \   000079   F0           MOVX    @DPTR,A
     99          #endif
    100          #ifdef LRWPAN_RCVR_ON_WHEN_IDLE
    101            LRWPAN_SET_CAPINFO_RONIDLE(mac_pib.macCapInfo);
   \   00007A   90....       MOV     DPTR,#(mac_pib + 22)
   \   00007D   E0           MOVX    A,@DPTR
   \   00007E   D2E3         SETB    0xE0 /* A   */.3
   \   000080   F0           MOVX    @DPTR,A
    102          #endif
    103          #ifdef LRWPAN_SECURITY_CAPABLE
    104            LRWPAN_SET_CAPINFO_SECURITY(mac_pib.macCapInfo);
    105          #endif
    106            //always allocate a short address
    107            LRWPAN_SET_CAPINFO_ALLOCADDR(mac_pib.macCapInfo);
   \   000081   90....       MOV     DPTR,#(mac_pib + 22)
   \   000084   E0           MOVX    A,@DPTR
   \   000085   D2E7         SETB    0xE0 /* A   */.7
   \   000087   F0           MOVX    @DPTR,A
    108          
    109          
    110          }
   \   000088   7F04         MOV     R7,#0x4
   \   00008A   02....       LJMP    ?FUNC_LEAVE_XDATA
    111          
    112          //this assumes that phyInit, macInit has previously been called.
    113          //turns on the radio
    114          

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    115          LRWPAN_STATUS_ENUM macInitRadio(void) {
   \                     macInitRadio:
   \   000000   74F5         MOV     A,#-0xb
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 11
   \   000005                ; Auto size: 0
    116          
    117            phy_pib.phyCurrentFrequency = LRWPAN_DEFAULT_FREQUENCY;
   \   000005   7400         MOV     A,#0x0
   \   000007   90....       MOV     DPTR,#phy_pib
   \   00000A   F0           MOVX    @DPTR,A
    118            phy_pib.phyCurrentChannel = LRWPAN_DEFAULT_START_CHANNEL;
   \   00000B   740B         MOV     A,#0xb
   \   00000D   90....       MOV     DPTR,#(phy_pib + 1)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -