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

📄 mac.s51

📁 无线单片机cc2430简化协议的无线收发程序
💻 S51
📖 第 1 页 / 共 5 页
字号:
        MOV	R2,#((macInfo + 1) & 0xff)
        MOV	R3,#(((macInfo + 1) >> 8) & 0xff)
//   77   *p++ = (DEFAULTID >>8)&0xFF; //MAC_LONG_ADDR_BYTE1;
        MOV	A,#0x4
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        MOV	R2,DPL
        MOV	R3,DPH
//   78   *p++ = DEFAULTID & 0xFF; //MAC_LONG_ADDR_BYTE0;
        MOV	A,#0x3
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
//   79 
//   80 
//   81   	
//   82   //ntInitAddressMap();  //init the address map
//   83 #ifdef LRWPAN_COORDINATOR
//   84   mac_pib.depth = 0;
        MOV	A,#0x0
        MOV	DPTR,#(mac_pib + 21)
        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
        MOV	A,#-0x1
        MOV	DPTR,#(mac_pib + 33)
        MOVX	@DPTR,A
//   89   //other capability information
//   90   mac_pib.macCapInfo = 0;
        MOV	A,#0x0
        MOV	DPTR,#(mac_pib + 22)
        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);
        MOV	DPTR,#(mac_pib + 22)
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.1
        MOVX	@DPTR,A
//   96 #endif
//   97 #ifdef LRWPAN_ACMAIN_POWERED
//   98   LRWPAN_SET_CAPINFO_PWRSRC(mac_pib.macCapInfo);
        MOV	DPTR,#(mac_pib + 22)
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.2
        MOVX	@DPTR,A
//   99 #endif
//  100 #ifdef LRWPAN_RCVR_ON_WHEN_IDLE
//  101   LRWPAN_SET_CAPINFO_RONIDLE(mac_pib.macCapInfo);
        MOV	DPTR,#(mac_pib + 22)
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.3
        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);
        MOV	DPTR,#(mac_pib + 22)
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.7
        MOVX	@DPTR,A
//  108 
//  109 
//  110 }
        MOV	R7,#0x4
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock0
//  111 
//  112 //this assumes that phyInit, macInit has previously been called.
//  113 //turns on the radio
//  114 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  115 LRWPAN_STATUS_ENUM macInitRadio(void) {
macInitRadio:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function macInitRadio
        FUNCALL macInitRadio, halInitRadio
        LOCFRAME XSTACK, 13, STACK
        ARGFRAME XSTACK, 13, STACK
        FUNCALL macInitRadio, halSetRadioPANID
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        FUNCALL macInitRadio, halSetRadioShortAddr
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        MOV	A,#-0xb
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        ; Saved register size: 11
        ; Auto size: 0
//  116 
//  117   phy_pib.phyCurrentFrequency = LRWPAN_DEFAULT_FREQUENCY;
        MOV	A,#0x0
        MOV	DPTR,#phy_pib
        MOVX	@DPTR,A
//  118   phy_pib.phyCurrentChannel = LRWPAN_DEFAULT_START_CHANNEL;
        MOV	A,#0xb
        MOV	DPTR,#(phy_pib + 1)
        MOVX	@DPTR,A
//  119   if (phy_pib.phyCurrentChannel < 11){
        MOV	DPTR,#(phy_pib + 1)
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,#0xb
        JNC	??macInitRadio_0
//  120     mac_pib.macAckWaitDuration = SYMBOLS_TO_MACTICKS(120);
        MOV	DPTR,#__Constant_78
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	DPTR,#mac_pib
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
        SJMP	??macInitRadio_1
//  121   }
//  122   else {
//  123     mac_pib.macAckWaitDuration = SYMBOLS_TO_MACTICKS(54);
??macInitRadio_0:
        MOV	DPTR,#__Constant_36
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_X
        MOV	DPTR,#mac_pib
        MOV	R0,#?V0 + 0
        LCALL	?L_MOV_TO_X
//  124   }
//  125 
//  126   a_phy_service.args.phy_init_radio_args.radio_flags.bits.listen_mode = 0;
??macInitRadio_1:
        MOV	DPTR,#(a_phy_service + 1)
        MOVX	A,@DPTR
        ANL	A,#0xfe
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	A,@DPTR
        ANL	A,#0xff
        MOVX	@DPTR,A
//  127 #ifdef LRWPAN_COORDINATOR
//  128   a_phy_service.args.phy_init_radio_args.radio_flags.bits.pan_coordinator = 1;
        MOV	DPTR,#(a_phy_service + 1)
        MOVX	A,@DPTR
        ORL	A,#0x2
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	A,@DPTR
        ORL	A,#0x0
        MOVX	@DPTR,A
