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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)I/O寄存器的C語言源程序及剖析詳解

          AVR單片機(jī)I/O寄存器的C語言源程序及剖析詳解

          作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          I/O寄存器C語言源程序及剖析

            在ICCAVR中訪問0x00~0x3f的寄存器空間,可以使用內(nèi)匯編和預(yù)處理宏。一個(gè)數(shù)據(jù)內(nèi)存地址可以通過加指針類型符號(hào)直接訪問。

          本文引用地址:http://www.ex-cimer.com/article/201611/323654.htm

          例如,SREG寄存器的地址是0x5f,對(duì)它的訪問操作:

          unsigned char c;

          c=*(volatile unsigned char *)0x5f;//讀取SREG寄存器

            *(volatile unsigned char *)0x5f|=0x80;//打開全局中斷允許位

           提示:數(shù)據(jù)內(nèi)存地址0x00~0x31指向CPU通用寄存器R0~R31,不能隨意修改它們的地址(或者輸入錯(cuò)誤的地址),否則可能會(huì)造成致命的錯(cuò)誤。

            ICCAVR C在io*v.h文件中用define偽指令給大部分的寄存器定義了指針形式符號(hào),如定義SREG:#define SREG *(volatile unsigned char *)0x5f

          上面對(duì)SREG的操作也可以改為:

            unsigned char c;

          c=SREG;//讀取SREG寄存器

          SREG|=0X80;//打開全局中斷允許位

          說明:

             1.在ICCAVR中對(duì)I/O寄存器進(jìn)行操作,編譯器自動(dòng)生成用于訪問I/O寄存器的專用指令,如IN、OUT、BSET、BCLR等,而且已將地址0X5F變換為0x3f。

             2.#define語句也可以定義絕對(duì)內(nèi)存空間,用以指向一個(gè)固定地址的字節(jié),如:#define LED_OUT *(volatile unsigned char *)0x80aa



          關(guān)鍵詞: AVR單片機(jī)寄存器C語

          評(píng)論


          技術(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); })();