版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
嵌入式系統(tǒng)編程題匯編(帶答案).一。從一數到十COUNT EQU0x30003100;定義變量COUNT的基地址 AREAExample1,CODE,READONLY;聲明代碼段Example1為只讀 ENTRY;標識程序入口 CODE32;聲明32位ARM指令START LDRR1,=COUNT;將0X30003100賦給R1 MOVR0,#0;執(zhí)行R0=0 STRR0,[R1];存儲R0寄存器的數據到R1指向的存儲單元LOOP LDRR1,=COUNT;將0X30003100賦給R1 LDRR0,[R1];將R1中的數值作為地址,取出此地址中的數據保存到R0中 ADDR0,R0,#1;執(zhí)行R0=R0+1 CMPR0,#10;將R0與10進行比較 MOVHSR0,#0;若R0大于等于10,則R0=0 STRR0,[R1];存儲R0寄存器的數據到R1指向的地址單元 BLOOP;跳轉到LOOP END;匯編文件結束二,9的8次冪XEQU9;初始化X為9nEQU8;初始化N為8 AREA Example3,CODE,READONLY;生明代碼段Example3為只讀 ENTRY;標識程序入口路 CODE32;聲明32位ARM指令START LDR S P,=0x30003F00;把0x30003F00賦給SP(R13) LDRR0,=X;把9賦給R0 LDRR1,=n;把8賦給R1 BLPOW;跳轉到POW,并把下一條指令地址存入到R14中HALT BHALT;等待跳轉POW STMFDSP!,{R1-R12,LR};將R1-R12入棧,滿遞減堆棧 MOVSR2,R1;將R1賦給R2,并影響標志位 MOVEQR0,#1;若Z=1,則R0=1 BEQPOW_END;若Z=1,跳轉到POW_END MOVR1,R0;將R0中值賦給R1 SUBR2,R2,#1;將R2-1的只賦給R2POW_L1 BLDO_MUL;跳轉到DO-MUL,并把下一條指令地址存入R14中 SUBSR2,R2,#1;將R2-1的值賦給R2,并影響標志位 BNEPOW_L1;若Z=0,跳轉到POW_L1POW_ENDLDMFDSP!,{R1-R12,PC};數據出棧,存入到R1-R12,PC中DO_MULMULR0,R1,R0;把R1*R0的值賦給R0 MOVPC,LR;LR中的值賦給PC END;匯編結束三:從一一直加到一百程序清單(一)C語言實驗參考程序#defineuint8unsignedchar;定義一個無符號字符常量uint8#defineuint32unsignedint;定義一個無符號整形常量unint32#defineN100;定義一個常量N=100(宏定義,100用N代替)uint32sum;;定義sum為無符號整型常量(聲明一個unsignedint型的變量sum)voidMain(void);主函數{uint32i;;定義無符號整型常量i(聲明一個unsignedint型的變量i)sum=0;;sum初始值為0for(i=0;i<=N;i++);i在N內自增加1(i從0開始,i<=N時循環(huán)成立){sum+=i;};把sum+i賦給sumwhile(1);;為真循環(huán)}程序清單(二)簡單的啟動代碼IMPORT|Image$$RO$$Limit|;R0輸出段存儲區(qū)域界限IMPORT|Image$$RW$$Base|;RW輸出段運行時起始地址IMPORT|Image$$ZI$$Base|;ZI輸出段運行時起始地址IMPORT|Image$$ZI$$Limit|;ZI輸出段存儲區(qū)域界限IMPORTMain;主函數 T0CTCR=0x00; T0TC=0; T0PR=99; T0MCR=0x02<<3; T0MR1=Fpclk/100; T0EMR|=0xc2; T0TCR=0x01; While(1); }17、 使用學過的知識設計設計一個汽車用“車速表”,寫出你的設計方案并編程實現(xiàn)。提示:可用霍爾元件將車輪的轉動轉換為脈沖。車輪每轉動一圈會產生一個方波脈沖。 答:轉動脈沖:void__irqIRQ_Timer0(void){if((IO0SET&BEEP)==0)IO0SET=BEEP;/*關閉BEEP*/elseIO0CLR=BEEP;T0IR=0x01;/*清除中斷標志*/VICVectAddr=0x00;/*通知VIC中斷處理結束*/}intmain(void){intspped=1;PINSEL1=0x00000000;/*設置管腳連接GPIO*/IO0DIR=BEEP;/*設置BEEP控制口輸出*/IRQEnable();/*IRQ中斷使能*//*定時器0初始化*/T0TC=0;/*定時器設置為0*/T0PR=0;/*時鐘不分頻*/T0MCR=0x03;/*設置T0MR0匹配后復位T0TC,并產生中斷標志*/T0MR0=Fpclk/spped;/*0.5秒鐘定時*/T0TCR=0x01;/*啟動定時器*//*設置定時器0中斷IRQ*/VICIntSelect=0x00;/*所有中斷通道設置為IRQ中斷*/VICVectCntl0=0x20|0x04;/*設置定時器0中斷通道分配最高優(yōu)先級*/VICVectAddr0=(uint32)IRQ_Timer0;/*設置中斷服務程序地址*/VICIntEnable=1<<0x04;/*使能定時器0中斷*/while(1){if((IO0PIN&KEY1)==0){spped=10;T0MR0=Fpclk/spped;/*0.5秒鐘定時*/T0TC=0;/*定時器設置為0*/}elseif((IO0PIN&KEY2)==0){spped=20;T0MR0=Fpclk/spped;/*0.5秒鐘定時*/T0TC=0;/*定時器設置為0*/}elseif((IO0PIN&KEY3)==0){spped=30;T0MR0=Fpclk/spped;/*0.5秒鐘定時*/T0TC=0;/*定時器設置為0*/}elseif((IO0PIN&KEY4)==0){spped=40;T0MR0=Fpclk/spped;/*0.5秒鐘定時*/T0TC=0;/*定時器設置為0*/}};return0;}汽車車速: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、編寫一程序,用查詢的方式,對S3C2410的A/D轉換器的第3通道連續(xù)進行100次A/D轉換,然后將其結果求平均值。設預分頻為49。注意:A/D轉換器有獨立的模擬信號輸入引腳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) 轉換結果ADCCON、ADCDAT0的地址宏定義為:#define rADCCON (*(volatileunsigned*)0x58000000)#define rADCDAT0 (*(volatileunsigned*)0x5800000c)#definepref 49 #definech 3 intadc(void){ rADCCON=(1<<14)|(pref<<6)|(ch<<3)|1; //允許預分頻,啟動轉換 while(rADCCON&0x01==1); //查詢是否已經啟動轉換 while(rADCCON&0x8000==0); //查詢轉換是否結束 return rADCDAT0&0x3ff; //讀取轉換結果 }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、編寫程序,將存儲器從0x400000開始的200個字數據,傳送到0x400600開始的區(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、編寫一程序,查找存儲器從0x500000開始的200個字中為5的數目,將其結果存到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、實現(xiàn)1+2+……+N。 NEQU5; ;常量的定義 AREAExample,CODE,READONLY ;定義段名屬性等 ENTRY ;程序入口 CODE32 ;ARM代碼 START ;行標定義 LDRR0,=N ;R0賦值 MOVR2,R0 ;R2充當計數器 MOVR0,#0 ;R0←0 MOVR1,#0 ;R1←0 LOOP ;行標 CMPR1,R2 ;比較R1R2 BHIADD_END ;如果R1>R2跳轉到ADD_END ;分支的實現(xiàn) ADDR0,R0,R1 ;R0←R0+R1 ADDR1,R1,#1 ;R1←R1+1 BLOOP ;無條件跳轉至LOOP ;循環(huán)的實現(xiàn) ADD_END ;行標定義 BADD_END ;無條件跳轉ADD_END END ;代碼結束以實驗平臺PXA270為設計環(huá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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南醫(yī)藥健康職業(yè)學院《影視動畫燈光設計》2023-2024學年第一學期期末試卷
- 云南師范大學《計算機輔助工業(yè)設計》2023-2024學年第一學期期末試卷
- 云南農業(yè)大學《電子商務基礎與應用》2023-2024學年第一學期期末試卷
- 2025年度項目部安全生產責任合同規(guī)范文本發(fā)布3篇
- 二零二五版借貸房屋買賣合同爭議解決專家調解合同4篇
- 二零二五版美甲店員工績效評估合同3篇
- 云南警官學院《材料分析及測試技術》2023-2024學年第一學期期末試卷
- 2025年度個人反擔保合同模板(跨境業(yè)務風險控制)4篇
- 2025年度個人醫(yī)療貸款擔保合同范本8篇
- 2025年度人工智能智能客服系統(tǒng)開發(fā)合同范本
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 英語 含答案
- 電力工程施工安全風險評估與防控
- 醫(yī)學教程 常見體表腫瘤與腫塊課件
- 內分泌系統(tǒng)異常與虛勞病關系
- 智聯(lián)招聘在線測評題
- DB3418T 008-2019 宣紙潤墨性感官評判方法
- 【魔鏡洞察】2024藥食同源保健品滋補品行業(yè)分析報告
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗人員理論考試題及答案
- 鋼筋桁架樓承板施工方案
- 2024年駐村第一書記工作總結干貨3篇
- 教室裝修施工計劃
評論
0/150
提交評論