<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)特殊功能寄存器(SFR)介紹

          51單片機(jī)特殊功能寄存器(SFR)介紹

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏

          圖5 C語言編程中需撐握的15個寄存器

          這15寄存器中,根據(jù)前面講的51單片機(jī)內(nèi)部四大功能模塊又可分為四大部分:

          I/O口相關(guān):P1 P2 P3 P4

          中斷相關(guān):IP IE

          定時器相關(guān):TMOD TCON TL0、TH0、TL1、TH1

          串口通信相關(guān):PCON SBUF

          注意:
          在這四大部分中,除I/O口操作相關(guān)P1 P2 P3 P4相對獨(dú)立外,其它11個寄存器使用時通常會相互結(jié)合使用,也就是說中斷、定時器和串口通信三者通常會結(jié)合起來用,如外部中斷時,設(shè)置邊沿觸發(fā)還是電平觸發(fā)需設(shè)置TCON寄存器中的TR0和TR1位,使用定時器時又可能用到中斷,而串口通信時設(shè)置波特率又直接跟定時器相關(guān)。

          總之51單片機(jī)其實(shí)最難的就是對除I/O口外的11個寄存器的操作,但難歸難,但畢竟只有11個,只要肯定花功夫和時間,多寫寫程序,多調(diào)試,一定可以學(xué)得好,現(xiàn)在我也記不到,每次遇到時總得去查相關(guān)的書籍,而且感覺腦對這一塊還是很亂,再看哈書,看后面能不能總結(jié)出好的方法來。

          4、參考例程
          下面附出中斷、定時器及串口通信的三個例子,供大家參考:




          前面講到過,51單片機(jī)內(nèi)部共有21個特殊功能寄存器,如下圖所示。如果用C語言進(jìn)行編程時只需考慮15個寄存器,這15個寄存器按單片機(jī)內(nèi)部功能模塊以可分成四大類,分別為:

          I/O口操作相關(guān):P1 P2 P3 P4

          中斷相關(guān):IP IE

          定時器相關(guān):TMOD TCON TL0、TH0、TL1、TH1

          串口通信相關(guān):SCONPCON SBUF

          這15個寄存器中,P1 P2 P3 P4 TL0 TH0 TL1 TH1 SBUF這9個操作相對簡單,而PCON為電源控制寄存器,平時只有在串口通信編程中會用到最高位SMOD,當(dāng)SMOD=1,波特率會倍增,所以對這個寄存器只需要考慮這點(diǎn)就可以了,而對于IP寄存器為中斷優(yōu)先寄存器,對于單片機(jī)初學(xué)者基本上用不到,這里先不作介紹。

          剩下的就只有IE、TCON、SCON和TMOD4個寄存器了,如圖1中綠色圓圈的四個,分別為中斷允許寄存器(IE),定時器控制寄存器(TCON),定時器模式及工作方式寄存器(TMOD),串行口控制寄存器(SCON)。4個寄存器相對來說較難記住,下面分別對這4個寄存器及每一位進(jìn)行說明。



          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();