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

📄 os_cpu.h

📁 时间触发式51单片机嵌入式多任务系统
💻 H
字号:
/*------------------------------------------------------------------*-

   OS_cpu.H (v1.01)

  ------------------------------------------------------------------

   'Project Header' (see Chap 9) for project IO_T2_T1 (see Chap 18)


   COPYRIGHT
   ---------

   This code is from the book:

   PATTERNS FOR TIME-TRIGGERED EMBEDDED SYSTEMS by Michael J. Pont
   [Pearson Education, 2001; ISBN: 0-201-33138-1].

   This code is copyright (c) 2001 by Michael J. Pont.

   See book for copyright details and other information.

-*------------------------------------------------------------------*/

#ifndef _OS_CPU_H
#define _OS_CPU_H

//------------------------------------------------------------------
// WILL NEED TO EDIT THIS SECTION FOR EVERY PROJECT
//------------------------------------------------------------------

// Must include the appropriate microcontroller header file here
// Use CPU=AT89x52
//#include <AT89x52.h>

// Use CPU=STC89C58RD+
#include <stc/STC89C51.h>

// Use AT89C51RC
//#include <REG52.H>
#ifdef __REG52_H__
   sfr AUXR    = 0x8E;	// AT89C51RC use
   sfr T2MOD   = 0xC9;
#endif

// Include oscillator / chip details here
// (essential if generic delays / timeouts are used)
//  -
// Oscillator / resonator frequency (in Hz) e.g. (11059200UL)
//#define OSC_FREQ (11059200UL)
#define OSC_FREQ (22118400UL)
//#define OSC_FREQ (33177600UL)

// Number of oscillations per instruction (4, 6 or 12)
// 12 - Original 8051 / 8052 and numerous modern versions
//  6 - Various Infineon and Philips devices, etc.
//  4 - Dallas, etc.
//
// Take care with Dallas devices
// - Timers default to *12* osc ticks unless CKCON is modified
// - If using generic code on a Dallas device, use 12 here
#define OSC_PER_INST (6)

#define mFosc_Tick                      (5)     // 系统心跳5ms/tick

//------------------------------------------------------------------
// Interrupts
// - see Chapter 13.
//------------------------------------------------------------------

// Generic 8051/52 timer interrupts (used in most schedulers)
#define INTERRUPT_Timer_0_Overflow 	1
#define INTERRUPT_Timer_1_Overflow 	3
#define INTERRUPT_Timer_2_Overflow 	5

// Additional interrupts (used in shared-clock schedulers)
#define INTERRUPT_EXTERNAL_0 	    0
#define INTERRUPT_EXTERNAL_1 	    2
#define INTERRUPT_UART_Rx_Tx 	    4
#define INTERRUPT_CAN_c515c 	    17

// use STC89xx
#define ALE_OFF()                   AUXR |= B0000_0001; // close ALE out
#define EXRAM_OFF()                 AUXR |= B0000_0010; // close read EXTRAM
#define EXRAM_ON()                  AUXR &= B1111_1101; // open read EXTRAM

#define OS_ENTER_CRITICAL()         EA = 0;    //关中断
#define OS_EXIT_CRITICAL()          EA = 1;    //开中断

//------------------------------------------------------------------
// typedef data type
//------------------------------------------------------------------
#define bitb                    bit bdata
#define ulong                   unsigned long
#define uint                    unsigned int
#define uchar                   unsigned char
#define ulongd                  unsigned long data
#define uintd                   unsigned int  data
#define uchard                  unsigned char data
#define ulongb                  unsigned long bdata
#define uintb                   unsigned int  bdata
#define ucharb                  unsigned char bdata
#define ulongi                  unsigned long idata
#define uinti                   unsigned int  idata
#define uchari                  unsigned char idata
#define ulongp                  unsigned long pdata
#define uintp                   unsigned int  pdata
#define ucharp                  unsigned char pdata
#define ulongx                  unsigned long xdata
#define uintx                   unsigned int  xdata
#define ucharx                  unsigned char xdata
#define ulongc                  unsigned long code
#define uintc                   unsigned int  code
#define ucharc                  unsigned char code

#define INT32U                  unsigned long
#define INT16U                  unsigned int
#define INT8U                   unsigned char
#define INT32U_DATA             unsigned long data
#define INT16U_DATA             unsigned int  data
#define INT8U_DATA              unsigned char data
#define INT32U_BDATA            unsigned long bdata
#define INT16U_BDATA            unsigned int  bdata
#define INT8U_BDATA             unsigned char bdata
#define INT32U_IDATA            unsigned long idata
#define INT16U_IDATA            unsigned int  idata
#define INT8U_IDATA             unsigned char idata
#define INT32U_PDATA            unsigned long pdata
#define INT16U_PDATA            unsigned int  pdata
#define INT8U_PDATA             unsigned char pdata
#define INT32U_XDATA            unsigned long xdata
#define INT16U_XDATA            unsigned int  xdata
#define INT8U_XDATA             unsigned char xdata
#define INT32U_CODE             unsigned long code
#define INT16U_CODE             unsigned int  code
#define INT8U_CODE              unsigned char code

typedef unsigned char           tByte;
typedef unsigned int            tWord;
typedef unsigned long           tLong;
typedef float                   tFloat;
#define tBOOL                   bit
#define tExtData                xdata
#define tInData                 idata
#define tAutoData               data
#define mREENTRANT              reentrant


#define TRUE                    1
#define FALSE                   0
#define HIGH                    1
#define LOW                     0
#define ON                      0
#define OFF                     1
#define mR                      1
#define mW                      0

#endif

/*------------------------------------------------------------------*-
  ---- END OF FILE -------------------------------------------------
-*------------------------------------------------------------------*/

⌨️ 快捷键说明

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