找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5075|回復: 0
打印 上一主題 下一主題
收起左側(cè)

PORT.H頭文件下載-AVR定時器通用IO端口定義

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71259 發(fā)表于 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        //置數(shù)據(jù)位
  39. #define   CLR(X)            PORT(X) &= ~((X)%256)      //清數(shù)據(jù)位
  40. #define   PTOG(X)           PORT(X) ^=  (X)%256        //取反數(shù)據(jù)位
  41. #define   OUT(X)            DDR(X)  |=  (X)%256        //數(shù)據(jù)方向:輸出
  42. #define   IN(X)             DDR(X)  &= ~((X)%256)      //數(shù)據(jù)方向:輸入
  43. #define   DTOG(X)           DDR(X)  ^=  (X)%256        //數(shù)據(jù)方向:轉(zhuǎn)換
  44. #define   READ(X)           (PIN(X) & ((X)%256))       //讀取數(shù)據(jù)引腳電平


  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
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表