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

📄 hidef.h

📁 Motorola MCU HC08下的uCOSII移植源代码
💻 H
字号:
/*****************************************************
 hidef.h - ANSI-C library: machine dependent stuff
 ----------------------------------------------------
   Copyright (c) HIWARE AG, Basel, Switzerland
               All rights reserved
                  Do not modify!
 *****************************************************/

#ifndef _H_HIDEF_
#define _H_HIDEF_

#ifdef __cplusplus
extern "C" {
#endif


/**** Version for MC68HC08 */
#include "stddef.h"
#include "stdtypes.h"

#define CLOCKS_PER_SEC 4000000 /* has to be user defined */
#pragma NO_STRING_CONSTR  /* allow '#' in HLI below */

#define HALT               {__asm CLRA; __asm SWI ! {A}, {A+HX+SR};}
#define HALTX(x)           {__asm LDA x; __asm SWI ! {A}, {A+HX+SR};}
#define HALT_AND_QUIT      HALTX(#32)
// #define EnableInterrupts   {__asm CLI;}			// 中断控制宏放到OS_CPU.H中 //
// #define DisableInterrupts  {__asm SEI;}


/* we have to use a small part of the zero page to initialize the stack pointer */
#if 0 /* the MON08 onchip monitor needs pushes some bytes before calling _Startup */
#define _STACK_TMP  0xFE  /* 0xFE, 0xFF */
#else
#define _STACK_TMP  0xF0  /* 0xF0, 0xF1 */
#endif

#ifndef __NEW_LINKER
  #define __NEW_LINKER 1 /* was disabled in previous versions */
#endif

#if __NEW_LINKER /* for usage with the linker version of at least V5.0.10 */
  extern char __SEG_END_SSTACK[];
  #define INIT_SP_FROM_STARTUP_DESC() __asm LDHX @__SEG_END_SSTACK; __asm TXS;
#define __NO_STACK_OFFSET 1

#elif 0 /* for the MON08 onchip monitor, we should not destroy _STACK_TMP */
  #ifdef __ELF_OBJECT_FILE_FORMAT__
    #define __STACK_OFF_ADD 0
  #else
    #define __STACK_OFF_ADD 2 /* in hiware format, the stackOffset field is a long */
  #endif
#define INIT_SP_FROM_STARTUP_DESC() \
  __asm LDA   _STACK_TMP                                   ; /* save orig value at _STACK_TMP                            */ \
  __asm LDX   _startupData.stackOffset:(0+__STACK_OFF_ADD) ; /* load high byte                                           */ \
  __asm STX   _STACK_TMP                                   ; /* store high byte                                          */ \
  __asm LDHX  _STACK_TMP                                   ; /* load high byte into H register, low byte in X is ignored */ \
  __asm LDX   _startupData.stackOffset:(1+__STACK_OFF_ADD) ; /* load low byte of stack address into X                    */ \
  __asm TXS                                                ; /* set new stack pointer                                    */ \
  __asm STA   _STACK_TMP                                   ; /* restore old value at _STACK_TMP                          */

#else /* old SP initlization code */

#ifdef __ELF_OBJECT_FILE_FORMAT__
  #define INIT_SP_FROM_STARTUP_DESC() \
        __asm LDA     _startupData.stackOffset:0;   \
        __asm STA     _STACK_TMP;                   \
        __asm LDA     _startupData.stackOffset:1;   \
        __asm STA     _STACK_TMP+1;                 \
        __asm LDHX    _STACK_TMP;                   \
        __asm TXS;
#else /* __ELF_OBJECT_FILE_FORMAT__ */
  #define INIT_SP_FROM_STARTUP_DESC() \
        __asm LDA     _startupData.stackOffset:2;   \
        __asm STA     _STACK_TMP;                   \
        __asm LDA     _startupData.stackOffset:3;   \
        __asm STA     _STACK_TMP+1;                 \
        __asm LDHX    _STACK_TMP;                   \
        __asm TXS;
#endif /* __ELF_OBJECT_FILE_FORMAT__ */
#endif /* NEW_LINKER */

#define far    /* no far keyword supported for HC08 */
#define FAR    /* no far keyword supported for HC08 */
#define _FAR   /* no far keyword supported for HC08 */
#define NEAR   /* no near keyword supported for HC08 */
#define _NEAR  /* no near keyword supported for HC08 */

#ifdef __cplusplus
 }
#endif

#endif

/*****************************************************/
/* end hidef.h */

⌨️ 快捷键说明

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