久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6111|回復: 0
打印 上一主題 下一主題
收起左側

sdcc下c51單片機通用頭文件 寄存器詳解

[復制鏈接]
跳轉到指定樓層
樓主
ID:338578 發表于 2018-5-26 11:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一、前言

之前花了一點時間閱讀了編譯器sdcc的man文檔,算是對這款交叉編譯器有了基本的了解。但要寫重新寫單片機程序,還要對相應的知識做進一步的復習。下面我將閱讀芯片的datasheet和application guide,結合一些實際的應用,對單片機的知識進行復習。我開發板上的芯片是stc90c51,不同型號的51芯片可能會略有差異。

二、外圍電路

要使單片機正常工作,需要在VCC腳上給予5v/3.3v的電壓,將GND腳接地。為了濾波 ,VCC和GND之間接兩個電容。XTAL上接一個外部振蕩器,RST腳上接外部復位電路。

雖然這些都已經標準化,無關編程。但在某些特殊情況下(比如晶振、穩壓芯片壞了,虛焊等等),需要配合示波器等作出硬件故障的排除,就需要檢查外圍電路的工作狀態。

三、片內資源

3.1 特殊功能寄存器&相關模塊

這里貼一下sdcc下c51通用的頭文件。可以清晰得看到控制GPIO,定時器,中斷,串口的相關寄存器。

  1. #ifndef REG8051_H
  2. #define REG8051_H

  3. /*  BYTE Register  */
  4. __sfr __at (0x80) P0   ;
  5. __sfr __at (0x81) SP   ;
  6. __sfr __at (0x82) DPL  ;
  7. __sfr __at (0x83) DPH  ;
  8. __sfr __at (0x87) PCON ;
  9. __sfr __at (0x88) TCON ;
  10. __sfr __at (0x89) TMOD ;
  11. __sfr __at (0x8A) TL0  ;
  12. __sfr __at (0x8B) TL1  ;
  13. __sfr __at (0x8C) TH0  ;
  14. __sfr __at (0x8D) TH1  ;
  15. __sfr __at (0x90) P1   ;
  16. __sfr __at (0x98) SCON ;
  17. __sfr __at (0x99) SBUF ;
  18. __sfr __at (0xA0) P2   ;
  19. __sfr __at (0xA8) IE   ;
  20. __sfr __at (0xB0) P3   ;
  21. __sfr __at (0xB8) IP   ;
  22. __sfr __at (0xD0) PSW  ;
  23. __sfr __at (0xE0) ACC  ;
  24. __sfr __at (0xF0) B    ;


  25. /*  BIT Register  */
  26. /* P0 */
  27. __sbit __at (0x80) P0_0 ;
  28. __sbit __at (0x81) P0_1 ;
  29. __sbit __at (0x82) P0_2 ;
  30. __sbit __at (0x83) P0_3 ;
  31. __sbit __at (0x84) P0_4 ;
  32. __sbit __at (0x85) P0_5 ;
  33. __sbit __at (0x86) P0_6 ;
  34. __sbit __at (0x87) P0_7 ;

  35. /*  TCON  */
  36. __sbit __at (0x88) IT0  ;
  37. __sbit __at (0x89) IE0  ;
  38. __sbit __at (0x8A) IT1  ;
  39. __sbit __at (0x8B) IE1  ;
  40. __sbit __at (0x8C) TR0  ;
  41. __sbit __at (0x8D) TF0  ;
  42. __sbit __at (0x8E) TR1  ;
  43. __sbit __at (0x8F) TF1  ;

  44. /* P1 */
  45. __sbit __at (0x90) P1_0 ;
  46. __sbit __at (0x91) P1_1 ;
  47. __sbit __at (0x92) P1_2 ;
  48. __sbit __at (0x93) P1_3 ;
  49. __sbit __at (0x94) P1_4 ;
  50. __sbit __at (0x95) P1_5 ;
  51. __sbit __at (0x96) P1_6 ;
  52. __sbit __at (0x97) P1_7 ;

  53. /*  SCON  */
  54. __sbit __at (0x98) RI   ;
  55. __sbit __at (0x99) TI   ;
  56. __sbit __at (0x9A) RB8  ;
  57. __sbit __at (0x9B) TB8  ;
  58. __sbit __at (0x9C) REN  ;
  59. __sbit __at (0x9D) SM2  ;
  60. __sbit __at (0x9E) SM1  ;
  61. __sbit __at (0x9F) SM0  ;

  62. /* P2 */
  63. __sbit __at (0xA0) P2_0 ;
  64. __sbit __at (0xA1) P2_1 ;
  65. __sbit __at (0xA2) P2_2 ;
  66. __sbit __at (0xA3) P2_3 ;
  67. __sbit __at (0xA4) P2_4 ;
  68. __sbit __at (0xA5) P2_5 ;
  69. __sbit __at (0xA6) P2_6 ;
  70. __sbit __at (0xA7) P2_7 ;

  71. /*  IE   */
  72. __sbit __at (0xA8) EX0  ;
  73. __sbit __at (0xA9) ET0  ;
  74. __sbit __at (0xAA) EX1  ;
  75. __sbit __at (0xAB) ET1  ;
  76. __sbit __at (0xAC) ES   ;
  77. __sbit __at (0xAF) EA   ;

  78. /*  P3  */
  79. __sbit __at (0xB0) P3_0 ;
  80. __sbit __at (0xB1) P3_1 ;
  81. __sbit __at (0xB2) P3_2 ;
  82. __sbit __at (0xB3) P3_3 ;
  83. __sbit __at (0xB4) P3_4 ;
  84. __sbit __at (0xB5) P3_5 ;
  85. __sbit __at (0xB6) P3_6 ;
  86. __sbit __at (0xB7) P3_7 ;

  87. __sbit __at (0xB0) RXD  ;
  88. __sbit __at (0xB1) TXD  ;
  89. __sbit __at (0xB2) INT0 ;
  90. __sbit __at (0xB3) INT1 ;
  91. __sbit __at (0xB4) T0   ;
  92. __sbit __at (0xB5) T1   ;
  93. __sbit __at (0xB6) WR   ;
  94. __sbit __at (0xB7) RD   ;

  95. /*  IP   */
  96. __sbit __at (0xB8) PX0  ;
  97. __sbit __at (0xB9) PT0  ;
  98. __sbit __at (0xBA) PX1  ;
  99. __sbit __at (0xBB) PT1  ;
  100. __sbit __at (0xBC) PS   ;

  101. /*  PSW   */
  102. __sbit __at (0xD0) P    ;
  103. __sbit __at (0xD1) F1   ;
  104. __sbit __at (0xD2) OV   ;
  105. __sbit __at (0xD3) RS0  ;
  106. __sbit __at (0xD4) RS1  ;
  107. __sbit __at (0xD5) F0   ;
  108. __sbit __at (0xD6) AC   ;
  109. __sbit __at (0xD7) CY   ;

  110. /* BIT definitions for bits that are not directly accessible */
  111. /* PCON bits */
  112. #define IDL             0x01
  113. #define PD              0x02
  114. #define GF0             0x04
  115. #define GF1             0x08
  116. #define SMOD            0x80

  117. /* TMOD bits */
  118. #define T0_M0           0x01
  119. #define T0_M1           0x02
  120. #define T0_CT           0x04
  121. #define T0_GATE         0x08
  122. #define T1_M0           0x10
  123. #define T1_M1           0x20
  124. #define T1_CT           0x40
  125. #define T1_GATE         0x80

  126. #define T0_MASK         0x0F
  127. #define T1_MASK         0xF0

  128. /* Interrupt numbers: address = (number * 8) + 3 */
  129. #define IE0_VECTOR      0       /* 0x03 external interrupt 0 */
  130. #define TF0_VECTOR      1       /* 0x0b timer 0 */
  131. #define IE1_VECTOR      2       /* 0x13 external interrupt 1 */
  132. #define TF1_VECTOR      3       /* 0x1b timer 1 */
  133. #define SI0_VECTOR      4       /* 0x23 serial port 0 */

  134. #endif
