×
单片机 > 单片机程序设计 > 详情

PORT.H头文件下载-AVR定时器通用IO端口定义

发布时间:2020-06-17 发布时间:
|

/*****************************************************************************


      文件名称:PORT.H

      文件标识:_PORT_H_

      摘    要:AVR定时器通用IO端口定义


*****************************************************************************/

#ifndef  _PORT_H_

#define  _PORT_H_



#define   P(X,Y)            (BYPORT(X)*256+BYBIT(Y))   //合并引脚信息



#define   BYPORT(X)         BYPORT_##X                 //端口

#define   BYPORT_A          0                          //A口

#define   BYPORT_B          1                          //B口

#define   BYPORT_C          2                          //C口

#define   BYPORT_D          3                          //D口

#define   BYPORT_E          4                          //E口

#define   BYPORT_F          5                          //F口

#define   BYPORT_G          6                          //G口



#define   BYBIT(X)          BYBIT_##X                  //口线

#define   BYBIT_0           (1 << 0)                   //位0

#define   BYBIT_1           (1 << 1)                   //位1

#define   BYBIT_2           (1 << 2)                   //位2

#define   BYBIT_3           (1 << 3)                   //位3

#define   BYBIT_4           (1 << 4)                   //位4

#define   BYBIT_5           (1 << 5)                   //位5

#define   BYBIT_6           (1 << 6)                   //位6

#define   BYBIT_7           (1 << 7)                   //位7

#define   BYBIT_H           0XF0                       //高四位

#define   BYBIT_L           0X0F                       //低四位

#define   BYBIT_W           0XFF                       //全八位



#define   BIT(X)            (1 << (X))                 //位X

#define   SetBit(var,X)     (var) |= 1<

#define   ClrBit(var,X)     (var) &= ~(1<

#define   TogBit(var,X)     (var) ^= 1<

#define   TestBit(var,X)    ((var) & (1<



#define   SET(X)            PORT(X) |=  (X)%256        //置数据位

#define   CLR(X)            PORT(X) &= ~((X)%256)      //清数据位

#define   PTOG(X)           PORT(X) ^=  (X)%256        //取反数据位

#define   OUT(X)            DDR(X)  |=  (X)%256        //数据方向:输出

#define   IN(X)             DDR(X)  &= ~((X)%256)      //数据方向:输入

#define   DTOG(X)           DDR(X)  ^=  (X)%256        //数据方向:转换

#define   READ(X)           (PIN(X) & ((X)%256))       //读取数据引脚电平



#ifndef  PORTA

#define  PORTA              (*(volatile unsigned char *)0x00)

#define  DDRA               (*(volatile unsigned char *)0x00)

#define  PINA               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTB

#define  PORTB              (*(volatile unsigned char *)0x00)

#define  DDRB               (*(volatile unsigned char *)0x00)

#define  PINB               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTC

#define  PORTC              (*(volatile unsigned char *)0x00)

#define  DDRC               (*(volatile unsigned char *)0x00)

#define  PINC               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTD

#define  PORTD              (*(volatile unsigned char *)0x00)

#define  DDRD               (*(volatile unsigned char *)0x00)

#define  PIND               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTE

#define  PORTE              (*(volatile unsigned char *)0x00)

#define  DDRE               (*(volatile unsigned char *)0x00)

#define  PINE               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTF

#define  PORTF              (*(volatile unsigned char *)0x00)

#define  DDRF               (*(volatile unsigned char *)0x00)

#define  PINF               (*(volatile unsigned char *)0x00)

#endif


#ifndef  PORTG

#define  PORTG              (*(volatile unsigned char *)0x00)

#define  DDRG               (*(volatile unsigned char *)0x00)

#define  PING               (*(volatile unsigned char *)0x00)

#endif



#define  ADDRESS0           (*(volatile unsigned char *)0x00)




#define  PORT(X)                                      

   (*(                                                

      (X)/256 == 0 ? &PORTA :                          

      (X)/256 == 1 ? &PORTB :                          

      (X)/256 == 2 ? &PORTC :                          

      (X)/256 == 3 ? &PORTD :                          

      (X)/256 == 4 ? &PORTE :                          

      (X)/256 == 5 ? &PORTF :                          

      (X)/256 == 6 ? &PORTG : &ADDRESS0                

   ))



#define  DDR(X)                                        

   (*(                                                

      (X)/256 == 0 ? &DDRA :                          

      (X)/256 == 1 ? &DDRB :                          

      (X)/256 == 2 ? &DDRC :                          

      (X)/256 == 3 ? &DDRD :                          

      (X)/256 == 4 ? &DDRE :                          

      (X)/256 == 5 ? &DDRF :                          

      (X)/256 == 6 ? &DDRG : &ADDRESS0                

   ))




#define PIN(X)



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址