标题:
PORT.H头文件下载-AVR定时器通用IO端口定义
[打印本页]
作者:
daming
时间:
2014-12-30 12:31
标题:
PORT.H头文件下载-AVR定时器通用IO端口定义
本帖最后由 daming 于 2014-12-30 12:41 编辑
在代码下方点复制代码,然后另存到电脑磁盘即可下载.
/*****************************************************************************
单 位:广西民族大学物理与电子工程学院07物本班
文件名称:PORT.H
文件标识:_PORT_H_
摘 要:AVR定时器通用IO端口定义
当前版本:V2.0
作 者 【白 羽】
完成日期:2010年11月16日
*****************************************************************************/
#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<<(X) //置位
#define ClrBit(var,X) (var) &= ~(1<<(X)) //清零
#define TogBit(var,X) (var) ^= 1<<(X) //取反
#define TestBit(var,X) ((var) & (1<<(X))) //测试
#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) \
(*( \
(X)/256 == 0 ? &PINA : \
(X)/256 == 1 ? &PINB : \
(X)/256 == 2 ? &PINC : \
(X)/256 == 3 ? &PIND : \
(X)/256 == 4 ? &PINE : \
(X)/256 == 5 ? &PINF : \
(X)/256 == 6 ? &PING : &ADDRESS0 \
))
#endif
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1