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

📄 halstack.s51

📁 无线单片机cc2430简化协议的无线收发程序
💻 S51
📖 第 1 页 / 共 5 页
字号:
//  188   buf[1] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+1);
        MOV	DPTR,#-0x7
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        MOVX	@DPTR,A
//  189   buf[2] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+2);
        MOV	DPTR,#-0x6
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  190   buf[3] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+3);
        MOV	DPTR,#-0x5
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  191   buf[4] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+4);
        MOV	DPTR,#-0x4
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  192   buf[5] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+5);
        MOV	DPTR,#-0x3
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  193   buf[6] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+6);
        MOV	DPTR,#-0x2
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  194   buf[7] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY+7);
        MOV	DPTR,#-0x1
        CLR	A
        MOVC	A,@A+DPTR
        MOV	DPL,R2
        MOV	DPH,R3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	@DPTR,A
//  195  #if (CC2430_FLASH_SIZE == 128)
//  196   //resore old bank settings
//  197   MEMCTR = bank;
        MOV	0xc7,R4
//  198 #endif
//  199 }
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-3
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-2
        RET
        CFI EndBlock cfiBlock12
//  200 
//  201 
//  202 
//  203 
//  204 
//  205 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  206 void halSetRadioIEEEAddress(void) {
halSetRadioIEEEAddress:
        CFI Block cfiBlock13 Using cfiCommon0
        CFI Function halSetRadioIEEEAddress
        FUNCALL halSetRadioIEEEAddress, halGetProcessorIEEEAddress
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 8, STACK
        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: 8
        MOV	A,#-0x8
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 8)
//  207   BYTE buf[8];
//  208   halGetProcessorIEEEAddress(buf);
        ; Setup parameters for call to function halGetProcessorIEEEAddress
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R2,DPL
        MOV	R3,DPH
        LCALL	halGetProcessorIEEEAddress
//  209   IEEE_ADDR0 = buf[0];
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20bd
        MOVX	@DPTR,A
//  210   IEEE_ADDR1 = buf[1];
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20bc
        MOVX	@DPTR,A
//  211   IEEE_ADDR2 = buf[2];
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20bb
        MOVX	@DPTR,A
//  212   IEEE_ADDR3 = buf[3];
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20ba
        MOVX	@DPTR,A
//  213   IEEE_ADDR4 = buf[4];
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20b9
        MOVX	@DPTR,A
//  214   IEEE_ADDR5 = buf[5];
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20b8
        MOVX	@DPTR,A
//  215   IEEE_ADDR6 = buf[6];
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20b7
        MOVX	@DPTR,A
//  216   IEEE_ADDR7 = buf[7];
        MOV	A,#0x7
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20b6
        MOVX	@DPTR,A
//  217 }
        MOV	A,#0x8
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 XSP16+0
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-3
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-2
        RET
        CFI EndBlock cfiBlock13
//  218 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  219 void halSetRadioPANID(UINT16 panid){
halSetRadioPANID:
        CFI Block cfiBlock14 Using cfiCommon0
        CFI Function halSetRadioPANID
        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
//  220   PANIDL = (BYTE) (panid);
        MOV	A,R2
        MOV	DPTR,#-0x20b4
        MOVX	@DPTR,A
//  221   PANIDH = (BYTE) (panid>>8);
        MOV	A,R3
        MOV	R1,A
        MOV	A,R1
        MOV	DPTR,#-0x20b5
        MOVX	@DPTR,A
//  222  }
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-3
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-2
        RET
        CFI EndBlock cfiBlock14
//  223 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  224 void halSetRadioShortAddr(SADDR saddr){
halSetRadioShortAddr:
        CFI Block cfiBlock15 Using cfiCommon0
        CFI Function halSetRadioShortAddr
        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
//  225   SHORTADDRL = (BYTE) (saddr);
        MOV	A,R2
        MOV	DPTR,#-0x20b2
        MOVX	@DPTR,A
//  226   SHORTADDRH = (BYTE) (saddr>>8);
        MOV	A,R3
        MOV	R1,A
        MOV	A,R1
        MOV	DPTR,#-0x20b3
        MOVX	@DPTR,A
//  227 }
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-3
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-2
        RET
        CFI EndBlock cfiBlock15
//  228 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  229 void halSetTxPower(BYTE val)
halSetTxPower:
        CFI Block cfiBlock16 Using cfiCommon0
        CFI Function halSetTxPower
//  230 {
        MOV	A,#-0x9
        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 V1 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 8
        MOV	A,#-0x8
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 17)
//  231     //val:0~7 ;0-min      7-max
//  232      BYTE VALTAB[]={0xE3,0xE7,0xEB,0xEF,0xF3,0xF7,0xFB,0xFF};
        MOV	DPTR,#`?<Constant {227, 231, 235, 239, 243, 247, 251,`
        PUSH	DPL
        CFI CFA_SP SP+-1
        PUSH	DPH
        CFI CFA_SP SP+-2
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        POP	DPH
        CFI CFA_SP SP+-1
        POP	DPL
        CFI CFA_SP SP+0
        MOV	A,#0x8
        LCALL	?MOVE_LONG8_XDATA_XDATA
