freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

dsp基礎(chǔ)知識專業(yè)復(fù)習(xí)資料(參考版)

2025-01-10 01:10本頁面
  

【正文】 ? 中斷相連的訪問是嚴(yán)格按地址排列的。這個(gè)文件的格式比較固定,每個(gè)芯片都有自己的中斷文件格式。 132習(xí) (3) 在 C程序中直接內(nèi)嵌匯編語句。C語言和匯編語言的混合編程有以下幾種方法:(1) 獨(dú)立編寫匯編程序和 C程序,分開編譯或匯編,形成各自的目標(biāo)代碼模塊,再用鏈接器將 C模塊和匯編模塊鏈接起來。但無法實(shí)現(xiàn)在任何情況下都能夠合理地利用 DSP芯片的各種資源。(2) 用 C語言開發(fā)。.end128用匯編程序設(shè)計(jì)的實(shí)現(xiàn)延時(shí)的函數(shù)如下: .title .mmregs .def _delay3 .text _delay3: STM 0X2FF,AR0delay30: STM 0X2FF,AR2delay31: BANZ delay31,*AR2BANZ delay30,*AR0RET .end 129鏈接命令文件如下:O MEMORY { PAGE 0 : HPIRAM: origin = 0x100, length = 0x200 PROG: origin = 0x2023, length = 0x1000 PAGE 1 : DARAM1: origin = 0x03000, length = 0x1000 PAGE 2 : FLASHRAM: origin = 0x8000, length = 0xffff }130SECTIONS{ .text : load = PROG page 0 /*可執(zhí)行代碼 */ .cinit : load = PROG page 0 /*初始化變量與常數(shù)表 */ .stack : load = DARAM1 page 1 /*C 系統(tǒng)堆棧 */ .const : load = DARAM1 page 1 /*常數(shù) */ .bss : load = DARAM1 page 1 /*全局與靜態(tài)變量 */ }131本章小結(jié) C54x DSP軟件設(shè)計(jì)的方法通常有三種:(1) 用匯編語言開發(fā)。RET10倍頻STM 1001011111111111B,CLKMDSTM中斷定位 2023HSTM 0010000000100100B,PMSTASM=1DP直接尋址、中斷屏蔽、溢出保護(hù)、符號擴(kuò)展、 FRCT有效、 ARP無效、。STM 0100001101011111B,ST1ARP=0、 DP=0.mmregs /*向地址為 1的口送欲顯示之?dāng)?shù) */delay3() 。 /*模 10循環(huán)遞增 */port0 = 0xf 。 /*調(diào)用 5402芯片初始化函數(shù) */ for (。void main(){ 126char ledt=0 。 //控制數(shù)碼管選通的控制接口地址為 0ioport unsigned port1?;旌暇幊虒?shí)例【 例 7】 用混合編程的設(shè)計(jì)方法實(shí)現(xiàn)四個(gè)數(shù)碼管同時(shí)循環(huán)顯示0~9十個(gè)數(shù),每次顯示的數(shù)以 1遞增。125而程序員可以對其中的匯編語句進(jìn)行修改,之后再對匯編程序進(jìn)行匯編,可產(chǎn)生最終的目標(biāo)文件。不要在匯編語句中加入?yún)R編器選項(xiàng)而改變匯編環(huán)境。插入跳轉(zhuǎn)語句和標(biāo)號會產(chǎn)生不可預(yù)測的結(jié)果。即: asm(“ 匯編語句 ”);如: asm ( RSBX INTM ); /*開中斷 */ asm ( SSBX XF ); /*XF置高電平 */ asm ( NOP ); 124 注意: 括號中引號內(nèi)的匯編語句的語法和通常的匯編編程的語法一樣。 此種方法可以在 C程序中實(shí)現(xiàn) C語言無法實(shí)現(xiàn)的一些硬件控制功能,如修改中斷控制寄存器、中斷標(biāo)志寄存器等。123i…for(i=0。TAB_SIZEdefine122例如:匯編程序:_tab_size 編譯器并不能區(qū)分哪些符號表包含的是變量的地址,哪些是變量的值。一般來說,在 C程序中和匯編程序中定義的變量,其符號表包含的是變量的地址。 C程序中訪問匯編常數(shù)表如例 6所示。如果要在 C程序中訪問它,則必須在 C程序中以 extern方式予以聲明, 并且變量名前不必加下劃線 “_”。在匯編程序中定義此常數(shù)表時(shí),最好定義一個(gè)單獨(dú)的段。 119 (2) 訪問未在 .bss段定義的變量,如當(dāng) C程序訪問在匯編程序中定義的常數(shù)表時(shí),則方法更復(fù)雜一些。= 1; var/*外部變量 */ _var; 118例如:匯編程序: C程序中訪問匯編程序變量 從 C程序中訪問匯編程序中定義的變量或常數(shù)時(shí),根據(jù)變量和常數(shù)定義的位置和方法的不同,可分為三種情況。 /*進(jìn)行函數(shù)調(diào)用 */}116匯編程序:_asmfunc: ;函數(shù)名前一定要有下劃線STL A, *(_gvar) ; i的值在累加器 A中ADD*(_gvar), A ;返回結(jié)果在累加器 A中RET ;子程序返回117 7. . /*定義全局變量 */main( ){ int i=5。C程序調(diào)用匯編子程序:extern int asmfunc( )。匯編程序也可以引用 C程序中定義的變量和子程序。如果遵循了這些規(guī)則,那么 C和匯編語言之間的接口是非常方便的。采用此方法在編寫 C程序和匯編程序時(shí), 必須遵循有關(guān)的調(diào)用規(guī)則和寄存器規(guī)則。114 . 根據(jù)經(jīng)驗(yàn),只要程序員對 C和匯編均很熟悉,這種混合匯編方法的效率可以做得很高。 采用此種方法時(shí),可以控制 C編譯器,使之產(chǎn)生具有交叉列表的 C程序和與之對應(yīng)的匯編程序,而程序員可以對其中的匯編語句進(jìn)行修改。C54x用此種方法可以在 C程序中實(shí)現(xiàn) C語言無法實(shí)現(xiàn)的一些硬件控制功能,如修改中斷控制寄存器,中斷標(biāo)志寄存器等。 (2) 在 C程序中 使用匯編程序中定義的變量和常量 。 /*從 I/O口讀數(shù)據(jù) */}112 C語言和匯編語言的混合編程有以下幾種方法: (1) 獨(dú)立編寫匯編程序和 C程序,分開編譯或匯編,形成各自的目標(biāo)代碼模塊,再用鏈接器將 C模塊和匯編模塊鏈接起來。 6 C語言程序?qū)嵗? 111 【 例 3】 110 C語言程序編寫過程步驟:(1) 編輯器編輯 C程序 ; (2) 編譯程序?qū)?C程序編譯匯編成目標(biāo)文件 ;(3) 編輯一個(gè)鏈接命令文件 (.cmd文件 );(4) 鏈接生成 .out文件,用硬件仿真器進(jìn)行調(diào)試。 (7) 中斷程序用到的所有寄存器,包括狀態(tài)寄存器都必須保護(hù)。 (5) 在匯編語言中,必須在中斷程序名前加上一個(gè) 下劃線 _。109 (4) 將一個(gè)程序與某個(gè)中斷進(jìn)行關(guān)聯(lián)時(shí),必須在相應(yīng)的中斷矢量處放置一條跳轉(zhuǎn)指令。 (2) 中斷程序不能有入口參數(shù),即使聲明,也會被忽略。但是 在用 C語言編寫中斷程序時(shí),應(yīng)注意以下幾點(diǎn): (1) 中斷的使能和屏蔽由程序員自己來設(shè)置。在 這 個(gè)地址上,有一條 B _c_int00指令,程序 馬 上跳 轉(zhuǎn) 到_c_int00語 句 標(biāo) 號,從程序起始地址 0e000h開始 執(zhí) 行主程序???執(zhí) 行 輸 出文件 標(biāo) 系 統(tǒng)后就可以運(yùn)行了。o m e _c_int00 /*軟件仿真器的入口地址 */生成一個(gè)映象文件 生成可執(zhí)行的輸出文件 匯編生成目標(biāo)文件 106MWMORY{ PAGE 0: EPROM: =0E000h, len=100h VECS: =0FF80h, len=04h PAGE 1: SPRAM: =0060h, len=20h DARAM: =0080h, len=100h}SECTIONS{ .text: EPROM PAGE 0 .data: EPROM PAGE 0 .bss: SPRAM PAGE 1 STACK: DARAM PAGE 1 .vectors: VECS PAGE 0}107鏈接后生成一個(gè)可執(zhí)行的 輸出文件 映象文件 。* * * * * * * * * * * * * * * * * * * * * * ** Reset vector for ** * * * * * * * * * * * * * * * * * * * * * * .title “” .ref _c_int00 .sect “.vectors” B _c_int00 .end引用 中 .def _c_int00定 義 的 標(biāo) 號編寫 例 41。 ( 4) 注 釋 的內(nèi)容 應(yīng) 當(dāng)用 /*和 */符號括起來 。 ( 3) MEMORY和 SECTIONS都是 鏈 接器命令 。( 2) 鏈接器選項(xiàng) 。 103( 1) 輸入文件名 ,就是要鏈接的目標(biāo)文件和文檔庫文件,或者是其它的命令文件。101 鏈接器將輸入段組合成一個(gè)可執(zhí)行的目標(biāo)模塊102例 46 鏈接器命令文件舉例。 可單獨(dú)分配空間或在基段位置之后 使用方法 基段名:子段名 .sect “.text:_func” 子段也有兩種:用 .sect命令建立的是已初始化段,而用 .usect命令建立的段是未初始化段。注意96( 1)未初始化段 未初始化段由 .bss和 .usect命令建立 位置為變量 保留存 儲 器空 間作用通常將它 們 定位到 RAM區(qū) 使用方法    .bss 符號 , 字?jǐn)?shù) 符號 .usect “段名 ”,字?jǐn)?shù)對應(yīng)于保留的存儲空間第一個(gè)字的變量名稱 程序 員為 自定 義 未初始化段起的名字 97( 2)已初始化段 已初始化段是由 .text、 .data的 .sect命令建立 位置包含有可 執(zhí) 行代 碼 或初始化數(shù)據(jù) 作用通常將它 們 定位到 EPROM區(qū) 使用方法 .text [段起點(diǎn) ].data [段起點(diǎn) ].sect “段名 ”[,段起點(diǎn) ] 段程序 計(jì) 數(shù)器(SPC)定 義 的一個(gè)起始 值 。結(jié)束子程序 .end 。執(zhí)行乘法并累加,結(jié)果放在 A中 STL A,y 。將變量 x的地址賦給 AR3 RPTZ A,3 。循環(huán)等待SUM:STM a,AR3 。重復(fù)傳送 8個(gè)數(shù)據(jù) CALL SUM 。AR1 指向 a的地址 RPT 7 。軟件等待狀態(tài)寄存器置 0,不設(shè)等待 STM STACK+10h,SP 。為這 8個(gè)單元賦初值94 .text 。.word在標(biāo)號 table開始的 8個(gè)單元中1,2,3,4.word_c_int00為結(jié)果 yx,4.bss為系數(shù) a分配 4個(gè)單元的空間“STACK”,10h.usect“”******************y=a1*x1+a2*x2+a3*x3+a4*x4*****************編寫計(jì)算 y=a1*x1+a2*x2+a3*x3+a4*x4的匯編源程序*不可屏蔽中斷NOPNOPNOP921匯編語言程序的編輯、匯編和鏈接過程第四 章 DSP軟件開發(fā)過程 93例 41用 NOP填充表中其余空字NOP 。 中斷向量表必須對齊 128字的頁邊界RESET: B CodeStart 。引用程序入口的全局符號定義。91.sect .vectors 。下
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1