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

📄 ref_node.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
    249             parametersReceived = TRUE;
   \                     ??SetupRefNode_4:
   \   00006F   7401         MOV     A,#0x1
   \   000071   90....       MOV     DPTR,#parametersReceived
   \   000074   F0           MOVX    @DPTR,A
    250          }
   \   000075   FF           MOV     R7,A
   \   000076   02....       LJMP    ?BANKED_LEAVE_XDATA
    251          
    252          /******************************************************************************
    253          *
    254          * This function handle sleep timer interrupts for reference node.
    255          ******************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    256          void ST_IRQ_RefNode(void)
   \                     ST_IRQ_RefNode:
    257          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    258             INT_SETFLAG(INUM_ST, INT_CLR);
   \   000004   C2C7         CLR     0xc0.7
    259          
    260             switch (refNodeState){
   \   000006   90....       MOV     DPTR,#refNodeState
   \   000009   E0           MOVX    A,@DPTR
   \   00000A   12....       LCALL   ?UC_SWITCH_DENSE
   \                     `?<Jumptable for ST_IRQ_RefNode>_0`:
   \   00000D   00           DB        0
   \   00000E   02           DB        2
   \   00000F   ....         DW        ??ST_IRQ_RefNode_0
   \   000011   ....         DW        ??ST_IRQ_RefNode_1
   \   000013   ....         DW        ??ST_IRQ_RefNode_0
   \   000015   ....         DW        ??ST_IRQ_RefNode_2
    261             case AWAKE_STATE:
    262                refNodeState = SLEEP_STATE;
   \                     ??ST_IRQ_RefNode_1:
   \   000017   7401         MOV     A,#0x1
   \   000019   90....       MOV     DPTR,#refNodeState
   \   00001C   F0           MOVX    @DPTR,A
    263                AddToSleepTimer(REF_NODE_SLEEP_TIME);
   \   00001D                ; Setup parameters for call to function AddToSleepTimer
   \   00001D   7AEE         MOV     R2,#-0x12
   \   00001F   7B02         MOV     R3,#0x2
   \                     ??ST_IRQ_RefNode_3:
   \   000021   90....       MOV     DPTR,#(AddToSleepTimer & 0xffff)
   \   000024   74..         MOV     A,#((AddToSleepTimer >> 16) & 0xff)
   \   000026   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000029   8031         SJMP    ??ST_IRQ_RefNode_4
    264                break;
    265             case SLEEP_STATE:
    266                refNodeState = AWAKE_STATE;
   \                     ??ST_IRQ_RefNode_0:
   \   00002B   E4           CLR     A
   \   00002C   90....       MOV     DPTR,#refNodeState
   \   00002F   F0           MOVX    @DPTR,A
    267                AddToSleepTimer(REF_NODE_POWER_UP_TIME);
   \   000030                ; Setup parameters for call to function AddToSleepTimer
   \   000030   7AFA         MOV     R2,#-0x6
   \   000032   FB           MOV     R3,A
   \   000033   80EC         SJMP    ??ST_IRQ_RefNode_3
    268                break;
    269             case BLINK_LED_STATE:
    270                LED1 ^= 1;
   \                     ??ST_IRQ_RefNode_2:
   \   000035   639001       XRL     0x90,#0x1
   \   000038   E590         MOV     A,0x90
    271                ledBlinkCounter++;
   \   00003A   90....       MOV     DPTR,#ledBlinkCounter
   \   00003D   E0           MOVX    A,@DPTR
   \   00003E   04           INC     A
   \   00003F   F0           MOVX    @DPTR,A
    272                AddToSleepTimer(LED_BLINK_TIME);
   \   000040                ; Setup parameters for call to function AddToSleepTimer
   \   000040   7A64         MOV     R2,#0x64
   \   000042   7B00         MOV     R3,#0x0
   \   000044   90....       MOV     DPTR,#(AddToSleepTimer & 0xffff)
   \   000047   74..         MOV     A,#((AddToSleepTimer >> 16) & 0xff)
   \   000049   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    273                if(ledBlinkCounter > NBR_OF_LED_BLINK * 2){
   \   00004C   90....       MOV     DPTR,#ledBlinkCounter
   \   00004F   E0           MOVX    A,@DPTR
   \   000050   C3           CLR     C
   \   000051   9415         SUBB    A,#0x15
   \   000053   4007         JC      ??ST_IRQ_RefNode_4
    274                   refNodeState = AWAKE_STATE;
   \   000055   E4           CLR     A
   \   000056   90....       MOV     DPTR,#refNodeState
   \   000059   F0           MOVX    @DPTR,A
    275                   LED1 = LED_OFF;
   \   00005A   D290         SETB    0x90.0
    276                }
    277                break;
    278             default:
    279                refNodeState = AWAKE_STATE;
    280                AddToSleepTimer(REF_NODE_POWER_UP_TIME);
    281                break;
    282             }
    283          }
   \                     ??ST_IRQ_RefNode_4:
   \   00005C   D083         POP     DPH
   \   00005E   D082         POP     DPL
   \   000060   02....       LJMP    ?BRET
    284          
    285          /******************************************************************************
    286          *
    287          * Function which sets up an DMA transfer to the FLASH writing interface
    288          ******************************************************************************/

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    289          __near_func void setUpDmaToFlash(void){
   \                     setUpDmaToFlash:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    290             SET_WORD(dmaChannel.SRCADDRH, dmaChannel.SRCADDRL, flashEntries); // The start address of the segment
   \   000004   74..         MOV     A,#((flashEntries >> 8) & 0xff)
   \   000006   90....       MOV     DPTR,#dmaChannel
   \   000009   F0           MOVX    @DPTR,A
   \   00000A   74..         MOV     A,#(flashEntries & 0xff)
   \   00000C   90....       MOV     DPTR,#(dmaChannel + 1)
   \   00000F   F0           MOVX    @DPTR,A
    291             SET_WORD(dmaChannel.DESTADDRH, dmaChannel.DESTADDRL, &X_FWDATA);  // Input of the AES module
   \   000010   74DF         MOV     A,#-0x21
   \   000012   90....       MOV     DPTR,#(dmaChannel + 2)
   \   000015   F0           MOVX    @DPTR,A
   \   000016   74AF         MOV     A,#-0x51
   \   000018   90....       MOV     DPTR,#(dmaChannel + 3)
   \   00001B   F0           MOVX    @DPTR,A
    292             SET_WORD(dmaChannel.LENH, dmaChannel.LENL, 16);                   // Setting the length of the transfer (bytes)
   \   00001C   90....       MOV     DPTR,#(dmaChannel + 4)
   \   00001F   E0           MOVX    A,@DPTR
   \   000020   54E0         ANL     A,#0xe0
   \   000022   F0           MOVX    @DPTR,A
   \   000023   90....       MOV     DPTR,#(dmaChannel + 5)
   \   000026   E0           MOVX    A,@DPTR
   \   000027   7410         MOV     A,#0x10
   \   000029   F0           MOVX    @DPTR,A
    293             dmaChannel.VLEN      = VLEN_USE_LEN;      // Using the length field
   \   00002A   90....       MOV     DPTR,#(dmaChannel + 4)
   \   00002D   E0           MOVX    A,@DPTR
   \   00002E   541F         ANL     A,#0x1f
   \   000030   F0           MOVX    @DPTR,A
    294             dmaChannel.PRIORITY  = PRI_HIGH;          // High priority
   \   000031   90....       MOV     DPTR,#(dmaChannel + 7)
   \   000034   E0           MOVX    A,@DPTR
   \   000035   54FC         ANL     A,#0xfc
   \   000037   4402         ORL     A,#0x2
   \   000039   F0           MOVX    @DPTR,A
    295             dmaChannel.M8        = M8_USE_8_BITS;     // Transferring all 8 bits in each byte.
   \   00003A   E0           MOVX    A,@DPTR
   \   00003B   C2E2         CLR     0xE0 /* A   */.2
   \   00003D   F0           MOVX    @DPTR,A
    296             dmaChannel.IRQMASK   = FALSE;             // The DMA complete interrupt flag is set at completion.
   \   00003E   E0           MOVX    A,@DPTR
   \   00003F   C2E3         CLR     0xE0 /* A   */.3
   \   000041   F0           MOVX    @DPTR,A
    297             dmaChannel.DESTINC   = DESTINC_0;         // The destination address is constant
   \   000042   E0           MOVX    A,@DPTR
   \   000043   54CF         ANL     A,#0xcf
   \   000045   F0           MOVX    @DPTR,A
    298             dmaChannel.SRCINC    = SRCINC_1;          // The address for data fetch is inremented by 1 byte
   \   000046   E0           MOVX    A,@DPTR
   \   000047   543F         ANL     A,#0x3f
   \   000049   4440         ORL     A,#0x40
   \   00004B   F0           MOVX    @DPTR,A
    299             dmaChannel.TRIG      = DMATRIG_FLASH;     // Setting the FLASH module to generate the DMA trigger
   \   00004C   90....       MOV     DPTR,#(dmaChannel + 6)
   \   00004F   E0           MOVX    A,@DPTR
   \   000050   54E0         ANL     A,#0xe0
   \   000052   4412         ORL     A,#0x12
   \   000054   F0           MOVX    @DPTR,A
    300             dmaChannel.TMODE     = TMODE_SINGLE;      // A single byte is transferred each time.
   \   000055   E0           MOVX    A,@DPTR
   \   000056   549F         ANL     A,#0x9f
   \   000058   F0           MOVX    @DPTR,A
    301             dmaChannel.WORDSIZE  = WORDSIZE_BYTE;     // Set to count bytes.
   \   000059   E0           MOVX    A,@DPTR
   \   00005A   C2E7         CLR     0xE0 /* A   */.7
   \   00005C   F0           MOVX    @DPTR,A
    302          
    303             DMA_SET_ADDR_DESC0(&dmaChannel);
   \   00005D   74..         MOV     A,#((dmaChannel >> 8) & 0xff)
   \   00005F   F5D5         MOV     0xd5,A
   \   000061   75D4..       MOV     0xd4,#(dmaChannel & 0xff)
    304             DMA_ABORT_CHANNEL(0);
   \   000064   75D681       MOV     0xd6,#-0x7f
    305          }
   \   000067                REQUIRE ?Subroutine0
   \   000067                ; // Fall through to label ?Subroutine0

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   22           RET
    306          
    307          
    308          
    309          /******************************************************************************
    310          *
    311          * Function that performs the actual flash writing
    312          ******************************************************************************/

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    313          __near_func writeToFlash(void){
   \                     writeToFlash:
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    314             //store data in flash
    315             SET_WORD(FADDRH, FADDRL, ((UINT16)pFlashEntry >> 2) | 0x4000 );
   \   000005   90....       MOV     DPTR,#pFlashEntry
   \   000008   E0           MOVX    A,@DPTR
   \   000009   F5..         MOV     ?V0 + 0,A
   \   00000B   A3           INC     DPTR
   \   00000C   E0           MOVX    A,@DPTR
   \   00000D   F5..         MOV     ?V0 + 1,A
   \   00000F   7402         MOV     A,#0x2
   \   000011   78..         MOV     R0,#?V0 + 0
   \   000013   12....       LCALL   ?US_SHR
   \   000016   A9..         MOV     R1,?V0 + 1
   \   000018   7440         MOV     A,#0x40
   \   00001A   49           ORL     A,R1
   \   00001B   FB           MOV     R3,A
   \   00001C   E4           CLR     A
   \   00001D   CB           XCH     A,R3
   \   00001E   FA           MOV     R2,A
   \   00001F   F5AD         MOV     0xad,A
   \   000021   E5..         MOV     A,?V0 + 0
   \   000023   F5AC         MOV     0xac,A
    316          
    317             // Storing old settings and setting up the DMA.
    318             // Clearing all DMA complete flags and arming the channel.
    319             DMAIRQ &= ~DMA_CHANNEL_0;
   \   000025   53D1FE       ANL     0xd1,#0xfe
    320             DMA_ARM_CHANNEL(0);
   \   000028   75D601       MOV     0xd6,#0x1
    321          
    322             FLASH_CONFIG(WRITE);
   \   00002B   7407         MOV     A,#0x7
   \   00002D   55C6         ANL     A,0xc6
   \   00002F   F8           MOV     R0,A
   \   000030   742A         MOV     A,#0x2a
   \   000032   B80002       CJNE    R0,#0x0,??writeToFlash_0
   \   000035   8005         SJMP    ??writeToFlash_1
   \                     ??writeToFlash_0:
   \   000037   A2E7         MOV     C,0xE0 /* A   */.7
   \   000039   13           RRC     A
   \   00003A   D8FB         DJNZ    R0,??writeToFlash_0
   \                     ??writeToFlash_1:
   \   00003C   F5AB         MOV     0xab,A
   \   00003E   75AE02       MOV     0xae,#0x2
    323             asm("NOP");
   \   000041   00           NOP
    324          
    325             // Waiting for the DMA to finish.
    326             while(!(DMAIRQ & DMA_CHANNEL_0));
   \                     ??writeToFlash_2:

⌨️ 快捷键说明

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