找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5062|回复: 0
收起左侧

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

[复制链接]
ID:71259 发表于 2014-12-30 12:31 | 显示全部楼层 |阅读模式
本帖最后由 daming 于 2014-12-30 12:41 编辑

在代码下方点复制代码,然后另存到电脑磁盘即可下载.
  1. /*****************************************************************************

  2.       单    位:广西民族大学物理与电子工程学院07物本班
  3.       文件名称:PORT.H
  4.       文件标识:_PORT_H_
  5.       摘    要:AVR定时器通用IO端口定义
  6.       当前版本:V2.0
  7.       作    者 【白 羽】
  8.       完成日期:2010年11月16日

  9. *****************************************************************************/
  10. #ifndef  _PORT_H_
  11. #define  _PORT_H_


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


  13. #define   BYPORT(X)         BYPORT_##X                 //端口
  14. #define   BYPORT_A          0                          //A口
  15. #define   BYPORT_B          1                          //B口
  16. #define   BYPORT_C          2                          //C口
  17. #define   BYPORT_D          3                          //D口
  18. #define   BYPORT_E          4                          //E口
  19. #define   BYPORT_F          5                          //F口
  20. #define   BYPORT_G          6                          //G口


  21. #define   BYBIT(X)          BYBIT_##X                  //口线
  22. #define   BYBIT_0           (1 << 0)                   //位0
  23. #define   BYBIT_1           (1 << 1)                   //位1
  24. #define   BYBIT_2           (1 << 2)                   //位2
  25. #define   BYBIT_3           (1 << 3)                   //位3
  26. #define   BYBIT_4           (1 << 4)                   //位4
  27. #define   BYBIT_5           (1 << 5)                   //位5
  28. #define   BYBIT_6           (1 << 6)                   //位6
  29. #define   BYBIT_7           (1 << 7)                   //位7
  30. #define   BYBIT_H           0XF0                       //高四位
  31. #define   BYBIT_L           0X0F                       //低四位
  32. #define   BYBIT_W           0XFF                       //全八位


  33. #define   BIT(X)            (1 << (X))                 //位X
  34. #define   SetBit(var,X)     (var) |= 1<<(X)            //置位
  35. #define   ClrBit(var,X)     (var) &= ~(1<<(X))         //清零
  36. #define   TogBit(var,X)     (var) ^= 1<<(X)            //取反
  37. #define   TestBit(var,X)    ((var) & (1<<(X)))         //测试


  38. #define   SET(X)            PORT(X) |=  (X)%256        //置数据位
  39. #define   CLR(X)            PORT(X) &= ~((X)%256)      //清数据位
  40. #define   PTOG(X)           PORT(X) ^=  (X)%256        //取反数据位
  41. #define   OUT(X)            DDR(X)  |=  (X)%256        //数据方向:输出
  42. #define   IN(X)             DDR(X)  &= ~((X)%256)      //数据方向:输入
  43. #define   DTOG(X)           DDR(X)  ^=  (X)%256        //数据方向:转换
  44. #define   READ(X)           (PIN(X) & ((X)%256))       //读取数据引脚电平


  45. #ifndef  PORTA
  46. #define  PORTA              (*(volatile unsigned char *)0x00)
  47. #define  DDRA               (*(volatile unsigned char *)0x00)
  48. #define  PINA               (*(volatile unsigned char *)0x00)
  49. #endif

  50. #ifndef  PORTB
  51. #define  PORTB              (*(volatile unsigned char *)0x00)
  52. #define  DDRB               (*(volatile unsigned char *)0x00)
  53. #define  PINB               (*(volatile unsigned char *)0x00)
  54. #endif

  55. #ifndef  PORTC
  56. #define  PORTC              (*(volatile unsigned char *)0x00)
  57. #define  DDRC               (*(volatile unsigned char *)0x00)
  58. #define  PINC               (*(volatile unsigned char *)0x00)
  59. #endif

  60. #ifndef  PORTD
  61. #define  PORTD              (*(volatile unsigned char *)0x00)
  62. #define  DDRD               (*(volatile unsigned char *)0x00)
  63. #define  PIND               (*(volatile unsigned char *)0x00)
  64. #endif

  65. #ifndef  PORTE
  66. #define  PORTE              (*(volatile unsigned char *)0x00)
  67. #define  DDRE               (*(volatile unsigned char *)0x00)
  68. #define  PINE               (*(volatile unsigned char *)0x00)
  69. #endif

  70. #ifndef  PORTF
  71. #define  PORTF              (*(volatile unsigned char *)0x00)
  72. #define  DDRF               (*(volatile unsigned char *)0x00)
  73. #define  PINF               (*(volatile unsigned char *)0x00)
  74. #endif

  75. #ifndef  PORTG
  76. #define  PORTG              (*(volatile unsigned char *)0x00)
  77. #define  DDRG               (*(volatile unsigned char *)0x00)
  78. #define  PING               (*(volatile unsigned char *)0x00)
  79. #endif


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



  81. #define  PORT(X)                                       \
  82.    (*(                                                 \
  83.       (X)/256 == 0 ? &PORTA :                          \
  84.       (X)/256 == 1 ? &PORTB :                          \
  85.       (X)/256 == 2 ? &PORTC :                          \
  86.       (X)/256 == 3 ? &PORTD :                          \
  87.       (X)/256 == 4 ? &PORTE :                          \
  88.       (X)/256 == 5 ? &PORTF :                          \
  89.       (X)/256 == 6 ? &PORTG : &ADDRESS0                \
  90.    ))


  91. #define  DDR(X)                                        \
  92.    (*(                                                 \
  93.       (X)/256 == 0 ? &DDRA :                           \
  94.       (X)/256 == 1 ? &DDRB :                           \
  95.       (X)/256 == 2 ? &DDRC :                           \
  96.       (X)/256 == 3 ? &DDRD :                           \
  97.       (X)/256 == 4 ? &DDRE :                           \
  98.       (X)/256 == 5 ? &DDRF :                           \
  99.       (X)/256 == 6 ? &DDRG : &ADDRESS0                 \
  100.    ))



  101. #define  PIN(X)                                        \
  102.    (*(                                                 \
  103.       (X)/256 == 0 ? &PINA :                           \
  104.       (X)/256 == 1 ? &PINB :                           \
  105.       (X)/256 == 2 ? &PINC :                           \
  106.       (X)/256 == 3 ? &PIND :                           \
  107.       (X)/256 == 4 ? &PINE :                           \
  108.       (X)/256 == 5 ? &PINF :                           \
  109.       (X)/256 == 6 ? &PING : &ADDRESS0                 \
  110.    ))




  111. #endif
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表