嵌入式系統(tǒng)-編程題匯編_第1頁(yè)
嵌入式系統(tǒng)-編程題匯編_第2頁(yè)
嵌入式系統(tǒng)-編程題匯編_第3頁(yè)
嵌入式系統(tǒng)-編程題匯編_第4頁(yè)
嵌入式系統(tǒng)-編程題匯編_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

嵌入式系統(tǒng)編程題匯編(帶答案).一。從一數(shù)到十COUNT EQU0x30003100;定義變量COUNT的基地址 AREAExample1,CODE,READONLY;聲明代碼段Example1為只讀 ENTRY;標(biāo)識(shí)程序入口 CODE32;聲明32位ARM指令START LDRR1,=COUNT;將0X30003100賦給R1 MOVR0,#0;執(zhí)行R0=0 STRR0,[R1];存儲(chǔ)R0寄存器的數(shù)據(jù)到R1指向的存儲(chǔ)單元LOOP LDRR1,=COUNT;將0X30003100賦給R1 LDRR0,[R1];將R1中的數(shù)值作為地址,取出此地址中的數(shù)據(jù)保存到R0中 ADDR0,R0,#1;執(zhí)行R0=R0+1 CMPR0,#10;將R0與10進(jìn)行比較 MOVHSR0,#0;若R0大于等于10,則R0=0 STRR0,[R1];存儲(chǔ)R0寄存器的數(shù)據(jù)到R1指向的地址單元 BLOOP;跳轉(zhuǎn)到LOOP END;匯編文件結(jié)束二,9的8次冪XEQU9;初始化X為9nEQU8;初始化N為8 AREA Example3,CODE,READONLY;生明代碼段Example3為只讀 ENTRY;標(biāo)識(shí)程序入口路 CODE32;聲明32位ARM指令START LDR S P,=0x30003F00;把0x30003F00賦給SP(R13) LDRR0,=X;把9賦給R0 LDRR1,=n;把8賦給R1 BLPOW;跳轉(zhuǎn)到POW,并把下一條指令地址存入到R14中HALT BHALT;等待跳轉(zhuǎn)POW STMFDSP!,{R1-R12,LR};將R1-R12入棧,滿(mǎn)遞減堆棧 MOVSR2,R1;將R1賦給R2,并影響標(biāo)志位 MOVEQR0,#1;若Z=1,則R0=1 BEQPOW_END;若Z=1,跳轉(zhuǎn)到POW_END MOVR1,R0;將R0中值賦給R1 SUBR2,R2,#1;將R2-1的只賦給R2POW_L1 BLDO_MUL;跳轉(zhuǎn)到DO-MUL,并把下一條指令地址存入R14中 SUBSR2,R2,#1;將R2-1的值賦給R2,并影響標(biāo)志位 BNEPOW_L1;若Z=0,跳轉(zhuǎn)到POW_L1POW_ENDLDMFDSP!,{R1-R12,PC};數(shù)據(jù)出棧,存入到R1-R12,PC中DO_MULMULR0,R1,R0;把R1*R0的值賦給R0 MOVPC,LR;LR中的值賦給PC END;匯編結(jié)束三:從一一直加到一百程序清單(一)C語(yǔ)言實(shí)驗(yàn)參考程序#defineuint8unsignedchar;定義一個(gè)無(wú)符號(hào)字符常量uint8#defineuint32unsignedint;定義一個(gè)無(wú)符號(hào)整形常量unint32#defineN100;定義一個(gè)常量N=100(宏定義,100用N代替)uint32sum;;定義sum為無(wú)符號(hào)整型常量(聲明一個(gè)unsignedint型的變量sum)voidMain(void);主函數(shù){uint32i;;定義無(wú)符號(hào)整型常量i(聲明一個(gè)unsignedint型的變量i)sum=0;;sum初始值為0for(i=0;i<=N;i++);i在N內(nèi)自增加1(i從0開(kāi)始,i<=N時(shí)循環(huán)成立){sum+=i;};把sum+i賦給sumwhile(1);;為真循環(huán)}程序清單(二)簡(jiǎn)單的啟動(dòng)代碼IMPORT|Image$$RO$$Limit|;R0輸出段存儲(chǔ)區(qū)域界限IMPORT|Image$$RW$$Base|;RW輸出段運(yùn)行時(shí)起始地址IMPORT|Image$$ZI$$Base|;ZI輸出段運(yùn)行時(shí)起始地址IMPORT|Image$$ZI$$Limit|;ZI輸出段存儲(chǔ)區(qū)域界限IMPORTMain;主函數(shù) T0CTCR=0x00; T0TC=0; T0PR=99; T0MCR=0x02<<3; T0MR1=Fpclk/100; T0EMR|=0xc2; T0TCR=0x01; While(1); }17、 使用學(xué)過(guò)的知識(shí)設(shè)計(jì)設(shè)計(jì)一個(gè)汽車(chē)用“車(chē)速表”,寫(xiě)出你的設(shè)計(jì)方案并編程實(shí)現(xiàn)。提示:可用霍爾元件將車(chē)輪的轉(zhuǎn)動(dòng)轉(zhuǎn)換為脈沖。車(chē)輪每轉(zhuǎn)動(dòng)一圈會(huì)產(chǎn)生一個(gè)方波脈沖。 答:轉(zhuǎn)動(dòng)脈沖:void__irqIRQ_Timer0(void){if((IO0SET&BEEP)==0)IO0SET=BEEP;/*關(guān)閉BEEP*/elseIO0CLR=BEEP;T0IR=0x01;/*清除中斷標(biāo)志*/VICVectAddr=0x00;/*通知VIC中斷處理結(jié)束*/}intmain(void){intspped=1;PINSEL1=0x00000000;/*設(shè)置管腳連接GPIO*/IO0DIR=BEEP;/*設(shè)置BEEP控制口輸出*/IRQEnable();/*IRQ中斷使能*//*定時(shí)器0初始化*/T0TC=0;/*定時(shí)器設(shè)置為0*/T0PR=0;/*時(shí)鐘不分頻*/T0MCR=0x03;/*設(shè)置T0MR0匹配后復(fù)位T0TC,并產(chǎn)生中斷標(biāo)志*/T0MR0=Fpclk/spped;/*0.5秒鐘定時(shí)*/T0TCR=0x01;/*啟動(dòng)定時(shí)器*//*設(shè)置定時(shí)器0中斷IRQ*/VICIntSelect=0x00;/*所有中斷通道設(shè)置為IRQ中斷*/VICVectCntl0=0x20|0x04;/*設(shè)置定時(shí)器0中斷通道分配最高優(yōu)先級(jí)*/VICVectAddr0=(uint32)IRQ_Timer0;/*設(shè)置中斷服務(wù)程序地址*/VICIntEnable=1<<0x04;/*使能定時(shí)器0中斷*/while(1){if((IO0PIN&KEY1)==0){spped=10;T0MR0=Fpclk/spped;/*0.5秒鐘定時(shí)*/T0TC=0;/*定時(shí)器設(shè)置為0*/}elseif((IO0PIN&KEY2)==0){spped=20;T0MR0=Fpclk/spped;/*0.5秒鐘定時(shí)*/T0TC=0;/*定時(shí)器設(shè)置為0*/}elseif((IO0PIN&KEY3)==0){spped=30;T0MR0=Fpclk/spped;/*0.5秒鐘定時(shí)*/T0TC=0;/*定時(shí)器設(shè)置為0*/}elseif((IO0PIN&KEY4)==0){spped=40;T0MR0=Fpclk/spped;/*0.5秒鐘定時(shí)*/T0TC=0;/*定時(shí)器設(shè)置為0*/}};return0;}汽車(chē)車(chē)速:intmain(void){intVx;PINSEL0=(PINSEL0&(~(3<<20)))|(2<20);PINSEL0=PINSEL0&(0<<24);T0CTCR&=0xf0;T0TC=0;T0PR=99;T0MCR=0x03;T0MR0=Fpclk/300;T1CTCR=(T1CTCR&(~0x0f)|0xf1);T1TC=0;T1MCR=0x00;T1CCR&=~0x07;T0TCR=0x01;T1TCR=0x01;while(1){if((T0IR&0x01)==1){T0IR=0x01;Vx=T1TC;T1TC=0;VtotalLen+=Vx;VthisLen+=Vx;Vspeed=(Vx*L*3.6)/HrN;}if((IO0PIN&KClr)==0)VthisLen=0;}return0;}1、編寫(xiě)一程序,用查詢(xún)的方式,對(duì)S3C2410的A/D轉(zhuǎn)換器的第3通道連續(xù)進(jìn)行100次A/D轉(zhuǎn)換,然后將其結(jié)果求平均值。設(shè)預(yù)分頻為49。注意:A/D轉(zhuǎn)換器有獨(dú)立的模擬信號(hào)輸入引腳AIN0AIN9。ADCCON格式如下:15 14 13……6 5 4 3 2 1 0ECFLG PRSCEN PRSCVL SEL_MUX STDBM READ_START ENABLE_STARTADCDAT0格式如下:15 14 13 12 11 10 9……0UPDOWN AUTO_PST XY_PST 保留(0) 轉(zhuǎn)換結(jié)果ADCCON、ADCDAT0的地址宏定義為:#define rADCCON (*(volatileunsigned*)0x58000000)#define rADCDAT0 (*(volatileunsigned*)0x5800000c)#definepref 49 #definech 3 intadc(void){ rADCCON=(1<<14)|(pref<<6)|(ch<<3)|1; //允許預(yù)分頻,啟動(dòng)轉(zhuǎn)換 while(rADCCON&0x01==1); //查詢(xún)是否已經(jīng)啟動(dòng)轉(zhuǎn)換 while(rADCCON&0x8000==0); //查詢(xún)轉(zhuǎn)換是否結(jié)束 return rADCDAT0&0x3ff; //讀取轉(zhuǎn)換結(jié)果 }voidmain(){ intadc_data=0,i; for(i=0;i<100;i++) adc_data+=adc(); adc_data=adc_data/100; printf("adcaverageis:%d\n",adc_data);}1、編寫(xiě)程序,將存儲(chǔ)器從0x400000開(kāi)始的200個(gè)字?jǐn)?shù)據(jù),傳送到0x400600開(kāi)始的區(qū)域。解: MOV R0,#0x400000 LDR R1,=0x400600 MOV R7,#200LP: LDR R2,[R0],#4 STR R2,[R1],#4 SUBS R7,R7,#1 BNE LPHERE:B HERE2、編寫(xiě)一程序,查找存儲(chǔ)器從0x500000開(kāi)始的200個(gè)字中為5的數(shù)目,將其結(jié)果存到0x600000中。 解: MOV R0,#0x500000 MOV R1,#0 MOV R7,#200LP LDR R2,[R0],#4 CMP R2,#5 BNE NEXT ADD R1,R1,#1NEXT SUBS R7,R7,#1 BNE LP MOVR0,#0x600000 STRR1,[R0] B$3、實(shí)現(xiàn)1+2+……+N。 NEQU5; ;常量的定義 AREAExample,CODE,READONLY ;定義段名屬性等 ENTRY ;程序入口 CODE32 ;ARM代碼 START ;行標(biāo)定義 LDRR0,=N ;R0賦值 MOVR2,R0 ;R2充當(dāng)計(jì)數(shù)器 MOVR0,#0 ;R0←0 MOVR1,#0 ;R1←0 LOOP ;行標(biāo) CMPR1,R2 ;比較R1R2 BHIADD_END ;如果R1>R2跳轉(zhuǎn)到ADD_END ;分支的實(shí)現(xiàn) ADDR0,R0,R1 ;R0←R0+R1 ADDR1,R1,#1 ;R1←R1+1 BLOOP ;無(wú)條件跳轉(zhuǎn)至LOOP ;循環(huán)的實(shí)現(xiàn) ADD_END ;行標(biāo)定義 BADD_END ;無(wú)條件跳轉(zhuǎn)ADD_END END ;代碼結(jié)束以實(shí)驗(yàn)平臺(tái)PXA270為設(shè)計(jì)環(huán)境,試寫(xiě)出一段代碼,能控制八段數(shù)碼管以遞減方式點(diǎn)亮顯示(15分)#include<stdio.h>#include"register_variant.h"#defineLED_CS2 (*((volatileunsignedshortint*)(0x10300000))) //LED1andLED2#defineLED_CS3 (*((volatileunsignedshortint*)(0x10400000))) //LED3andLED4voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}voiddummyOs(void){ LED_CS2=0x2479;//12 LED_CS3=0x1930;//34 while(1)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論