Files
OldPeopleHome/zigbee/ZStack-CC2530-r200/Projects/SappWsn/RouterEB/List/OnBoard.s51
LitterDryFish 6b0d1c0743 add node
2019-08-23 12:26:53 +08:00

1643 lines
55 KiB
Plaintext
Raw Blame History

///////////////////////////////////////////////////////////////////////////////
//
// IAR C/C++ Compiler V10.30.1.6000 for 8051 23/Aug/2019 12:13:06
// Copyright 2004-2018 IAR Systems AB.
// PC-locked license - IAR Embedded Workbench for 8051
//
// Core = plain
// Code model = banked
// Data model = large
// Calling convention = xdata reentrant
// Constant location = data_rom
// Dptr setup = 1,16
//
// Source file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\zstack\ZMain\TI2530DB\OnBoard.c
// Command line =
// -f C:\Users\VULCAN\AppData\Local\Temp\EWD6AF.tmp
// (E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\zstack\ZMain\TI2530DB\OnBoard.c
// -D ZIGBEEPRO -D ZTOOL_P1 -D MT_TASK -D MT_SYS_FUNC -D MT_ZDO_FUNC -D
// LCD_SUPPORTED=DEBUG -D SAPP_ZSTACK -lC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
// -lA
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List
// --diag_suppress Pe001,Pa010 -o
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\Obj
// -e --debug --core=plain --dptr=16,1 --data_model=large
// --code_model=banked --calling_convention=xdata_reentrant
// --place_constants=data_rom --nr_virtual_regs 8 -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wRouter.cfg
// (-DCPU32MHZ -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TRUE
// -DMAC_CFG_TX_DATA_MAX=5 -DMAC_CFG_TX_MAX=8 -DMAC_CFG_RX_MAX=5
// -DRTR_NWK) -f
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\Tools\CC2530DB\f8wConfig.cfg
// (-DZIGBEEPRO -DSECURE=0 -DZG_SECURE_DYNAMIC=0 -DREFLECTOR
// -DDEFAULT_CHANLIST=0x00800000 -DZDAPP_CONFIG_PAN_ID=0x0057
// -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_MASK=0x007F
// -DBEACON_REQUEST_DELAY=100 -DBEACON_REQ_DELAY_MASK=0x00FF
// -DLINK_STATUS_JITTER_MASK=0x007F -DROUTE_EXPIRY_TIME=30
// -DAPSC_ACK_WAIT_DURATION_POLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7
// -DMAX_RREQ_ENTRIES=8 -DAPSC_MAX_FRAME_RETRIES=3
// -DNWK_MAX_DATA_RETRIES=2 -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9
// -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=40 -DNWK_MAX_BINDING_ENTRIES=4
// -DMAX_BINDING_CLUSTER_IDS=4 "-DDEFAULT_KEY={0x01, 0x03, 0x05, 0x07,
// 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C,
// 0x0D}" -DMAC_MAX_FRAME_SIZE=116 -DZDNWKMGR_MIN_TRANSMISSIONS=20
// "-DCONST=const __code" -DGENERIC=__generic -DRFD_RCVC_ALWAYS_ON=FALSE
// -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100 -DRESPONSE_POLL_RATE=100
// -DREJOIN_POLL_RATE=440) -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\Source\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\zstack\ZMain\TI2530DB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\hal\target\CC2530EB\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\high_level\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mac\low_level\srf04\single_chip\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\mt\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\osal\include\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\saddr\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\services\sdata\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\af\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\nwk\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sapi\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sec\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\sys\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\stack\zdo\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\
// -I
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\..\..\Components\zmac\f8w\
// -Ohz --require_prototypes --no_code_motion)
// Locale = Chinese (Simplified)_CHN.936
// List file =
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\SappWsn\RouterEB\List\OnBoard.s51
//
///////////////////////////////////////////////////////////////////////////////
NAME OnBoard
RTMODEL "__SystemLibrary", "CLib"
RTMODEL "__calling_convention", "xdata_reentrant"
RTMODEL "__code_model", "banked"
RTMODEL "__core", "plain"
RTMODEL "__data_model", "large"
RTMODEL "__dptr_size", "16"
RTMODEL "__extended_stack", "disabled"
RTMODEL "__location_for_constants", "data"
RTMODEL "__number_of_dptrs", "1"
RTMODEL "__register_banks", "*"
RTMODEL "__rt_version", "1"
RSEG DOVERLAY:DATA:NOROOT(0)
RSEG IOVERLAY:IDATA:NOROOT(0)
RSEG ISTACK:IDATA:NOROOT(0)
RSEG PSTACK:XDATA:NOROOT(0)
RSEG XSTACK:DATA:REORDER:NOROOT(0)
EXTERN ?V0
EXTERN ?V1
EXTERN ?V2
EXTERN ?V3
EXTERN ?V4
EXTERN ?V5
EXTERN ?ALLOC_XSTACK8
EXTERN ?BANKED_ENTER_XDATA
EXTERN ?BANKED_LEAVE_XDATA
EXTERN ?BDISPATCH
EXTERN ?BRET
EXTERN ?DEALLOC_XSTACK8
EXTERN ?US_DIV_MOD
EXTERN ?XSP
EXTERN __INIT_XDATA_I
EXTERN __INIT_XDATA_Z
PUBLIC `??BigLight_Off::?relay`
FUNCTION `??BigLight_Off::?relay`,0203H
PUBLIC `??BigLight_On::?relay`
FUNCTION `??BigLight_On::?relay`,0203H
PUBLIC `??BuzzerControl::?relay`
FUNCTION `??BuzzerControl::?relay`,0203H
PUBLIC `??Dimmer::?relay`
FUNCTION `??Dimmer::?relay`,0203H
PUBLIC `??GetUserDipSw::?relay`
FUNCTION `??GetUserDipSw::?relay`,0203H
PUBLIC `??InitBoard::?relay`
FUNCTION `??InitBoard::?relay`,0203H
PUBLIC `??OnBoard_KeyCallback::?relay`
FUNCTION `??OnBoard_KeyCallback::?relay`,0203H
PUBLIC `??OnBoard_SendKeys::?relay`
FUNCTION `??OnBoard_SendKeys::?relay`,0203H
PUBLIC `??OnBoard_stack_used::?relay`
FUNCTION `??OnBoard_stack_used::?relay`,0203H
PUBLIC `??Onboard_rand::?relay`
FUNCTION `??Onboard_rand::?relay`,0203H
PUBLIC `??Onboard_wait::?relay`
FUNCTION `??Onboard_wait::?relay`,0203H
PUBLIC `??RegisterForKeys::?relay`
FUNCTION `??RegisterForKeys::?relay`,0203H
PUBLIC `??_itoa::?relay`
FUNCTION `??_itoa::?relay`,0203H
PUBLIC BigLight_Off
FUNCTION BigLight_Off,0203H
ARGFRAME XSTACK, 0, STACK
PUBLIC BigLight_On
FUNCTION BigLight_On,0203H
ARGFRAME XSTACK, 0, STACK
PUBLIC BuzzerControl
FUNCTION BuzzerControl,0203H
ARGFRAME XSTACK, 0, STACK
PUBWEAK DMAARM
PUBLIC Dimmer
FUNCTION Dimmer,0203H
ARGFRAME XSTACK, 0, STACK
PUBLIC GetUserDipSw
FUNCTION GetUserDipSw,0203H
ARGFRAME XSTACK, 0, STACK
PUBLIC InitBoard
FUNCTION InitBoard,021203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
PUBLIC OnBoard_KeyCallback
FUNCTION OnBoard_KeyCallback,021603H
ARGFRAME XSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
PUBLIC OnBoard_SendKeys
FUNCTION OnBoard_SendKeys,0a1203H
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 10, STACK
PUBLIC OnBoard_stack_used
FUNCTION OnBoard_stack_used,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC Onboard_rand
FUNCTION Onboard_rand,021203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBLIC Onboard_soft_reset
FUNCTION Onboard_soft_reset,080203H
ARGFRAME XSTACK, 0, STACK
PUBLIC Onboard_wait
FUNCTION Onboard_wait,080203H
ARGFRAME XSTACK, 0, STACK
PUBLIC RegisterForKeys
FUNCTION RegisterForKeys,0203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 2, STACK
PUBWEAK SLEEPSTA
PUBWEAK _A_IEN0
PUBLIC _itoa
FUNCTION _itoa,080203H
ARGFRAME XSTACK, 0, STACK
LOCFRAME ISTACK, 1, STACK
LOCFRAME XSTACK, 19, STACK
PUBLIC _lockBits
PUBLIC _nvIEEE
PUBLIC _reserved
PUBLIC aExtendedAddress
CFI Names cfiNames0
CFI StackFrame CFA_SP SP IDATA
CFI StackFrame CFA_PSP16 PSP16 XDATA
CFI StackFrame CFA_XSP16 XSP16 XDATA
CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
CFI VirtualResource ?RET:24
CFI Resource ?BRET_EXT:8
CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
CFI ResourceParts PSP16 PSPH, PSPL
CFI ResourceParts XSP16 XSPH, XSPL
CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
CFI EndNames cfiNames0
CFI Common cfiCommon0 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-3
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT Frame(CFA_SP, 3)
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon0
CFI Common cfiCommon1 Using cfiNames0
CFI CodeAlign 1
CFI DataAlign -1
CFI ReturnAddress ?RET CODE
CFI CFA_DOVERLAY Used
CFI CFA_IOVERLAY Used
CFI CFA_SP SP+-2
CFI CFA_PSP16 PSP16+0
CFI CFA_XSP16 XSP16+0
CFI `PSW.CY` SameValue
CFI `B.BR0` SameValue
CFI `B.BR1` SameValue
CFI `B.BR2` SameValue
CFI `B.BR3` SameValue
CFI `B.BR4` SameValue
CFI `B.BR5` SameValue
CFI `B.BR6` SameValue
CFI `B.BR7` SameValue
CFI `VB.BR8` SameValue
CFI `VB.BR9` SameValue
CFI `VB.BR10` SameValue
CFI `VB.BR11` SameValue
CFI `VB.BR12` SameValue
CFI `VB.BR13` SameValue
CFI `VB.BR14` SameValue
CFI `VB.BR15` SameValue
CFI VB SameValue
CFI B Undefined
CFI A Undefined
CFI PSW SameValue
CFI DPL0 SameValue
CFI DPH0 SameValue
CFI R0 Undefined
CFI R1 Undefined
CFI R2 Undefined
CFI R3 Undefined
CFI R4 Undefined
CFI R5 Undefined
CFI R6 SameValue
CFI R7 SameValue
CFI V0 SameValue
CFI V1 SameValue
CFI V2 SameValue
CFI V3 SameValue
CFI V4 SameValue
CFI V5 SameValue
CFI V6 SameValue
CFI V7 SameValue
CFI PSPH Undefined
CFI PSPL Undefined
CFI XSPH Undefined
CFI XSPL Undefined
CFI ?RET Concat
CFI ?BRET_EXT SameValue
CFI ?RET_HIGH Frame(CFA_SP, 2)
CFI ?RET_LOW Frame(CFA_SP, 1)
CFI EndCommon cfiCommon1
HalKeyConfig SYMBOL "HalKeyConfig"
`??HalKeyConfig::?relay` SYMBOL "?relay", HalKeyConfig
halAssertHandler SYMBOL "halAssertHandler"
`??halAssertHandler::?relay` SYMBOL "?relay", halAssertHandler
macMcuRandomWord SYMBOL "macMcuRandomWord"
`??macMcuRandomWord::?relay` SYMBOL "?relay", macMcuRandomWord
osal_int_disable SYMBOL "osal_int_disable"
`??osal_int_disable::?relay` SYMBOL "?relay", osal_int_disable
osal_msg_allocate SYMBOL "osal_msg_allocate"
`??osal_msg_allocate::?relay` SYMBOL "?relay", osal_msg_allocate
osal_msg_send SYMBOL "osal_msg_send"
`??osal_msg_send::?relay` SYMBOL "?relay", osal_msg_send
BigLight_Off SYMBOL "BigLight_Off"
`??BigLight_Off::?relay` SYMBOL "?relay", BigLight_Off
BigLight_On SYMBOL "BigLight_On"
`??BigLight_On::?relay` SYMBOL "?relay", BigLight_On
BuzzerControl SYMBOL "BuzzerControl"
`??BuzzerControl::?relay` SYMBOL "?relay", BuzzerControl
Dimmer SYMBOL "Dimmer"
`??Dimmer::?relay` SYMBOL "?relay", Dimmer
GetUserDipSw SYMBOL "GetUserDipSw"
`??GetUserDipSw::?relay` SYMBOL "?relay", GetUserDipSw
InitBoard SYMBOL "InitBoard"
`??InitBoard::?relay` SYMBOL "?relay", InitBoard
OnBoard_KeyCallback SYMBOL "OnBoard_KeyCallback"
`??OnBoard_KeyCallback::?relay` SYMBOL "?relay", OnBoard_KeyCallback
OnBoard_SendKeys SYMBOL "OnBoard_SendKeys"
`??OnBoard_SendKeys::?relay` SYMBOL "?relay", OnBoard_SendKeys
OnBoard_stack_used SYMBOL "OnBoard_stack_used"
`??OnBoard_stack_used::?relay` SYMBOL "?relay", OnBoard_stack_used
Onboard_rand SYMBOL "Onboard_rand"
`??Onboard_rand::?relay` SYMBOL "?relay", Onboard_rand
Onboard_wait SYMBOL "Onboard_wait"
`??Onboard_wait::?relay` SYMBOL "?relay", Onboard_wait
RegisterForKeys SYMBOL "RegisterForKeys"
`??RegisterForKeys::?relay` SYMBOL "?relay", RegisterForKeys
_itoa SYMBOL "_itoa"
`??_itoa::?relay` SYMBOL "?relay", _itoa
EXTERN `??HalKeyConfig::?relay`
FUNCTION `??HalKeyConfig::?relay`,00H
EXTERN `??halAssertHandler::?relay`
FUNCTION `??halAssertHandler::?relay`,00H
EXTERN `??macMcuRandomWord::?relay`
FUNCTION `??macMcuRandomWord::?relay`,00H
EXTERN `??osal_int_disable::?relay`
FUNCTION `??osal_int_disable::?relay`,00H
EXTERN `??osal_msg_allocate::?relay`
FUNCTION `??osal_msg_allocate::?relay`,00H
EXTERN `??osal_msg_send::?relay`
FUNCTION `??osal_msg_send::?relay`,00H
EXTERN HalKeyConfig
FUNCTION HalKeyConfig,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN halAssertHandler
FUNCTION halAssertHandler,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN macMcuRandomWord
FUNCTION macMcuRandomWord,0202H
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_int_disable
FUNCTION osal_int_disable,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_msg_allocate
FUNCTION osal_msg_allocate,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
EXTERN osal_msg_send
FUNCTION osal_msg_send,0202H
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
// E:\qq下载文件\ZStack-CC2530-r200\ZStack-CC2530-r200\Projects\zstack\ZMain\TI2530DB\OnBoard.c
// 1 /**************************************************************************************************
// 2 Filename: OnBoard.c
// 3 Revised: $Date: 2010-08-02 13:44:14 -0700 (Mon, 02 Aug 2010) $
// 4 Revision: $Revision: 23273 $
// 5
// 6 Description: This file contains the UI and control for the
// 7 peripherals on the EVAL development board
// 8 Notes: This file targets the Chipcon CC2530/31
// 9
// 10
// 11 Copyright 2005-2010 Texas Instruments Incorporated. All rights reserved.
// 12
// 13 IMPORTANT: Your use of this Software is limited to those specific rights
// 14 granted under the terms of a software license agreement between the user
// 15 who downloaded the software, his/her employer (which must be your employer)
// 16 and Texas Instruments Incorporated (the "License"). You may not use this
// 17 Software unless you agree to abide by the terms of the License. The License
// 18 limits your use, and you acknowledge, that the Software may not be modified,
// 19 copied or distributed unless embedded on a Texas Instruments microcontroller
// 20 or used solely and exclusively in conjunction with a Texas Instruments radio
// 21 frequency transceiver, which is integrated into your product. Other than for
// 22 the foregoing purpose, you may not use, reproduce, copy, prepare derivative
// 23 works of, modify, distribute, perform, display or sell this Software and/or
// 24 its documentation for any purpose.
// 25
// 26 YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
// 27 PROVIDED 揂S IS<49> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
// 28 INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
// 29 NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
// 30 TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
// 31 NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
// 32 LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
// 33 INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
// 34 OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
// 35 OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
// 36 (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
// 37
// 38 Should you have any questions regarding your right to use this Software,
// 39 contact Texas Instruments Incorporated at www.TI.com.
// 40 **************************************************************************************************/
// 41
// 42 /*********************************************************************
// 43 * INCLUDES
// 44 */
// 45
// 46 #include "ZComDef.h"
// 47 #include "ZGlobals.h"
// 48 #include "OnBoard.h"
ASEGN SFR_AN:DATA:NOROOT,09dH
// unsigned char volatile __sfr SLEEPSTA
SLEEPSTA:
DATA8
DS 1
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DATA8
DS 1
ASEGN SFR_AN:DATA:NOROOT,0d6H
// unsigned char volatile __sfr DMAARM
DMAARM:
DATA8
DS 1
// 49 #include "OSAL.h"
// 50 #include "MT.h"
// 51 #include "MT_SYS.h"
// 52 #include "DebugTrace.h"
// 53
// 54 /* Hal */
// 55 #include "hal_lcd.h"
// 56 #include "hal_mcu.h"
// 57 #include "hal_timer.h"
// 58 #include "hal_key.h"
// 59 #include "hal_led.h"
// 60
// 61 /* Allow access macRandomByte() */
// 62 #include "mac_radio_defs.h"
// 63
// 64 /*********************************************************************
// 65 * CONSTANTS
// 66 */
// 67
// 68 // Task ID not initialized
// 69 #define NO_TASK_ID 0xFF
// 70
// 71 // Minimum length RAM "pattern" for Stack check
// 72 #define MIN_RAM_INIT 12
// 73
// 74 /*********************************************************************
// 75 * GLOBAL VARIABLES
// 76 */
// 77
// 78 #if defined MAKE_CRC_SHDW
// 79 #pragma location="CRC_SHDW"
// 80 const CODE uint16 _crcShdw = 0xFFFF;
// 81 #pragma required=_crcShdw
// 82
// 83 #else // if !defined MAKE_CRC_SHDW
// 84
// 85 #pragma location="LOCK_BITS_ADDRESS_SPACE"
RSEG LOCK_BITS_ADDRESS_SPACE:XDATA:REORDER:NOROOT(0)
DATA8
// 86 __no_init uint8 _lockBits[16];
_lockBits:
DS 16
// 87 #pragma required=_lockBits
// 88
// 89 #if defined ZCL_KEY_ESTABLISH
// 90 #include "zcl_cert_data.c"
// 91 #else
// 92 #pragma location="IEEE_ADDRESS_SPACE"
RSEG IEEE_ADDRESS_SPACE:XDATA:REORDER:NOROOT(0)
DATA8
// 93 __no_init uint8 _nvIEEE[Z_EXTADDR_LEN];
_nvIEEE:
DS 8
REQUIRE _lockBits
// 94 #pragma required=_nvIEEE
// 95 #endif
// 96
// 97 #pragma location="RESERVED_ADDRESS_SPACE"
RSEG RESERVED_ADDRESS_SPACE:XDATA:REORDER:NOROOT(0)
DATA8
// 98 __no_init uint8 _reserved[1932];
_reserved:
DS 1932
REQUIRE _nvIEEE
// 99 #pragma required=_reserved
// 100 #endif
// 101
// 102 // 64-bit Extended Address of this device
RSEG XDATA_Z:XDATA:NOROOT(0)
DATA8
// 103 uint8 aExtendedAddress[8];
aExtendedAddress:
DS 8
REQUIRE __INIT_XDATA_Z
REQUIRE _reserved
// 104
// 105 /*********************************************************************
// 106 * LOCAL VARIABLES
// 107 */
// 108
// 109 // Registered keys task ID, initialized to NOT USED.
RSEG XDATA_I:XDATA:NOROOT(0)
// 110 static uint8 registeredKeysTaskID = NO_TASK_ID;
registeredKeysTaskID:
DATA8
DS 1
REQUIRE `?<Initializer for registeredKeysTaskID>`
REQUIRE __INIT_XDATA_I
// 111
// 112 /*********************************************************************
// 113 * LOCAL FUNCTIONS
// 114 */
// 115
// 116 static void ChkReset( void );
// 117
// 118 /*********************************************************************
// 119 * @fn InitBoard()
// 120 * @brief Initialize the CC2420DB Board Peripherals
// 121 * @param level: COLD,WARM,READY
// 122 * @return None
// 123 */
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 124 void InitBoard( uint8 level )
InitBoard:
CFI Block cfiBlock0 Using cfiCommon0
CFI Function InitBoard
CODE
// 125 {
FUNCALL InitBoard, osal_int_disable
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL InitBoard, halAssertHandler
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL InitBoard, HalKeyConfig
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 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: 0
MOV A,R1
// 126 if ( level == OB_COLD )
JNZ ??InitBoard_0
// 127 {
// 128 // IAR does not zero-out this byte below the XSTACK.
// 129 *(uint8 *)0x0 = 0;
MOV DPTR,#0x0
CLR A
MOVX @DPTR,A
// 130 // Interrupts off
// 131 osal_int_disable( INTS_ALL );
; Setup parameters for call to function osal_int_disable
MOV R1,#-0x1
LCALL `??osal_int_disable::?relay`; Banked call to: osal_int_disable
// 132 // Check for Brown-Out reset
// 133 ChkReset();
MOV A,0x9d
ANL A,#0x18
MOV R0,A
JZ ??InitBoard_1
MOV A,#0x8
XRL A,R0
JZ ??InitBoard_1
MOV A,#0x10
XRL A,R0
JZ ??InitBoard_1
; Setup parameters for call to function halAssertHandler
LCALL `??halAssertHandler::?relay`; Banked call to: halAssertHandler
SJMP ??InitBoard_1
// 134 }
// 135 else // !OB_COLD
// 136 {
// 137 /* Initialize Key stuff */
// 138 HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE, OnBoard_KeyCallback);
??InitBoard_0:
; Setup parameters for call to function HalKeyConfig
MOV R2,#`??OnBoard_KeyCallback::?relay` & 0xff
MOV R3,#(`??OnBoard_KeyCallback::?relay` >> 8) & 0xff
MOV R1,#0x0
LCALL `??HalKeyConfig::?relay`; Banked call to: HalKeyConfig
// 139 }
// 140 }
??InitBoard_1:
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine0
REQUIRE SLEEPSTA
; // Fall through to label ?Subroutine0
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 141
// 142 /*********************************************************************
// 143 * @fn ChkReset()
// 144 * @brief Check reset bits - if reset cause is unknown, assume a
// 145 * brown-out (low power), assume batteries are not reliable,
// 146 * hang in a loop and sequence through the LEDs.
// 147 * @param None
// 148 * @return None
// 149 *********************************************************************/
// 150 void ChkReset( void )
// 151 {
// 152 uint8 rib;
// 153
// 154 // Isolate reset indicator bits
// 155 rib = SLEEPSTA & LRESET;
// 156
// 157 if ( rib == RESETPO )
// 158 {
// 159 // Put code here to handle Power-On reset
// 160 }
// 161 else if ( rib == RESETEX )
// 162 {
// 163 // Put code here to handle External reset
// 164 }
// 165 else if ( rib == RESETWD )
// 166 {
// 167 // Put code here to handle WatchDog reset
// 168 }
// 169 else // Unknown reason - not expected.
// 170 {
// 171 HAL_ASSERT(0);
// 172 }
// 173 }
// 174
// 175 /*********************************************************************
// 176 * "Keyboard" Support
// 177 *********************************************************************/
// 178
// 179 /*********************************************************************
// 180 * Keyboard Register function
// 181 *
// 182 * The keyboard handler is setup to send all keyboard changes to
// 183 * one task (if a task is registered).
// 184 *
// 185 * If a task registers, it will get all the keys. You can change this
// 186 * to register for individual keys.
// 187 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 188 uint8 RegisterForKeys( uint8 task_id )
RegisterForKeys:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function RegisterForKeys
CODE
// 189 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 190 // Allow only the first task
// 191 if ( registeredKeysTaskID == NO_TASK_ID )
MOV DPTR,#registeredKeysTaskID
MOVX A,@DPTR
CPL A
JNZ ??RegisterForKeys_0
// 192 {
// 193 registeredKeysTaskID = task_id;
MOV A,R1
MOVX @DPTR,A
// 194 return ( true );
MOV R1,#0x1
SJMP ??RegisterForKeys_1
// 195 }
// 196 else
// 197 return ( false );
??RegisterForKeys_0:
MOV R1,#0x0
??RegisterForKeys_1:
CFI EndBlock cfiBlock2
REQUIRE ?Subroutine1
; // Fall through to label ?Subroutine1
// 198 }
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
?Subroutine1:
CFI Block cfiBlock3 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-5
CFI DPL0 Frame(CFA_SP, 4)
CFI DPH0 Frame(CFA_SP, 5)
POP DPH
CFI CFA_SP SP+-4
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-3
CFI DPL0 SameValue
LJMP ?BRET
CFI EndBlock cfiBlock3
// 199
// 200 /*********************************************************************
// 201 * @fn OnBoard_SendKeys
// 202 *
// 203 * @brief Send "Key Pressed" message to application.
// 204 *
// 205 * @param keys - keys that were pressed
// 206 * state - shifted
// 207 *
// 208 * @return status
// 209 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 210 uint8 OnBoard_SendKeys( uint8 keys, uint8 state )
OnBoard_SendKeys:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function OnBoard_SendKeys
CODE
// 211 {
FUNCALL OnBoard_SendKeys, osal_msg_allocate
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
FUNCALL OnBoard_SendKeys, osal_msg_send
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 10, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 10, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
REQUIRE ?V0
REQUIRE ?V1
MOV A,#-0xa
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
MOV A,R1
MOV R6,A
MOV A,R2
MOV R7,A
// 212 keyChange_t *msgPtr;
// 213
// 214 if ( registeredKeysTaskID != NO_TASK_ID )
MOV DPTR,#registeredKeysTaskID
MOVX A,@DPTR
CPL A
JZ ??OnBoard_SendKeys_0
// 215 {
// 216 // Send the address to the task
// 217 msgPtr = (keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) );
; Setup parameters for call to function osal_msg_allocate
MOV R2,#0x4
MOV R3,#0x0
LCALL `??osal_msg_allocate::?relay`; Banked call to: osal_msg_allocate
// 218 if ( msgPtr )
MOV A,R2
ORL A,R3
JZ ??OnBoard_SendKeys_1
// 219 {
// 220 msgPtr->hdr.event = KEY_CHANGE;
MOV DPL,R2
MOV DPH,R3
MOV A,#-0x40
MOVX @DPTR,A
// 221 msgPtr->state = state;
MOV A,R7
INC DPTR
INC DPTR
MOVX @DPTR,A
// 222 msgPtr->keys = keys;
MOV A,R6
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 223
// 224 osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );
; Setup parameters for call to function osal_msg_send
MOV DPTR,#registeredKeysTaskID
MOVX A,@DPTR
MOV R1,A
LCALL `??osal_msg_send::?relay`; Banked call to: osal_msg_send
// 225 }
// 226 return ( ZSuccess );
??OnBoard_SendKeys_1:
MOV R1,#0x0
SJMP ??OnBoard_SendKeys_2
// 227 }
// 228 else
// 229 return ( ZFailure );
??OnBoard_SendKeys_0:
MOV R1,#0x1
??OnBoard_SendKeys_2:
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
// 230 }
CFI EndBlock cfiBlock4
// 231
// 232 /*********************************************************************
// 233 * @fn OnBoard_KeyCallback
// 234 *
// 235 * @brief Callback service for keys
// 236 *
// 237 * @param keys - keys that were pressed
// 238 * state - shifted
// 239 *
// 240 * @return void
// 241 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 242 void OnBoard_KeyCallback ( uint8 keys, uint8 state )
OnBoard_KeyCallback:
CFI Block cfiBlock5 Using cfiCommon0
CFI Function OnBoard_KeyCallback
CODE
// 243 {
FUNCALL OnBoard_KeyCallback, OnBoard_SendKeys
LOCFRAME ISTACK, 0, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 9, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 0, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 9, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
MOV A,#-0x9
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 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: 0
MOV A,R1
// 244 uint8 shift;
// 245 (void)state;
// 246
// 247 shift = (keys & HAL_KEY_SW_6) ? true : false;
// 248
// 249 if ( OnBoard_SendKeys( keys, shift ) != ZSuccess )
; Setup parameters for call to function OnBoard_SendKeys
MOV C,0xE0 /* A */.5
CLR A
RLC A
MOV R2,A
LCALL `??OnBoard_SendKeys::?relay`; Banked call to: OnBoard_SendKeys
// 250 {
// 251 // Process SW1 here
// 252 if ( keys & HAL_KEY_SW_1 ) // Switch 1
// 253 {
// 254 }
// 255 // Process SW2 here
// 256 if ( keys & HAL_KEY_SW_2 ) // Switch 2
// 257 {
// 258 }
// 259 // Process SW3 here
// 260 if ( keys & HAL_KEY_SW_3 ) // Switch 3
// 261 {
// 262 }
// 263 // Process SW4 here
// 264 if ( keys & HAL_KEY_SW_4 ) // Switch 4
// 265 {
// 266 }
// 267 // Process SW5 here
// 268 if ( keys & HAL_KEY_SW_5 ) // Switch 5
// 269 {
// 270 }
// 271 // Process SW6 here
// 272 if ( keys & HAL_KEY_SW_6 ) // Switch 6
// 273 {
// 274 }
// 275 }
// 276 }
SJMP ?Subroutine0
CFI EndBlock cfiBlock5
// 277
// 278 /*********************************************************************
// 279 * @fn OnBoard_stack_used
// 280 *
// 281 * @brief Runs through the stack looking for touched memory.
// 282 *
// 283 * @param none
// 284 *
// 285 * @return Maximum number of bytes used by the stack.
// 286 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 287 uint16 OnBoard_stack_used(void)
OnBoard_stack_used:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function OnBoard_stack_used
CODE
// 288 {
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 289 uint8 const *ptr;
// 290 uint8 cnt = 0;
MOV R0,#0x0
// 291
// 292 for (ptr = CSTACK_END; ptr > CSTACK_BEG; ptr--)
MOV DPL,#(SFE(XSTACK) + 255) & 0xff
MOV DPH,#((SFE(XSTACK) - 1) >> 8) & 0xff
SJMP ??OnBoard_stack_used_0
// 293 {
// 294 if (STACK_INIT_VALUE == *ptr)
// 295 {
// 296 if (++cnt >= MIN_RAM_INIT)
// 297 {
// 298 ptr += MIN_RAM_INIT;
// 299 break;
// 300 }
// 301 }
// 302 else
// 303 {
// 304 cnt = 0;
??OnBoard_stack_used_1:
MOV R0,#0x0
// 305 }
??OnBoard_stack_used_2:
MOV A,DPL
ADD A,#-0x1
MOV DPL,A
MOV A,DPH
ADDC A,#-0x1
MOV DPH,A
??OnBoard_stack_used_0:
CLR C
MOV A,#SFB(XSTACK) & 0xff
SUBB A,DPL
MOV A,#(SFB(XSTACK) >> 8) & 0xff
SUBB A,DPH
JNC ??OnBoard_stack_used_3
MOVX A,@DPTR
XRL A,#0xcd
JNZ ??OnBoard_stack_used_1
INC R0
MOV A,R0
CLR C
SUBB A,#0xc
JC ??OnBoard_stack_used_2
MOV A,DPL
ADD A,#0xc
MOV DPL,A
JNC ??OnBoard_stack_used_3
INC DPH
// 306 }
// 307
// 308 return (uint16)(CSTACK_END - ptr + 1);
??OnBoard_stack_used_3:
MOV A,#(SFE(XSTACK) + 255) & 0xff
CLR C
SUBB A,DPL
MOV R0,A
MOV A,#((SFE(XSTACK) - 1) >> 8) & 0xff
SUBB A,DPH
MOV R1,A
MOV A,R0
ADD A,#0x1
MOV R2,A
CLR A
ADDC A,R1
MOV R3,A
LJMP ?Subroutine1 & 0xFFFF
// 309 }
CFI EndBlock cfiBlock6
// 310
// 311 /*********************************************************************
// 312 * @fn _itoa
// 313 *
// 314 * @brief convert a 16bit number to ASCII
// 315 *
// 316 * @param num -
// 317 * buf -
// 318 * radix -
// 319 *
// 320 * @return void
// 321 *
// 322 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 323 void _itoa(uint16 num, uint8 *buf, uint8 radix)
_itoa:
CFI Block cfiBlock7 Using cfiCommon0
CFI Function _itoa
CODE
// 324 {
REQUIRE ?V0
REQUIRE ?V1
REQUIRE ?V2
REQUIRE ?V3
REQUIRE ?V4
REQUIRE ?V5
MOV A,#-0xe
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 14)
; Saved register size: 14
; Auto size: 5
MOV A,#-0x5
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 19)
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
MOV ?V0,R1
// 325 char c,i;
// 326 uint8 *p, rst[5];
// 327
// 328 p = rst;
MOV R0,?XSP + 0
MOV R1,?XSP + 1
MOV ?V4,R0
MOV ?V5,R1
// 329 for ( i=0; i<5; i++,p++ )
MOV ?V1,#0x0
// 330 {
// 331 c = num % radix; // Isolate a digit
??_itoa_0:
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV R2,?V0
MOV R3,#0x0
LCALL ?US_DIV_MOD
MOV A,R2
MOV R0,A
// 332 *p = c + (( c < 10 ) ? '0' : '7'); // Convert to Ascii
SUBB A,#0xa
JNC ??_itoa_1
MOV R1,#0x30
SJMP ??_itoa_2
??_itoa_1:
MOV R1,#0x37
??_itoa_2:
MOV A,R2
ADD A,R1
MOV DPL,?V4
MOV DPH,?V5
MOVX @DPTR,A
// 333 num /= radix;
MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV R2,?V0
MOV R3,#0x0
LCALL ?US_DIV_MOD
MOV ?V2,R0
MOV ?V3,R1
MOV R6,?V2
MOV R7,?V3
// 334 if ( !num )
MOV A,R0
ORL A,R7
JZ ??_itoa_3
// 335 break;
// 336 }
INC ?V1
INC DPTR
MOV ?V4,DPL
MOV ?V5,DPH
MOV A,?V1
SUBB A,#0x5
JC ??_itoa_0
// 337
// 338 for ( c=0 ; c<=i; c++ )
??_itoa_3:
MOV R0,#0x0
// 339 *buf++ = *p--; // Reverse character order
??_itoa_4:
MOV DPL,?V4
MOV DPH,?V5
MOVX A,@DPTR
MOV DPL,R4
MOV DPH,R5
MOVX @DPTR,A
MOV A,?V4
ADD A,#-0x1
MOV ?V4,A
MOV A,?V5
ADDC A,#-0x1
MOV ?V5,A
INC DPTR
MOV R4,DPL
MOV R5,DPH
INC R0
MOV A,?V1
CLR C
SUBB A,R0
JNC ??_itoa_4
// 340
// 341 *buf = '\0';
CLR A
MOVX @DPTR,A
// 342 }
MOV A,#0x5
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock7
// 343
// 344 /*********************************************************************
// 345 * @fn Onboard_rand
// 346 *
// 347 * @brief Random number generator
// 348 *
// 349 * @param none
// 350 *
// 351 * @return uint16 - new random number
// 352 *
// 353 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 354 uint16 Onboard_rand( void )
Onboard_rand:
CFI Block cfiBlock8 Using cfiCommon0
CFI Function Onboard_rand
CODE
// 355 {
FUNCALL Onboard_rand, macMcuRandomWord
LOCFRAME ISTACK, 2, STACK
LOCFRAME PSTACK, 0, STACK
LOCFRAME XSTACK, 0, STACK
LOCFRAME IOVERLAY, 0, STATIC
LOCFRAME DOVERLAY, 0, STATIC
ARGFRAME ISTACK, 2, STACK
ARGFRAME PSTACK, 0, STACK
ARGFRAME XSTACK, 0, STACK
ARGFRAME IOVERLAY, 0, STATIC
ARGFRAME DOVERLAY, 0, STATIC
PUSH DPL
CFI DPL0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
PUSH DPH
CFI DPH0 Frame(CFA_SP, 5)
CFI CFA_SP SP+-5
; Saved register size: 2
; Auto size: 0
// 356 return ( MAC_RADIO_RANDOM_WORD() );
; Setup parameters for call to function macMcuRandomWord
LCALL `??macMcuRandomWord::?relay`; Banked call to: macMcuRandomWord
LJMP ?Subroutine1 & 0xFFFF
// 357 }
CFI EndBlock cfiBlock8
// 358
// 359 /*********************************************************************
// 360 * @fn Onboard_wait
// 361 *
// 362 * @brief Delay wait
// 363 *
// 364 * @param uint16 - time to wait
// 365 *
// 366 * @return none
// 367 *
// 368 *********************************************************************/
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 369 void Onboard_wait( uint16 timeout )
Onboard_wait:
CFI Block cfiBlock9 Using cfiCommon0
CFI Function Onboard_wait
CODE
// 370 {
; Saved register size: 0
; Auto size: 0
SJMP ??Onboard_wait_0
// 371 while (timeout--)
// 372 {
// 373 asm("NOP");
??Onboard_wait_1:
NOP
// 374 asm("NOP");
NOP
// 375 asm("NOP");
NOP
// 376 }
??Onboard_wait_0:
MOV A,R2
MOV R0,A
MOV A,R3
MOV R1,A
MOV A,R0
ADD A,#-0x1
DEC R2
MOV A,R1
ADDC A,#-0x1
MOV R3,A
MOV A,R0
ORL A,R1
JNZ ??Onboard_wait_1
// 377 }
LJMP ?BRET
CFI EndBlock cfiBlock9
// 378
// 379 /*********************************************************************
// 380 * @fn Onboard_soft_reset
// 381 *
// 382 * @brief Effect a soft reset.
// 383 *
// 384 * @param none
// 385 *
// 386 * @return none
// 387 *
// 388 *********************************************************************/
RSEG NEAR_CODE:CODE:NOROOT(0)
// 389 __near_func void Onboard_soft_reset( void )
Onboard_soft_reset:
CFI Block cfiBlock10 Using cfiCommon1
CFI Function Onboard_soft_reset
CODE
// 390 {
; Saved register size: 0
; Auto size: 0
// 391 HAL_DISABLE_INTERRUPTS();
CLR 0xa8.7
// 392 // Abort all DMA channels to insure that ongoing operations do not
// 393 // interfere with re-configuration.
// 394 DMAARM = 0x80 | 0x1F;
MOV 0xd6,#-0x61
// 395 asm("LJMP 0x0");
LJMP 0x0
// 396 }
RET
CFI EndBlock cfiBlock10
REQUIRE _A_IEN0
REQUIRE DMAARM
// 397
// 398 /*********************************************************************
// 399 * EXTERNAL I/O FUNCTIONS
// 400 *
// 401 * User defined functions to control external devices. Add your code
// 402 * to the following functions to control devices wired to DB outputs.
// 403 *
// 404 *********************************************************************/
// 405
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 406 void BigLight_On( void )
BigLight_On:
CFI Block cfiBlock11 Using cfiCommon0
CFI Function BigLight_On
CODE
// 407 {
; Saved register size: 0
; Auto size: 0
// 408 // Put code here to turn on an external light
// 409 }
LJMP ?BRET
CFI EndBlock cfiBlock11
// 410
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 411 void BigLight_Off( void )
BigLight_Off:
CFI Block cfiBlock12 Using cfiCommon0
CFI Function BigLight_Off
CODE
// 412 {
; Saved register size: 0
; Auto size: 0
// 413 // Put code here to turn off an external light
// 414 }
LJMP ?BRET
CFI EndBlock cfiBlock12
// 415
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 416 void BuzzerControl( uint8 on )
BuzzerControl:
CFI Block cfiBlock13 Using cfiCommon0
CFI Function BuzzerControl
CODE
// 417 {
; Saved register size: 0
; Auto size: 0
// 418 // Put code here to turn a buzzer on/off
// 419 (void)on;
// 420 }
LJMP ?BRET
CFI EndBlock cfiBlock13
// 421
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 422 void Dimmer( uint8 lvl )
Dimmer:
CFI Block cfiBlock14 Using cfiCommon0
CFI Function Dimmer
CODE
// 423 {
; Saved register size: 0
; Auto size: 0
// 424 // Put code here to control a dimmer
// 425 (void)lvl;
// 426 }
LJMP ?BRET
CFI EndBlock cfiBlock14
// 427
// 428 // No dip switches on this board
RSEG BANKED_CODE:HUGECODE:NOROOT(0)
// 429 uint8 GetUserDipSw( void )
GetUserDipSw:
CFI Block cfiBlock15 Using cfiCommon0
CFI Function GetUserDipSw
CODE
// 430 {
; Saved register size: 0
; Auto size: 0
// 431 return 0;
MOV R1,#0x0
LJMP ?BRET
// 432 }
CFI EndBlock cfiBlock15
RSEG XDATA_ID:CODE:NOROOT(0)
`?<Initializer for registeredKeysTaskID>`:
DATA8
DB 255
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??InitBoard::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 InitBoard
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??RegisterForKeys::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 RegisterForKeys
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??OnBoard_SendKeys::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 OnBoard_SendKeys
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??OnBoard_KeyCallback::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 OnBoard_KeyCallback
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??OnBoard_stack_used::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 OnBoard_stack_used
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??_itoa::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 _itoa
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??Onboard_rand::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 Onboard_rand
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??Onboard_wait::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 Onboard_wait
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BigLight_On::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BigLight_On
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BigLight_Off::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BigLight_Off
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??BuzzerControl::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 BuzzerControl
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??Dimmer::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 Dimmer
RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
`??GetUserDipSw::?relay`:
CODE
LCALL ?BDISPATCH
DATA24
DC24 GetUserDipSw
RSEG XSTACK:DATA:REORDER:NOROOT(0)
END
// 433
// 434 /*********************************************************************
// 435 *********************************************************************/
//
// 442 bytes in segment BANKED_CODE
// 78 bytes in segment BANK_RELAYS
// 8 bytes in segment IEEE_ADDRESS_SPACE
// 16 bytes in segment LOCK_BITS_ADDRESS_SPACE
// 9 bytes in segment NEAR_CODE
// 1 932 bytes in segment RESERVED_ADDRESS_SPACE
// 3 bytes in segment SFR_AN
// 1 byte in segment XDATA_I
// 1 byte in segment XDATA_ID
// 8 bytes in segment XDATA_Z
//
// 88 bytes of CODE memory
// 0 bytes of DATA memory (+ 3 bytes shared)
// 442 bytes of HUGECODE memory
// 1 965 bytes of XDATA memory
//
//Errors: none
//Warnings: none