復制代碼

3.2 內部Ram&Rom

最初的51單片機有128byte的片內Ram和4K的片內的Rom,現在的51單片機可以有1K的片內Ram和64K片內的Rom。至于如何選擇芯片型號要根據項目的實際需要和成本,參考選型指南、供應市場的具體情況作出。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品国产三级国产aⅴ无密码 | 少妇无套高潮一二三区 | 日韩视频在线免费观看 | 午夜av免费 | 五月激情综合 | 麻豆亚洲| 国产二区在线播放 | 久久久久久久久久毛片 | 一级毛片在线播放 | 欧美国产精品一区二区三区 | 欧美激情视频一区二区三区在线播放 | 给我免费的视频在线观看 | 日本天堂一区 | 国产午夜精品一区二区三区嫩草 | 欧美三级成人理伦 | 免费久久精品视频 | 性做久久久久久免费观看欧美 | 日韩精品久久久久 | 国产999精品久久久久久 | 亚洲免费一区二区 | 国产在线一区观看 | 日韩一级电影免费观看 | 一区二区精品 | 一区二区三区在线看 | www.一区二区| 99久久精品国产麻豆演员表 | 最新免费视频 | 亚洲精品视频在线观看视频 | 欧美日韩视频在线播放 | 欧美极品在线 | 精品日韩欧美一区二区 | 精品九九久久 | 国产午夜精品一区二区三区 | 国产小视频在线观看 | 国产精品免费一区二区三区四区 | 亚洲成人福利视频 | 日本色综合| a级在线| 国产精品一区二区av | 日韩在线视频一区二区三区 | 91久久精品视频 |