//  129 #else
//  130   a_phy_service.args.phy_init_radio_args.radio_flags.bits.pan_coordinator = 0;
//  131 #endif
//  132 
//  133 halInitRadio(phy_pib.phyCurrentFrequency,
//  134 		     phy_pib.phyCurrentChannel,
//  135 		     a_phy_service.args.phy_init_radio_args.radio_flags);
        ; Setup parameters for call to function halInitRadio
        MOV	DPTR,#(a_phy_service + 1)
        MOV	A,#0x2
        LCALL	?PUSH_XSTACK8_X
        CFI CFA_XSP16 add(XSP16, 13)
        MOV	DPTR,#(phy_pib + 1)
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	DPTR,#phy_pib
        MOVX	A,@DPTR
        MOV	R1,A
        LCALL	halInitRadio
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 11)
//  136 
//  137 
//  138 
//  139 #ifdef LRWPAN_USE_STATIC_PANID
//  140   halSetRadioPANID(LRWPAN_DEFAULT_PANID); //listen on this PANID
        ; Setup parameters for call to function halSetRadioPANID
        MOV	R2,#0x47
        MOV	R3,#0x13
        LCALL	halSetRadioPANID
//  141 #else
//  142   halSetRadioPANID(0xFFFF);      //broadcast
//  143 #endif
//  144   halSetRadioShortAddr(0xFFFE);  //non-broadcast, reserved
        ; Setup parameters for call to function halSetRadioShortAddr
        MOV	R2,#-0x2
        MOV	R3,#-0x1
        LCALL	halSetRadioShortAddr
//  145   return(a_phy_service.status);
        MOV	DPTR,#(a_phy_service + 3)
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	R7,#0x4
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock1
//  146 }
//  147 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  148 void macSetPANID(UINT16 panid){
macSetPANID:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function macSetPANID
        FUNCALL macSetPANID, halSetRadioPANID
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        MOV	A,#-0x8
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 0
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  149   mac_pib.macPANID = panid;
        MOV	DPTR,#(mac_pib + 18)
        MOV	A,R6
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R7
        MOVX	@DPTR,A
//  150   halSetRadioPANID(mac_pib.macPANID);
        ; Setup parameters for call to function halSetRadioPANID
        MOV	DPTR,#(mac_pib + 18)
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        LCALL	halSetRadioPANID
//  151 }
        MOV	R7,#0x1
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock2
//  152 
//  153 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  154 void macSetChannel(BYTE channel){
macSetChannel:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function macSetChannel
        FUNCALL macSetChannel, halSetChannel
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        MOV	A,#-0x8
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
//  155   phy_pib.phyCurrentChannel = channel;
        MOV	A,R6
        MOV	DPTR,#(phy_pib + 1)
        MOVX	@DPTR,A
//  156   halSetChannel(channel);
        ; Setup parameters for call to function halSetChannel
        MOV	A,R6
        MOV	R1,A
        LCALL	halSetChannel
//  157 }
        MOV	R7,#0x1
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock3
//  158 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  159 BYTE macGetChannel()
macGetChannel:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function macGetChannel
//  160 {
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        ; Saved register size: 2
        ; Auto size: 0
//  161   return phy_pib.phyCurrentChannel;
        MOV	DPTR,#(phy_pib + 1)
        MOVX	A,@DPTR
        MOV	R1,A
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-3
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-2
        RET
        CFI EndBlock cfiBlock4
//  162 }
//  163 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  164 void macSetShortAddr(UINT16 saddr) {
macSetShortAddr:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function macSetShortAddr
        FUNCALL macSetShortAddr, halSetRadioShortAddr
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        MOV	A,#-0x8
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 8)
        ; Saved register size: 8
        ; Auto size: 0
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  165 
//  166   halSetRadioShortAddr(saddr);
        ; Setup parameters for call to function halSetRadioShortAddr
        MOV	A,R6
        MOV	R2,A
        MOV	A,R7
        MOV	R3,A
        LCALL	halSetRadioShortAddr
//  167 }
        MOV	R7,#0x1
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock5
//  168 

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//  169 unsigned char gMacDSN=0;
gMacDSN:
        DS 1

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  170 void MACPutHeader(NODE_INFO *dest, BYTE frameCON)
MACPutHeader:
        CFI Block cfiBlock6 Using cfiCommon0
        CFI Function MACPutHeader
//  171 {
        FUNCALL MACPutHeader, halGetProcessorIEEEAddress_ASC
        LOCFRAME XSTACK, 13, STACK
        ARGFRAME XSTACK, 13, STACK
        MOV	A,#-0xd
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 13)
        ; Saved register size: 13
        ; Auto size: 0
        MOV	?V0 + 1,R1
//  172   BYTE c;
//  173   BYTE dstmode, srcmode;
//  174 
//  175     //DEBUG_STRING(DBG_TX,"macTxData()-header\n");
//  176 
//  177 	a_mac_tx_data.fcflsb = frameCON;
        MOV	A,?V0 + 1
        MOV	DPTR,#(a_mac_tx_data + 14)
        MOVX	@DPTR,A
//  178     a_mac_tx_data.fcfmsb = LRWPAN_FCF_DSTMODE_SADDR|LRWPAN_FCF_SRCMODE_NOADDR;
        MOV	A,#0x8
        MOV	DPTR,#(a_mac_tx_data + 15)
        MOVX	@DPTR,A
//  179 	a_mac_tx_data.DestAddr.saddr = LRWPAN_BCAST_PANID;
        MOV	DPTR,#(a_mac_tx_data + 2)
        MOV	A,#-0x1
        MOVX	@DPTR,A

⌨️ 快捷键说明

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