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

发布者:advancement3最新更新时间:2019-11-27 来源: 51hei关键字:PORT  H头文件  AVR定时器  通用IO端口 手机看文章 扫描二维码
随时随地手机看文章

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


      文件名称: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<<(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)                                        

   (*(                                                

[1] [2]
关键字:PORT  H头文件  AVR定时器  通用IO端口 引用地址:PORT.H头文件下载-AVR定时器通用IO端口定义

上一篇:TimerMode.h头文件下载-AVR定时器工作模式名称定义
下一篇:ICC AVR软件Table键一次缩进四个空格的设置

推荐阅读最新更新时间:2024-11-13 10:37

IAR For AVR 关于 comp_a90.h 头文件的使用
使用comp_a90.h头文件时最好包括intrinsics.h头文件,intrinsics.h内在函数提供最简单的操作处理器底层特征。休眠,看门狗,FLASH函数。 /************************************************************** ** - INAVR.H - ** ** Backwards compatibility macros for iccAVR ** ** Used with iccAVR. ** ** Copyright IAR Systems 1999. All rights reserved. ** ** File versi
[单片机]
AVR应用笔记二(定时器0溢出中断)
简介:本文主要为关于定时器0溢出中断的程序处理。 //--------------------------------------------------------------------- //Copyright(c) 博控设计joecongmin 2010 All righr reserved //文件名:timer0_test1.c //文件描述:用定时器1完成100US定时,一秒钟到后取反PC1口 //外接的LED灯,实现LED灯的闪烁。 //实验目的:学习AVR 单片机的定时器0用作定时器用的方法 //当前版本号:V1.0 //完成时间:2010-4-7 13:02:45 //修改记录: //修改时间: /起草时间
[单片机]
AVR定时器与计数器
ATmega8有3个定时器/计数器.分别是:T/C0,T/C1,T/C2.除了T/C1为16位的计数长度外,其他2个计数器都是8位计数器. 特殊功能寄存器SFIOR 7 6 5 4 3 2 1 0 - - - ADHSM SCME PUD PSR2 PSR10 位0--PSR10:预定比例分频器复位 当对PSR10位写 1 ,复位预定比例分频器. 当对PSR10位写 0 ,不产生任何操作. T/C0定时器计数器: TCCR0:T/C0控制寄存器 7 6 5 4 3
[单片机]
AVR单片机定时器0的比较匹配功能试验TIME0_CTC
/*闲言碎语不要讲*/ /*AVR定时器0的比较匹配功能试验 */ #include iom16v.h #define uchar unsigned char #define uint unsigned int #define set_bit(a,b) a|=(1 b) #define clr_bit(a,b) a&=(1 b) #define get_bit(a,b) a&(1 b) #pragma interrupt_handler time0ctc_isr:20 void time0ctc_isr()//定时计数器0比较匹配中断 { ;/*其实这个比较匹配就是一个频率发生器,而他的频率大小由OCR0控制,所以在这中断离改变
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved