macros._h

来自「单片机中的中断处理模块」· _H 代码 · 共 76 行

_H
76
字号
#ifndef __MACROS_H
#define __MACROS_H	1

#include "stdtypes.h"

/* FOR ATMEL AVR and TINY AVR ONLY! */

#ifndef BIT
#define BIT(x)	(1 << (x))
#endif

#if defined(_AVR) && !defined(flash)
#define flash	const		/* IAR compatibility */
#endif

#ifndef C_task
#define C_task
#endif

#define _asm	asm			/* old style */

#define WDR() 	asm("wdr")
#define SEI()	asm("sei")
#define CLI()	asm("cli")
#define NOP()	asm("nop")
#define _WDR() 	asm("wdr")
#define _SEI()	asm("sei")
#define _CLI()	asm("cli")
#define _NOP()	asm("nop")

#ifdef _AVR
/* Serial Port Macros
 * for 4 Mhz crystal!
 * 
 * USE THE APPBUILDER for UART initialization!!!
 */
#define BAUD9600	25
#define BAUD19K		12

#define UART_TRANSMIT_ON()	UCR |= 0x8
#define UART_TRANSMIT_OFF()	UCR &= ~0x8
#define UART_RECEIVE_ON()	UCR |= 0x10
#define UART_RECEIVE_OFF()	UCR &= ~0x10

#define COMPRESS_DISABLE		NOCC_START()
#define COMPRESS_REENABLE		NOCC_END()

#define NOCC_START()	asm(".nocc_start")
#define NOCC_END()	asm(".nocc_end")

void _StackCheck(void);
void _StackOverflowed(char);




// 定义一个寄存器(Register)或端口(Port)的八个位 
   typedef struct _bit_struct 
      { 
                    UNS8 bit0 : 1 ; 
                    UNS8 bit1 : 1 ; 
                    UNS8 bit2 : 1 ; 
                    UNS8 bit3 : 1 ; 
                    UNS8 bit4 : 1 ; 
                    UNS8 bit5 : 1 ; 
                    UNS8 bit7 : 1 ; 
                    UNS8 bit6 : 1 ; 
      }bit_field; 

 //定义一个宏,用来得到每一位的值 
  #define GET_BITFIELD(addr) (*((volatile  bit_field *) (addr))) 

#endif

#endif

⌨️ 快捷键说明

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