//  233     if(val>7)return;
        MOV	A,R1
        CLR	C
        SUBB	A,#0x8
        JNC	??halSetTxPower_0
//  234 	TXCTRLL=VALTAB[val];
        MOV	?V0 + 0,R1
        MOV	?V0 + 1,#0x0
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	A,DPL
        ADD	A,?V0 + 0
        MOV	DPL,A
        MOV	A,DPH
        ADDC	A,?V0 + 1
        MOV	DPH,A
        MOVX	A,@DPTR
        MOV	DPTR,#-0x20f5
        MOVX	@DPTR,A
//  235 }
??halSetTxPower_0:
        MOV	A,#0x8
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 9)
        MOV	R7,#0x2
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock16
//  236 
//  237 

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  238 LRWPAN_STATUS_ENUM halInitRadio(PHY_FREQ_ENUM frequency, BYTE channel, RADIO_FLAGS radio_flags)
halInitRadio:
        CFI Block cfiBlock17 Using cfiCommon0
        CFI Function halInitRadio
//  239 {
        FUNCALL halInitRadio, conPrintROMString_func
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL halInitRadio, halSetRadioIEEEFrequency
        LOCFRAME XSTACK, 8, STACK
        ARGFRAME XSTACK, 8, STACK
        FUNCALL halInitRadio, halSetRadioIEEEAddress
        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
        MOV	A,R2
        MOV	R7,A
//  240   LRWPAN_STATUS_ENUM status;
//  241   DEBUG_STRING(DBG_TX,"halInitRadio()\n");
        MOV	DPTR,#debug_level
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,#0x2
        JC	??halInitRadio_0
        ; Setup parameters for call to function conPrintROMString_func
        MOV	R2,#(??xxxxromstr & 0xff)
        MOV	R3,#((??xxxxromstr >> 8) & 0xff)
        LCALL	conPrintROMString_func
//  242 
//  243   // Setting the frequency
//  244   status = halSetRadioIEEEFrequency(frequency, channel);
??halInitRadio_0:
        ; Setup parameters for call to function halSetRadioIEEEFrequency
        MOV	A,R7
        MOV	R2,A
        MOV	A,R6
        MOV	R1,A
        LCALL	halSetRadioIEEEFrequency
        MOV	A,R1
        MOV	?V0 + 0,A
//  245   if (status != LRWPAN_STATUS_SUCCESS) return(status);
        MOV	A,?V0 + 0
        JZ	??halInitRadio_1
        MOV	R1,?V0 + 0
        LJMP	??halInitRadio_2
//  246 
//  247   //turning on power to analog part of radio and waiting for voltage regulator.
//  248   RFPWR = 0x04;
??halInitRadio_1:
        MOV	A,#0x4
        MOV	DPTR,#-0x20e9
        MOVX	@DPTR,A
//  249   while((RFPWR & 0x10)){}
??halInitRadio_3:
        MOV	DPTR,#-0x20e9
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.4
        JC	??halInitRadio_3
//  250   //radio_flags.listen_mode=1; //debug
//  251   if (radio_flags.bits.listen_mode) {
        MOV	A,#0x8
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        ANL	A,#0x1
        MOV	C,0xE0 /* A   */.0
        JNC	??halInitRadio_4
//  252     //corresponds to promiscuous modes
//  253     //radio accepts all packets, the HUSSY!
//  254     MDMCTRL0H &= ~ADR_DECODE;    //no address decode
        MOV	DPTR,#-0x20fe
        MOVX	A,@DPTR
        CLR	0xE0 /* A   */.3
        MOVX	@DPTR,A
//  255     MDMCTRL0L &= ~AUTO_ACK;       //no auto ack
        MOV	DPTR,#-0x20fd
        MOVX	A,@DPTR
        CLR	0xE0 /* A   */.4
        MOVX	@DPTR,A
        SJMP	??halInitRadio_5
//  256   } else {
//  257     // Turning on Address Decoding
//  258     MDMCTRL0H |= ADR_DECODE;
??halInitRadio_4:
        MOV	DPTR,#-0x20fe
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.3
        MOVX	@DPTR,A
//  259     //enable auto_ack
//  260     MDMCTRL0L |= AUTO_ACK;
        MOV	DPTR,#-0x20fd
        MOVX	A,@DPTR
        SETB	0xE0 /* A   */.4
        MOVX	@DPTR,A
//  261   }
//  262   local_radio_flags = radio_flags;  //save this for later

⌨️ 快捷键说明

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