新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PSTN短消息終端SoC系統的軟硬件設計

        PSTN短消息終端SoC系統的軟硬件設計

        作者: 時間:2010-12-06 來源:網絡 收藏
          sfr MODEM_CTRL = 0xf2;/* 擴展,Modem控制,只寫 */

        本文引用地址:http://www.104case.com/article/151285.htm

          sfr KEYPAD_VALUE = 0xf4;/* 擴展,讀鍵盤值,只讀 */

          sfr FLASH_PAGE = 0xf5; /* 擴展,頁面尋址,只寫 */

          sfr LCD_DATA = 0xf6; /* 擴展,LCD數據,讀寫 */

          sfr LCD_CTRL = 0xf7; /* 擴展,LCD控制,只寫 */

          sfr CIRCUIT_STATUS = 0xff; /* 擴展,線路狀態,只讀 */

          sfr CIRCUIT_CTRL = 0xff; /* 擴展,線路控制,只寫 */

          為了節約SFR總線地址資源,一些擴展的SFR寄存器在硬件上為只能寫、不可讀,另外一些被為只能讀、不可寫。這樣,二者可以復用同一個SFR總線地址,比如MODEM_CTRL和READ_DTMF_DECODE寄存器;但是這樣在需要先將那些“只寫”寄存器的內容讀出,運算后再進行寫回操作的時候就很不方便。這里采用了鏡像變量的方法,為每一個“只寫”寄存器建立一個全局變量,每次寫寄存器操作后,都對這個全局變量進行同樣的寫操作,時刻保持變量值和寄存器的內容一致,在需要讀出的時候就使用此全局變量。MODEM_CTRL寄存器的bit0控制Modem是DTMF還是FSK模式。下面以對這一位的操作為例說明。

          建立它的鏡像全局變量:

          unsigned char xdata modem_ctrl_mirror;

          定義控制位:

          #define MODEM_B0_MODE0x01// 1-DTMF, 0-FSK

          

        片上外設在SFR總線上的物理連接

          圖2 片上外設在SFR總線上的物理連接

          設置Modem為FSK模式:

          void Modem_SetMode_FSK() {

          MODEM_CTRL = modem_ctrl_mirror (~MODEM_B0_MODE);

          modem_ctrl_mirror = modem_ctrl_mirror (~MODEM_B0_MODE);

          }

          在初始化程序中對這些“只寫”寄存器及其鏡像全局變量進行賦值。

          void DevicesInit() {

          MODEM_CTRL = MODEM_CTRL_INI;

          modem_ctrl_mirror = MODEM_CTRL_INI;

          }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 梁山县| 天台县| 青海省| 阿拉尔市| 民勤县| 安龙县| 浙江省| 西昌市| 广河县| 蛟河市| 广州市| 铜川市| 忻州市| 桦川县| 如东县| 辽阳市| 杨浦区| 化德县| 石楼县| 子洲县| 楚雄市| 洞口县| 太仆寺旗| 应用必备| 延川县| 安陆市| 屏东市| 衡阳市| 河间市| 梧州市| 杭锦后旗| 衡山县| 台东县| 巴彦淖尔市| 阜康市| 金华市| 仙游县| 南江县| 新津县| 宜兰县| 油尖旺区|