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

📄 macros.h

📁 实现Fujitsu-FFMC-16-V120 ucos系统移植
💻 H
字号:
/*
*********************************************************************************************************
*
* File:    macros.h
* Created: 07-22-2001, 05:05 PM
*
* Project: mmk2
*
* Author:  Aleksey Musin
*
* Description: port bits access macros
*              for Fujitsu MB90 uC family
*              (Softune C compiler)
* Based on Atmel AVR macros by both Ascold Volkov and Andy Mozzevilov
*********************************************************************************************************
*/

/*
examples

#define Pin1 2,2,H
#define Pin2 8,3,L
             ^ ^ ^
          port | |
             bit \active level

void main(void)
{
  direct(Pin1,O); //as output
  direct(Pin2,I); //as input
  driver(Pin2,PullUp); //driver(Pin2,HiZ);
  on(Pin1);
  if (signal(Pin2)) cpl(Pin1);
  if (latch(Pin1)) { //if active level presents on Pin1 for drive something
    //do something
  }
}
*/

#define _setL(port,bit,val) PDR##port##_P##port##bit##=0
#define _setH(port,bit,val) PDR##port##_P##port##bit##=1
#define _set(port,bit,val) _set##val(port,bit,val)
#define on(x) _set(x)
#define __setH(x) _setH(x)
#define SET __setH

#define _clrL(port,bit,val) PDR##port##_P##port##bit##=1
#define _clrH(port,bit,val) PDR##port##_P##port##bit##=0
#define _clr(port,bit,val) _clr##val(port,bit,val)
#define off(x) _clr(x)
#define __clrH(x) _clrH(x)
#define CLR __clrH

#define _bitL(port,bit) (!(PDR##port##_P##port##bit))
#define _bitH(port,bit) (PDR##port##_P##port##bit)
#define _bit(port,bit,val) _bit##val(port,bit)
#define _latch(port,bit,val) _bit##val(port,bit)
#define signal(x) _bit(x)
#define latch(x) _latch(x)
#define __bitH(x) _bitH(x)
#define BIT __bitH

#define _cpl(port,bit,val) PDR##port##_P##port##bit##=~(PDR##port##_P##port##bit##)
#define cpl(x) _cpl (x)
#define __cpl(x) _cpl(x)
#define CPL __cpl
/*
#define _bitnum(port,bit,val) bit
#define BITNUM(x) _bitnum(x)
*/

#define _setO(line) line=1
#define _setI(line) line=0
#define _setPullUp(line) line=1
#define _setHiZ(line) line=0
#define _mode(port,bit,val,mode) _set##mode(DDR##port##_D##port##bit)
#define _dmode(port,bit,val,dmode) _set##dmode(PUCR##port##_PU##port##bit)
/* mode = O or I */
#define direct(x,mode) _mode(x,mode)
/* dmode = PullUp or HiZ */
#define driver(x,dmode) _dmode(x,dmode)

/* Other macros */

#define NOP()               __wait_nop()
#define enable_interrupt()  __EI()
#define disable_interrupt() __DI()

/* Original header file (for AVR) */

/*port bits access macros. Original written by Ascold Volkov. Rewritten by Andy Mozzevilov
 and i used it :) */

/*
examples

#define Pin1 D,2,H
#define Pin2 C,3,L
             ^ ^ ^
          port | |
             bit \active level

void main(void)
{
  direct(Pin1,O); //as output
  direct(Pin2,I); //as input
  driver(Pin2,PullUp); //driver(Pin2,HiZ);
  on(Pin1);
  if (signal(Pin2)) cpl(Pin1);
  if (latch(Pin1)) { //if active level presents on Pin1 for drive something
    //do something
  }
}
*/
/*
#define _setL(port,bit) port&=~(1<<bit)
#define _setH(port,bit) port|=(1<<bit)
#define _set(port,bit,val) _set##val(PORT##port,bit)
#define on(x) _set (x)
#define SET _setH

#define _clrL(port,bit) port|=(1<<bit)
#define _clrH(port,bit) port&=~(1<<bit)
#define _clr(port,bit,val) _clr##val(PORT##port,bit)
#define off(x) _clr (x)
#define CLR _clrH

#define _bitL(port,bit) (!(port&(1<<bit)))
#define _bitH(port,bit) (port&(1<<bit))
#define _bit(port,bit,val) _bit##val(PIN##port,bit)
#define _latch(port,bit,val) _bit##val(PORT##port,bit)
#define signal(x) _bit (x)
#define latch(x) _latch (x)
#define BIT _bitH

#define _cpl(port,bit,val) port^=(1<<bit)
#define __cpl(port,bit,val) PORT##port^=(1<<bit)
#define cpl(x) __cpl (x)
#define CPL _cpl

#define _bitnum(port,bit,val) bit
#define BITNUM(x) _bitnum(x)

#define _setO(port,bit) port|=(1<<bit)
#define _setI(port,bit) port&=~(1<<bit)
#define _setPullUp(port,bit) port|=(1<<bit)
#define _setHiZ(port,bit) port&=~(1<<bit)
#define _mode(port,bit,val,mode) _set##mode(DDR##port,bit)
#define _dmode(port,bit,val,dmode) _set##dmode(PORT##port,bit)
#define DIR(port,bit,mode) _set##mode(DDR##port,bit)
#define DRIVER(port,bit,mode) _set##mode(PORT##port,bit)
//mode = O or I
#define direct(x,mode) _mode(x,mode)
//dmode = PullUp or HiZ
#define driver(x,dmode) _dmode(x,dmode)
  */

/*original macros by Ascold Volkov begin here

#define _setL(port,bit) port&=~(1<<bit)
#define _setH(port,bit) port|=(1<<bit)
#define _set(port,bit,val) _set##val(port,bit)
#define on(x) _set (x)
#define SET _setH

#define _clrL(port,bit) port|=(1<<bit)
#define _clrH(port,bit) port&=~(1<<bit)
#define _clr(port,bit,val) _clr##val(port,bit)
#define off(x) _clr (x)
#define CLR _clrH

#define _bitL(port,bit) (!(port&(1<<bit)))
#define _bitH(port,bit) (port&(1<<bit))
#define _bit(port,bit,val) _bit##val(port,bit)
#define signal(x) _bit (x)
#define BIT _bitH

#define _cpl(port,bit,val) port^=(1<<bit)
#define cpl(x) _cpl (x)
#define CPL _cpl
*/




⌨️ 快捷键说明

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