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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP+CPLD的新型智能監(jiān)測系統(tǒng)設(shè)計(jì)與開發(fā)

          基于DSP+CPLD的新型智能監(jiān)測系統(tǒng)設(shè)計(jì)與開發(fā)

          作者: 時(shí)間:2011-08-19 來源:網(wǎng)絡(luò) 收藏

            3 內(nèi)置T696 3C液晶顯示模塊的軟件實(shí)現(xiàn)

           ?。?)、地址分配及定義

             .data

             LCDC_ADD .equ 820003H;指令通道

            LCDD_ADD .equ 820001H;數(shù)據(jù)通道

           ?。?)、狀態(tài)字檢測子程序

             LCDR_ST: LDI @LCDC_ADD,R0

             RETS

            由此程序派生出判斷有關(guān)標(biāo)志位的子程序:

            

          1>判斷狀態(tài)位STA1和STA0子程序,在寫指令的讀、寫數(shù)據(jù)之前,這兩個(gè)標(biāo)志位必須同時(shí)為“1”。

             LCDST01: CALL LCDR_ST

             LDI R0,R1

             AND 01H,R1

             BZ LCDST01

             AND 02H,R0

             BZ LCDST01

             RETS

             2>判斷狀態(tài)位STA3子程序(數(shù)據(jù)自動(dòng)寫狀態(tài))

             LCDST3: CALL LCDR_ST

            AND 08H,R0

            BZ LCDST3

            RETS


           ?。?)、寫指令和寫數(shù)據(jù)子程序

             LCDPR1 : CALL LCDST01;雙字節(jié)參數(shù)指令寫入入口

             LDI AR1,R0

             CALL LCDPR13

             LCDPR11: CALL LCDST01 ;單字節(jié)參數(shù)指令寫入入口

            

          LDI AR2,R0

             CALL LCDPR13

             LCDPR12: CALL LCDST01 ;無參數(shù)指令寫入入口

             LDI AR3,R0

             LCDPR14: STI R0,@LCDC_ADD ;寫入指令操作

             RETS

             LCDPR13: STI R0,@LCDD_ADD;寫入數(shù)據(jù)操作

            RETS

           ?。?)、讀數(shù)據(jù)子程序

             LCDPR2: CALL LCDST01 ;判狀態(tài)位

             LDI @LCDD_ADD,R0 ;讀數(shù)據(jù)操作

             RETS

            五、 系統(tǒng)在線編程

            因系統(tǒng)最終要脫仿真器獨(dú)立運(yùn)行,所以要把程序燒寫到掉電非丟失存儲(chǔ)器FLASHROM中。本系統(tǒng)開發(fā)所采用的將存儲(chǔ)器安裝到用戶電路板上進(jìn)行編程的方法將用戶程序代碼裝入 FLASH存儲(chǔ)器的。它包括現(xiàn)在普遍采用的在系統(tǒng)編程(In System Programming,ISP),通過系統(tǒng)的微處理器實(shí)現(xiàn)對FLASH存儲(chǔ)器的編程。


            1、 FLASH在線編 程實(shí)現(xiàn)

            對FLASH的基本操作主要有讀、字節(jié)編程、復(fù)位、扇區(qū)擦除、片擦除等。Am29F010B閃爍存儲(chǔ)器讀操作與普通的存儲(chǔ)器操作相同,不需要特定的時(shí)序,在電路上電或內(nèi)部編程等操作技術(shù)后,自動(dòng)進(jìn)入讀數(shù)據(jù)狀態(tài)。而擦除和寫操作相對復(fù)雜一些。它不能簡單的直接寫入,.OUT文件不能LOAD到FLASH中,CCS和C Source Debugger中的LOAD命令均不能對FLASH寫入,需要專門的程序?qū)懭胍幌盗蠪lash Memory的命令寄存器,然后調(diào)用嵌入式算法的內(nèi)部程序來完成相應(yīng)的命令。Am29F010B編程一般步驟是復(fù)位、擦除、字節(jié)編程等。

            2、 系統(tǒng)軟件加載程序設(shè)計(jì)

            系統(tǒng)軟件加載程序的主要作用是在系統(tǒng)上電處理器初始化后,開始執(zhí)行的一段代碼,將用戶實(shí)時(shí)運(yùn)行的程序和數(shù)據(jù)從外部低速FLASH Memory中加載到內(nèi)部或外部高速靜態(tài)RAM存儲(chǔ)器中,然后跳到程序的進(jìn)入點(diǎn)開始全速運(yùn)行。

             DSP芯片引導(dǎo)裝載程序的執(zhí)行過程將復(fù)位中斷向量表中存放引導(dǎo)程序的起始地址,上電復(fù)位或手動(dòng)復(fù)位之后,程序指針將指向引導(dǎo)程序。在運(yùn)行搬移程序之前,要注意關(guān)中斷。向量如果MC/MP#=1,而且系統(tǒng)沒有接在仿真器上,那么DSP芯片自動(dòng)運(yùn)行固化在0h~0fffh中的

          引導(dǎo)裝載程序。這一程序會(huì)自動(dòng)判斷是INT0~INT2,還是INT3中斷。如果是INT0~INT2中斷,DSP將存放在BOOT1~BOOT3中的一段程序裝載到片內(nèi)RAM或片外SRAM中;如果是INT3中斷,則DSP將從串口中把程序裝載到片內(nèi)RAM或SRAM中。如果沒有中斷,DSP根據(jù)0H單元中的復(fù)位矢量,跳到該矢量所指出的單元為首地址,執(zhí)行一段引導(dǎo)裝載程序。引導(dǎo)裝載程序關(guān)鍵代碼如下:

            LDI 01H,AR0

             LDI *AR0,AR0

             LDI 02H,AR2

             LDI *AR2,AR1

             LDI 87,RC

             RPTB dload

             LDI *AR0++,R0

            Dload: STI R0,*AR1++

             LDI 03H,AR0

             LDI *AR0,AR0

             LDI 04H,AR2

             LDI *AR2,AR1

             LDI 4000H,RC

             RPTB pload

             LDI *AR0++,R0

            Pload: STI R0,*AR1++

             BR 900000H


            六、結(jié)束語

            上述討論的方法在軟、硬件上都已得到實(shí)現(xiàn),效果理想。利用了Flash ROM的嵌入式算法,體現(xiàn)了DSP高效性和靈活性。非常適合應(yīng)用于實(shí)時(shí)控制系統(tǒng)中,解決了只能依賴于燒錄器的問題,也可經(jīng)常調(diào)整系統(tǒng)的參數(shù),降低了系統(tǒng)成本、縮短了系統(tǒng)的開發(fā)周期。


          上一頁 1 2 下一頁

          評論


          相關(guā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); })();