📄 pe_types.h
字号:
/******************************************************************/
/* Uniform multiplatform peripheral access macros - 16 bit access */
/******************************************************************/
#define setReg16Bit(RegName, BitName) (RegName |= RegName##_##BitName##_##MASK)
#define clrReg16Bit(RegName, BitName) (RegName &= ~RegName##_##BitName##_##MASK)
#define invertReg16Bit(RegName, BitName) (RegName ^= RegName##_##BitName##_##MASK)
#define testReg16Bit(RegName, BitName) (RegName & RegName##_##BitName##_##MASK)
/* Whole peripheral register access macros */
#define setReg16(RegName, val) (RegName = (word)(val))
#define getReg16(RegName) (RegName)
/* Bits peripheral register access macros */
#define testReg16Bits(RegName, GetMask) (RegName & (GetMask))
#define clrReg16Bits(RegName, ClrMask) (RegName &= ~(word)(ClrMask))
#define setReg16Bits(RegName, SetMask) (RegName |= (word)(SetMask))
#define invertReg16Bits(RegName, InvMask) (RegName ^= (word)(InvMask))
#define clrSetReg16Bits(RegName, ClrMask, SetMask) (RegName = (RegName & (~(word)(ClrMask))) | (word)(SetMask))
#define seqClrSetReg16Bits(RegName, BitsMask, BitsVal) (RegName &= ~(~(word)(BitsVal) & (word)(BitsMask)),\
RegName |= (word)(BitsVal) & (word)(BitsMask) )
#define seqSetClrReg16Bits(RegName, BitsMask, BitsVal) (RegName |= (word)(BitsVal) & (word)(BitsMask),\
RegName &= ~(~(word)(BitsVal) & (word)(BitsMask)) )
#define seqResetSetReg16Bits(RegName, BitsMask, BitsVal) (RegName &= ~(word)(BitsMask),\
RegName |= (word)(BitsVal) & (word)(BitsMask) )
#define clrReg16BitsByOne(RegName, ClrMask, BitsMask) (RegName &= (word)(ClrMask) & (word)(BitsMask))
/* Bit group peripheral register access macros */
#define testReg16BitGroup(RegName, GroupName) (RegName & RegName##_##GroupName##_##MASK)
#define getReg16BitGroupVal(RegName, GroupName) ((RegName & RegName##_##GroupName##_##MASK) >> RegName##_##GroupName##_##BITNUM)
#define setReg16BitGroupVal(RegName, GroupName, GroupVal) (RegName = (RegName & ~RegName##_##GroupName##_##MASK) | ((GroupVal) << RegName##_##GroupName##_##BITNUM))
#define seqClrSetReg16BitGroupVal(RegName,GroupName,GroupVal) (RegName &= ~(~((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK),\
RegName |= ((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK )
#define seqSetClrReg16BitGroupVal(RegName,GroupName,GroupVal) (RegName |= ((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK,\
RegName &= ~(~((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK) )
#define seqResetSetReg16BitGroupVal(RegName,GroupName,GroupVal) (RegName &= ~RegName##_##GroupName##_##MASK,\
RegName |= ((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK )
/*****************************************************************/
/* Uniform multiplatform peripheral access macros - 8 bit access */
/*****************************************************************/
#define setReg8Bit(RegName, BitName) (RegName |= RegName##_##BitName##_##MASK)
#define clrReg8Bit(RegName, BitName) (RegName &= ~RegName##_##BitName##_##MASK)
#define invertReg8Bit(RegName, BitName) (RegName ^= RegName##_##BitName##_##MASK)
#define testReg8Bit(RegName, BitName) (RegName & RegName##_##BitName##_##MASK)
/* Whole peripheral register access macros */
#define setReg8(RegName, val) (RegName = (byte)(val))
#define getReg8(RegName) (RegName)
/* Bits peripheral register access macros */
#define testReg8Bits(RegName, GetMask) (RegName & (GetMask))
#define clrReg8Bits(RegName, ClrMask) (RegName &= ~(byte)(ClrMask))
#define setReg8Bits(RegName, SetMask) (RegName |= (byte)(SetMask))
#define invertReg8Bits(RegName, InvMask) (RegName ^= (byte)(InvMask))
#define clrSetReg8Bits(RegName, ClrMask, SetMask) (RegName = (RegName & (~(byte)(ClrMask))) | (byte)(SetMask))
#define seqClrSetReg8Bits(RegName, BitsMask, BitsVal) (RegName &= ~(~(byte)(BitsVal) & (byte)(BitsMask)),\
RegName |= (byte)(BitsVal) & (byte)(BitsMask) )
#define seqSetClrReg8Bits(RegName, BitsMask, BitsVal) (RegName |= (byte)(BitsVal) & (byte)(BitsMask),\
RegName &= ~(~(byte)(BitsVal) & (byte)(BitsMask)) )
#define seqResetSetReg8Bits(RegName, BitsMask, BitsVal) (RegName &= ~(byte)(BitsMask),\
RegName |= (byte)(BitsVal) & (byte)(BitsMask) )
#define clrReg8BitsByOne(RegName, ClrMask, BitsMask) (RegName &= (byte)(ClrMask) & (byte)(BitsMask))
/* Bit group peripheral register access macros */
#define testReg8BitGroup(RegName, GroupName) (RegName & RegName##_##GroupName##_##MASK)
#define getReg8BitGroupVal(RegName, GroupName) ((RegName & RegName##_##GroupName##_##MASK) >> RegName##_##GroupName##_##BITNUM)
#define setReg8BitGroupVal(RegName, GroupName, GroupVal) (RegName = (RegName & ~RegName##_##GroupName##_##MASK) | ((GroupVal) << RegName##_##GroupName##_##BITNUM))
#define seqClrSetReg8BitGroupVal(RegName,GroupName,GroupVal) (RegName &= ~(~((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK),\
RegName |= ((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK )
#define seqSetClrReg8BitGroupVal(RegName,GroupName,GroupVal) (RegName |= ((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK,\
RegName &= ~(~((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK) )
#define seqResetSetReg8BitGroupVal(RegName,GroupName,GroupVal) (RegName &= ~RegName##_##GroupName##_##MASK,\
RegName |= ((GroupVal) << RegName##_##GroupName##_##BITNUM) & RegName##_##GroupName##_##MASK )
/*lint -restore */
/* register access macros */
#define in16(var,l,h) (var = ((word)(l)) | (((word)(h)) << 8))
#define out16(l,h,val) { l = (byte)(val); h = (byte)((val) >> 8); }
#define output(P, V) (P = (V))
#define input(P) (P)
#define __DI() \
/*lint -save -esym(960,54) Disable MISRA rule (54) checking. */\
{ asm sei; } /* Disable interrupts */ \
/*lint -restore */
#define __EI() \
/*lint -save -esym(960,54) Disable MISRA rule (54) checking. */\
{ asm cli; } /* Enable interrupts */ \
/*lint -restore */
#define SaveStatusReg() \
/*lint -save -e505 -e522 -esym(960,54) Disable MISRA rule (53,54) checking. */\
{ asm PSHA; asm TPA; asm SEI; asm STA CCR_reg; asm PULA; } /* This macro is used by Processor Expert. It saves CCR register and disable global interrupts. */ \
/*lint -restore */
#define RestoreStatusReg() \
/*lint -save -e505 -e522 -esym(960,54) Disable MISRA rule (53,54) checking. */\
{ asm PSHA; asm LDA CCR_reg; asm TAP; asm PULA; } /* This macro is used by Processor Expert. It restores CCR register saved in SaveStatusReg(). */ \
/*lint -restore */
#define EnterCritical() SaveStatusReg()
#define ExitCritical() RestoreStatusReg()
#define ISR(x) __interrupt void x(void)
typedef struct { /* Black&White Image */
word width; /* Image width */
word height; /* Image height */
byte * pixmap; /* Image pixel bitmap */
word size; /* Image size */
byte * name; /* Image name */
} TIMAGE;
typedef TIMAGE* PIMAGE ; /* Pointer to image */
/* 16-bit register (big endian) */
typedef union {
word w;
struct {
byte high,low;
} b;
} TWREG;
#endif /* __PE_Types_H */
/*
** ###################################################################
**
** This file was created by UNIS Processor Expert 3.03 [04.07]
** for the Freescale HCS08 series of microcontrollers.
**
** ###################################################################
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -