嵌入式資料考試題庫_第1頁
嵌入式資料考試題庫_第2頁
嵌入式資料考試題庫_第3頁
嵌入式資料考試題庫_第4頁
嵌入式資料考試題庫_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一、填空題

1、哈佛體系結(jié)構(gòu)數(shù)據(jù)空間和地址空間〔分開),ARM920T采用〔哈佛)的內(nèi)核架構(gòu)。

2、ARM7TDMI采用[3)級流水線結(jié)構(gòu),ARM920TDMI采用(5)級流水線。

3、ARM7TDMI中,T表示支持16位Thumb指令集,D表示〔在片可調(diào)式),M表示內(nèi)嵌乘法器Multiplier,I

表示(嵌入式ICE),支持在線斷點和調(diào)試。

4、“嵌入性”、"專用性〃與“計算機(jī)系統(tǒng)”是嵌入式系統(tǒng)的三個根本要素。

5、ARM處理器共有37個存放器,31個通用存放器,6個狀態(tài)存放器。存放器R13通常用作堆棧指針,稱作SP。

存放器R14用作子程序鏈接存放器,也稱為鏈接存放器LK〔LinkRegister)。

6、程序狀態(tài)存放器CPSR的N、Z、C、V分別指一,1=1指-禁止IRQ中斷-、F=1指-禁止FIQ中斷M[4:0]用

做-處理器模式選擇-。

7、ARM微處理器支持四種類型的堆棧,即:滿遞增堆棧、滿遞減堆棧、空遞增堆棧、空遞減堆棧。

8、ARM微處理器有_乙種工作模式,它們分為兩類特權(quán)模式、非特權(quán)模式o其中用戶模式屬于_韭

特權(quán)模式

9、ARM支持兩個指令集,ARM核因運行的指令集不同,分別有兩個狀態(tài)ARM狀態(tài)、thumb狀態(tài),狀態(tài)存放器

CPSR的T1或者填D5)位反映了處理器運行不同指令的當(dāng)前狀態(tài)

10、ARM處理器有兩種總線架構(gòu),數(shù)據(jù)和指令使用同一接口的是馮諾依曼結(jié)構(gòu),數(shù)據(jù)和指令分開使用不同接

口的是哈佛結(jié)構(gòu)

11、ARM核有多個存放器,其中大局部用于通用存放器,有小局部作為專用存放器,R15存放器用于存儲

PC,R13通常用來存儲SP〔或者填堆棧指針)

12、編譯鏈接代碼時,有兩種存儲代碼和數(shù)據(jù)的字節(jié)順序,一種是小端對齊,另一種是大端對齊

13、不同的中斷處理不同的處理模式,具有不同的優(yōu)先級,而且每個中斷都有固定的中斷入口地址。當(dāng)一個中

斷發(fā)生時,相應(yīng)的R14存儲中斷返回地址,SPSR存儲狀態(tài)存放器CPSR的值。

14、嵌入式微處理器有嵌入式微處理器、嵌入式微控制器、曲入式DSP處理器和嵌入式片上系統(tǒng)四種類型。

15、ARM9TDMI采用5級流水線:取指、譯碼、執(zhí)行、訪存和寫回。

16、AMBA總線結(jié)構(gòu)包括ASB、AHB和APB總線。ASB/AHB用于CPU與存儲器、DMA控制器、總線仲裁控制器等片

上系統(tǒng)中芯片的連接,APB用于連接低速的外圍設(shè)備。

17、函數(shù)的參數(shù)傳遞方法有兩種:R0~R3存放器和堆棧

二、指令解析

1、LDRRO,[R1];從R1存放器指向的地址中取出一個字的數(shù)據(jù),存儲到R0存放器中

2、STRRO,[R1],#8;將R0中的字?jǐn)?shù)據(jù)寫入R1為地址的存儲器中,并將新地址R1+8寫入R1

3、ADDSR1,R1,#1;R1+1給RI

4、LDMFDR13!,{RO,R4-R12,PC};將堆棧內(nèi)容恢復(fù)到存放器(RO,R4到R12,LR)。

5、初始值R1=23H,R2=0FH執(zhí)行指令BICRO,RI,R2,LSL#1后,存放器RO,RI的值分別是多少?R0=21H,

R1=23H,R2=1EH

6、寫一條ARM指令,完成操作rl=r2*3(4分)

addrl,r2,r2LSL#1

7、說明指令STMIArl2!,{rO-rll}的操作功能。(4分)

將RO-R11十二個存放器中的32位數(shù)據(jù),存儲到R12地址指針為起始地址的內(nèi)存中,地址的操作方式是

先操作、后增加,并更新地址。

8、ADDRO,RO,#1;將R0+1的結(jié)果送R0是保存

9、ADDRO,RI,[R2];將以R2中的內(nèi)容為地址的單元中的值與RI相加,結(jié)果送RO保存

10、LDRRO,[R1+4];指令實現(xiàn)的功能是將R1的內(nèi)容加4后送R0

4.LDRRO,[R1+4]!;將R1的內(nèi)容加4后送R0,然后R1的內(nèi)容自增4個字節(jié)

5.BLable;程序無條件跳轉(zhuǎn)到標(biāo)號Lable處執(zhí)行

6.MOVRI,R0;指令實現(xiàn)的功能是將存放器R0的值傳送到存放器R1

7.CMPRI,R0;存放器R1的值與存放器R0的值相減,根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位

8.CMNRI,R0;將存放器R1的值與存放器R0的值相加,根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位

9.ORRRO,R0,#3;該指令設(shè)置R0的0、1位,其余位保持不變

10.MRSRO,SPSR;傳送SPSR的內(nèi)容到R0

11.CMPRI,R2;存放器R1的值與存放器R2的值相減,根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位

12.MRSRO,CPSR;傳送SPSR的內(nèi)容到R0

13.MOVR2,RO;將存放器R0的值傳送到存放器R2

14.ADDRLRL#3;將R1+3的結(jié)果送R1是保存

15.ADDR2,RL[RO];將以R0中的內(nèi)容為地址的單元中的值與R1相加,結(jié)果送R2保存

16.LDRRI,[R0+4]將R1的內(nèi)容加4后送R0

17.LDRRI,[R0+4]!;將R1的內(nèi)容加4后送R0,然后R1的內(nèi)容自增4個字節(jié)。

18.ANDRO,RO,#3;保持R0的0、1位,其余位清零

19.B0x1200;程序無條件跳轉(zhuǎn)到0x1200處執(zhí)行

20.CMNRI,R2;將存放器R1的值與存放器R2的值相加,并根據(jù)結(jié)果設(shè)置CPSR的標(biāo)志位

三、看圖答復(fù)

1、以下圖是ARM9處理器的當(dāng)前程序狀態(tài)存放器,請簡單說明各位的功能。

N:負(fù)標(biāo)志位,運算結(jié)果的第31位值,記錄標(biāo)志設(shè)置的結(jié)果。

Z:零標(biāo)志位,如果標(biāo)志設(shè)置操作的結(jié)果為0,那么置位。

C:進(jìn)位標(biāo)志位,記錄無符號加法溢出,減法無錯位,循環(huán)移位。

V:溢出標(biāo)志位,記錄標(biāo)志設(shè)置操作的有符號溢出。

I:中斷禁止標(biāo)志位,置位時禁止IRQ中斷,否那么允許IRQ中斷使能。

F:中斷禁止標(biāo)志位,置位時禁止FIQ中斷,否那么允許FIQ中斷使能。

T:控制位,置位時處理器運行在Thumb狀態(tài)下,清零時處理器運行在ARM狀態(tài)下。

M0~M4:模式控制位,定義處理器的7中模式。

其余位為保存位,留作將來使用。

2、閱讀以下與看門狗有關(guān)的存放器描述,解釋每一行代碼的功能。

NT3000008寫[狗計數(shù)器當(dāng)前值000

#definerWTCON(*(volatileunsigned*)0x53000000)//第1行

#definerWTDAT(*(volatileunsigned*)0x53000004)//第2行

#definerWTCNT(*(volatileunsigned*)0x53000008)//第3行

voidwatchdog_test(void)

(

rWTCON=((PCLK/1000000-l)?8)|(3?3)|(1?2);//第4行

rWTDAT=7812;//第5行

rWTCNT=7812;//第6行

rWTCON|=(1?5);//第7行

3、閱讀以下S3c2410局部用戶手冊.求:當(dāng)PCLK或UCLK為40MHz時,串口0的波特率為2400bps,串

口1的波特率為115200bps,相應(yīng)的控制存放器如何設(shè)置.

UARTBAUDRATEDIVISORREGISTER

TherearethreeUARTbaudratedivisorregisters(存放器〕includingUBRDIVO,UBRDIV1andUBRDIV2in

theUARTblock1模塊).Thevaluestoredinthebaudratedivisorregister(UBRDIVn),isusedto

determinetheserialTx/Rxclockrate(baudrate)asfollows:

UBRDIVn=(int)(PCLK/(bpsx16))-lorUBRDIVn=(int)(UCLK/(bpsx16))-1

Where,thedivisorshouldbefrom1to(216-1)andUCLKshouldbesmallerthanPCLK.

isterresscriptionetValue

DIV00000028dratedivisorregister0

DIV10004028dratedivisorregister1

DIV20008028dratedivisorregister2

DIVncriptiontialState

DIV:0]dratedivisionvalueUBRDIVn>0

四、簡答題

1、根據(jù)嵌入式系統(tǒng)的特點,寫出嵌入式系統(tǒng)的定義。

答:嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為根底,軟/硬件可裁減,功能??煽啃?,本錢,體積,功耗要

求嚴(yán)格的專用計算機(jī)系統(tǒng)。

2、嵌入式系統(tǒng)的主要應(yīng)用領(lǐng)域有哪些?

3、什么是RISC?什么是CISC?

答:RISC是英文ReducedInstructionSetComputer的縮寫,漢語意思為“精簡指令系統(tǒng)計算機(jī)

相對應(yīng)的CISC就是〃復(fù)雜指令系統(tǒng)計算機(jī)〃的意思。

CPU從指令集的特點上可以分為兩類二CISC和RISCo

4、ARM9TDMI中的T、D、S、I分別表示什么含義?

答:T表示支持16位Thumb指令集,D表示在片可調(diào)式(Debug),M表示內(nèi)嵌乘法器Multiplier,

I表示嵌入式ICE,支持在線斷點和調(diào)試。

4、ARM處理器模式和ARM處理器狀態(tài)有什么區(qū)別?

答:[1)ARM7TARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、

中止模式、未定義模式和系統(tǒng)模式。

(2)ARM處理器狀態(tài):ARM狀態(tài)、Thumb狀態(tài)。

(3〕兩種處理器狀態(tài)都有這7種處理器模式;兩個狀態(tài)之間切換并不影響處理器模式或存放器內(nèi)容。

5、ARM9TDMI有幾種尋址方式?

答:立即尋址、存放器尋址、基地址變址尋址、存放器偏移尋址、存放器間接尋址、多存放器尋址

6、ARM9的內(nèi)部存放器R13、R14、R15的主要功能和作用?

7、FIQ、IRQ有什么不同?向量IRQ和非向量IRQ有什么不同?

答:[1)FIQ的優(yōu)先級比IRQ高,對外部事件響應(yīng)比IRQ快。

(2)A:向量IRQ具有中等優(yōu)先級,對外部事件響應(yīng)比擬及時;非向量IRQ優(yōu)先級最低,中斷延遲時間比擬長。

B:向量IRQ能為每個向量IRQ中斷源設(shè)置效勞程序地址;而所有的非向量IRQ中斷都共用一個相同的效勞程

序入口地址。

8、ARM9TDMI支持哪幾種指令集,各有什么特點?

9、ARM9TDMI有幾種處理器模式,簡單介紹該幾種模式的工作特點?

答:P45

ARM7TARM體系結(jié)構(gòu)支持7種處理器模式

1.用戶模式:正常處理程序時的模式

2.快中斷模式:響應(yīng)快速中斷時的處理模式

3.中斷模式:響應(yīng)普通中斷時的模式

4.管理模式:操作系統(tǒng)的保護(hù)模式

5.中止模式:指令或數(shù)據(jù)預(yù)取操作中止時的模式,該模式下實現(xiàn)虛擬存儲器或存儲器保護(hù)

6.未定義模式:當(dāng)執(zhí)行未定義的指令時進(jìn)入該模式

7.系統(tǒng)模式:運行特權(quán)操作系統(tǒng)任務(wù)時的模式

10、ARM9TDMI采用了幾級流水線工作方式,簡要說明。

11、ARM9TDMI支持的數(shù)據(jù)類型有幾種?各有什么要求?

12、ARM920T體系結(jié)構(gòu)支持哪兩種方法存儲字?jǐn)?shù)據(jù)?

13、ARM920T體系結(jié)構(gòu)所支持的哪幾種異常?說明其具體含義。

14、簡述ARM處理器對異常的響應(yīng)的步驟。

15、簡述ARM處理器從異常返回的步驟

16、寫出基于ARM920T核的處理器的異常優(yōu)先級(ExceptionPriorities)?

17.寫出基于ARM920T核的處理器的異常向量(ExceptionVectors)及異常進(jìn)入的模式

18.畫出采用力猥格式存放01020304H的存儲器示意圖。

19.畫出采用立超格式存放05060708H的存儲器示意圖。

20、ARM920T有哪些運行模式,其中哪些屬于特權(quán)模式?

21、用ARM匯編指令寫出實現(xiàn)64位加法和64位減法的代碼段,使用的存放器請自行分配

假定低32位數(shù)存放在r0和rl里面,高32位數(shù)存放在r2和r3里面。答:加法:ADDSr0,rO,rl〃加S是

因為要讓這個操作影響標(biāo)志位

ADCr2,r2,r3//ADC是帶進(jìn)位的加法,如果上一條指令產(chǎn)生進(jìn)位那么一起加進(jìn)來

減法:SUBSr0,r0,rl〃加S是因為要讓這個操作影響標(biāo)志位

SBCr2,r2,r3〃SBC是帶進(jìn)位的減法指令22、S3c2410支持幾種引導(dǎo)方式〔或者說是內(nèi)存映射方

式)?簡述Nand引導(dǎo)方式S3c2410硬件做的事情。

1)norflash啟動方式。2)nandflash啟動方式。

從Nandflash啟動時,S3c2410首先會執(zhí)行固化在片上ROM中的一段小程序,這段程序負(fù)

責(zé)將nandflash前2K的代碼搬移到片上RAM,然后將PC指針指向0x0地址(注意這個時候片上

RAM被映射到0x0的起始地址〕23、ARM微處理器內(nèi)核是如何進(jìn)行異常處理的?

答:1〕當(dāng)異常產(chǎn)生時,ARM內(nèi)核拷貝CPSR到SPSR_<mode>,設(shè)置適當(dāng)?shù)腃PSR位:改變處理器狀態(tài)進(jìn)入

ARM態(tài),改變處理器模式進(jìn)入相應(yīng)的異常模式,設(shè)置中斷禁止位禁止相應(yīng)中斷(如果需要);保存返回地

址到LR_〈mode>,設(shè)置PC為相應(yīng)的異常向量。2)返回時,異常處理需要從SPSR_〈mode>恢復(fù)CPSR,從

LR_〈mode>恢復(fù)PC,注意:這些操作只能在ARM態(tài)執(zhí)行。

24、ARM提供的可執(zhí)行映像文件的模板包括哪3個生成目標(biāo)?各包含什么調(diào)試信息?

答:ARM提供的可執(zhí)行的映像文件的模板包括了下面3個生成目標(biāo):

1)Debug使用本生成目標(biāo)生成的映像文件中包含了所有的調(diào)試信息,用于在開發(fā)過程中使用;

2)2〕Release使用本生成目標(biāo)生成的映像文件中不包含調(diào)試信息,用于生成實際發(fā)行的軟件版本;3)DebugRel

使用本生成目標(biāo)生成的映像文件中包含了根本的調(diào)試信息。

25、為什么需要嵌入式操作系統(tǒng)?

答:嵌入式系統(tǒng)與一般的系統(tǒng)不同,設(shè)計成為執(zhí)行特定的操作,但是初期的嵌入式系統(tǒng)比擬單純,不需

要特殊的操作系統(tǒng),由人來編寫程序并順序執(zhí)行,只有當(dāng)中間發(fā)生中斷時才會暫時脫離此順序程序。過

去的嵌入式系統(tǒng)主要與簡單而順序的操作有關(guān),使用操作系統(tǒng)成為浪費和不必要的舉措。但是最近的嵌

入式系統(tǒng)領(lǐng)域中系統(tǒng)本身相當(dāng)龐大,網(wǎng)絡(luò)和多媒體成為系統(tǒng)的根本功能,嵌入式系統(tǒng)要做的事情既多又

復(fù)雜,順序程序的操作變得越來越難。因而在嵌入式系統(tǒng)中出現(xiàn)了操作系統(tǒng)的概念,要滿足其實時的要

求,進(jìn)而產(chǎn)生了實時操作系統(tǒng)。

26、簡述口C/OSTI操作系統(tǒng)的移植條件。

答:要使口c/os—ii能正常運行,處理器必須滿足以下要求。

(1)處理器的c編譯器能產(chǎn)生可重入代碼

可重入代碼是指可以被多個任務(wù)同時調(diào)用,而不會破壞數(shù)據(jù)的一段代碼;或者說代碼具有在執(zhí)行過

程中打斷后再次被調(diào)用的能力。

12)處理器支持中斷,并且能產(chǎn)生定時中斷。arm處理器支持中斷并能產(chǎn)生定時中斷。

(3)c語言可以開/關(guān)中斷

arm處理器核包含一個cpsr存放器,該存放器包括一個全局中斷禁止位,控制它翻開和關(guān)閉中斷。

(4)處理器支持一定數(shù)量的數(shù)據(jù)存儲硬件堆棧

對于一些只有10根地址線的8位控制器,芯片最多可訪問Ikb存儲單元,在這樣的條件下移植是比擬

困難的。

15)處理器有將堆棧指針以及其他cpu存放器的內(nèi)容讀出并存儲到堆?;騼?nèi)存中去的指令

arm處理器中匯編指令stmfd可以將所有存放器壓棧,對應(yīng)的也有一個出棧指令I(lǐng)dmfdo

27、簡要說明嵌入式操作系統(tǒng)多任務(wù)通訊的常用方式。

答:多任務(wù)通訊的方式:a)共享內(nèi)存,主要是數(shù)據(jù)的共享;b)信號量,用于根本的互斥和任務(wù)同步;c)

消息隊列和管道,單CPU的消息傳送;d)Socket和遠(yuǎn)程過程調(diào)用,用于網(wǎng)絡(luò)間任務(wù)消息傳送。

28、嵌入式開發(fā)環(huán)境主要包括哪些組件?

嵌入式系統(tǒng)開發(fā)需要交叉編譯和在線調(diào)試的開發(fā)環(huán)境,主要包括

1宿主機(jī)2目標(biāo)機(jī)(評估電路板〕3基于JTAG的ICD仿真器、或調(diào)試監(jiān)控軟件、或在線仿

真器ICE。4運行于宿主機(jī)的交叉編譯器和鏈接器、以及開發(fā)工具鏈或軟件開發(fā)環(huán)境。5嵌

入式操作系統(tǒng)

29、在進(jìn)行基于ARM核的嵌入式系統(tǒng)軟件開發(fā)時,調(diào)用如下函數(shù):

intdo_something(intargl,void*arg2,chararg3,int*arg4)

這四個套數(shù)通過什么方式從調(diào)用程序傳入被調(diào)函數(shù)?

根據(jù)ATPCS編程標(biāo)準(zhǔn),調(diào)用函數(shù)和子程序通過R0——R3四個存放器傳遞參數(shù),超過四個

參數(shù)使用堆棧傳遞。因此argl通過R0傳入,arg2,通過R1傳入,arg3通過R2傳入,arg4

通過R3傳入

30、簡述MMU的含義及主要工作。

答:MMU,也就是“內(nèi)存管理單元”(memorymanagementunit)。

其主要作用是兩個方面:一是地址映射;二是對地址訪問的保護(hù)和限制。

31、ARM9TDMI核中TDMI的根本含義是:P42

T表示支持16位Thumb指令集,D表示在片可調(diào)式[Debug),

M表示內(nèi)嵌乘法器Multiplier,I表示嵌入式ICE,支持在線斷點和調(diào)試。

32、簡述ARM微處理器支持的指令集。

ARM微處理器支持32位的ARM指令集和16位的Thumb指令集。ARM指令集效率高,但代碼密度低;Thumb

指令集具有較高的代碼密度,可保持ARM的大多數(shù)性能上的優(yōu)勢,可看做是ARM指令集的子集。ARM程

序和Thumb程序可以相互調(diào)用,且沒有狀態(tài)切換開銷。

33、解釋以下標(biāo)識符的作用

33、描述嵌入式系統(tǒng)中存儲系統(tǒng)結(jié)構(gòu),存儲器分類以及各類存儲器的常規(guī)用途

分類:隨機(jī)存儲器[RAM):方便讀寫,

但掉電后信息喪失。

只讀存儲器(ROM):讀取方便,

但寫入需要特殊時序,

掉電后信息不喪失。

五、編程題

1.用匯編語言編寫程序讀取存儲器0x40003100地址上的數(shù)據(jù),將數(shù)據(jù)加1,假設(shè)結(jié)果小于10那么使用STR指

令把結(jié)果寫回原地址,假設(shè)結(jié)果大于等于10,那么把0寫回原地址。

2、用匯編語言調(diào)用C語言實現(xiàn)n個數(shù)相加,n為C函數(shù)的參數(shù),由匯編語言傳遞,結(jié)果存放在R5存放器中。

C程序:

2.3匯編指令實驗2SUBR5,R0,R8,LSL#3

XEQU11;判斷(5*Y/2)嗎,假設(shè)大于,那么

YEQU8R5=R5&0XFFFF0000

BIT23EQU(1?23)否那么,R5=R5|OXOOOOOOFF

AREAExamples,CODE,READONLYMOVRO,#Y

ENTRYADDRO,R0,RO,LSL#2

C0DE32MOVRO,R0,LSL#1

START;使用MOV.ADD指令實現(xiàn):R8=R3=X+YMOVR1,#X

MOVR0,#XMOVR1,R1,LSL#1

MOVRI,#YCMPRO,RI

ADDR3,R0,RILDRHIR2,=OXFFFFOOOO

MOVR8,R3ANDHIR5,R5,R2

;實現(xiàn)R5RX5FFFFFF8-R8*8ORRLSR5,R5,#OXOOOOOOFF

MVNR0,#OXAOOOOOO使用TST指令測試R5的BIT23是否為1,假

設(shè)是那么將BIT6位清零DOWHILE_ENDNOP

TSTR5,#BIT23;switch(key&OxOF)

BICNER5,R5,#0X00000040;{caseO:

BSTART;case2:

END;case3:x=key+y;

2.4匯編指令實驗3;break;

AREAExamples,CODE,READONLY;case5:x=key-y;

ENTRY;break;

C0DE32;case?:x=key-y;

START;(x>y)z=100;;break;

;elsez=50;;default:x=168;

MOVRO,#76;break;

MOVRI,#243;)

CMPRO,RIMOVRI,#3

MOVHIR2,#100MOVR2,#2

MOVLSR2,#50SWITCHANDR2,R2,#0x0F

;for(i=0;i<10;i++)CASE_OCMPR2,#0

;{x++CASE_2CMPNER2,#0

;)CASE_3CMPNER2,#0

MOVRO,#0BNECASE_5

MOVR2,#0ADDRO,R2,RI

FOR_L1CMPR2,#10BSWITCH_END

BHSFOR_ENDCASE_3CMPR2,#5

ADDRO,RO,#1BNECASE_7

ADDR2,R2,#1SUBRO,R2,RI

BFOR_L1BSWITCH_END

FOR_ENDNOPCASE_7CMPR2,#7

;while(x<y)BNEDEFAULT

;{x*=2MULRO,R2,RI

;)BSWITCH_END

MOVRO,#1DEFULTMOVRO,#168

MOVRI,#20SWITCH_ENDNOP

BWHILE_L2HALFBHALF

WHILE_L1MOVRO,RO,LSL#1END

WHILE_L2CMPRO,RI2.6C語言程序?qū)嶒?/p>

BLSWHILE_L1#defineunit8unsignedint

WHILE_ENDNOR#defineunit32unsignedint

;do#defineN100

;(unit32sum;

;}while(x>0);voidMain(void)

MOVRO,#5{unit32i;

DOWHILE_L1ADDRO,RO,#Tsum=0;

D0WHILE_L2MOVSRO,ROfor(i=0;i<=N;i++)

BNEDOWHILE_L1{sum+=i;

〃控制蜂鳴器BE的一聲

while(1);voidRunBeep(void)

)

匯編rGPHDAT=rGPHDAT&BEEP_MASK;//BEEP=0

IMPORT|Image$$RO$$Limit|DelayNS(5);

IMPORT|Image$$RW$$BaserGPHDAT=rGPHDAT|BEEP;BEEP=1

IMPORTImage$$ZI$$BaseDelayNS(5);

IMPORTImage$$ZI$$Limit)

IMPORTMain〃控制LEDrLED4全部點亮

AREAStart,CODE,READONLYvoidLEDDispAllOn(void)

ENTRY(

C0DE32rGPHDAT=rGPHDAT|(0x03?ll);

RestLDRSP,=0X40003F00rGPHDAT=rGPHDAT|(0x05?4);

LDRRO,=Image$$RO$$Limit}

LDRRI,=Image$$RW$$BaseE〃控制LED「LED4全部熄滅

LDRR3,=Image$$ZI$$BasevoidLEDDispAllOff(void)

CMPRO,RI(

BEQLOOP1rGPHDAT=rGPHDAT&C(0x03?l1));

LOOPOCMPR1,R3rGPHDAT=rGPHDAT&C(0x05?4));

LDRCCR2,[RO],#4}

STRCCR2,[RI],#4〃控制LEDPLED4顯示指定16進(jìn)制數(shù)值。

BCCLOOPOLED4為最高位,LED1為最低位

LOOP1LDRRI,=Image$$ZI$$Limit點亮表示該位為1

MOVR2,#0voidLEDDispNum(unit32dat)

LOOP2CMPR3,R1(

STRCCR2,[R3],#4dat=dat&0x0000000F;//參數(shù)過濾

BCCL00P2〃控制LED4,LED3顯示(d3,d2位)

BMain

ENDif(dat&0x08)rGPHDAT=rGPHDAT|(0X01?16

2.7);

2.8GPIO輸出控制實驗else

ftinclude"config,h”rGPHDAT=rGPHDAT&("(0X01?16));

ttdefineLED1_CON(1?11)

ftdefineLED2_CON(1?12)if(dat&0x04)rGPHDAT=rGPHDAT|(0X01?4)

ttdefineLED3_CON(1?4)

ttdefineLED4_C0N(1?6)else

ftdefineBEEP(l?10)rGPHDAT=rGPHDAT&C(0X01?4));

ttdefineBEEP_MASK("BEEP)〃控制LED2,LED1顯示〔dl,dO位)

voidDelayNS(uint32dly)

(rGPHDAT=(rGPHDATfeC(0X03?l1)))|((dat

uint32i;&0x03)?ll);

for(;dly>0;dly一))

for(i=0;i<50000;i++);初始化I/O,然后控制LED顯示

intmain(void)

rGPFCON=(rGPFCONfeC(0x03?8)));

inti;

初始化I/OrGPHCON=(rGPHCONfeC(0x03?20)))|(0x01

rGPECON=(rGPECONfeC(0X0F?22)))|(0X05?20);

?22);while(1)

rGPHCON=(rGPECONfeC(0X33?8)))|(OX11<{

<8);if(rGPFDAT&KEY_CON)

rGPHCON=(rGPECONfeC(0X03?20)))(0X51(

?20);rGPHDAT=rGPHDAT|BEEP;

))

控制LED顯示else

while(1)(

{rGPHDAT=rGPHDAT|BEEP_MASK;

RunBeep();〃蜂鳴器響一聲)

LED全閃爍5次DelayNS(1);

for(i=0;i<5;i++))

(return(0);

LED_DisA110ff();//LED全熄滅}

DelayNS(5);2.10外部中斷實驗

LED_DisA110n();//LED全點亮ftinclude"config,h”

DelayNS(5);ttdefineLED1_CON(1?11)

控制LED指示0~F的十六進(jìn)制數(shù)值ttdefineLED2_C0N(1?12)

)#defineLED3_C0N(1?4)

for(i=0;i<16;i++)ttdefineLED4_C0N(1?6)

(ttdefineKEY_CON(1?4)

LED_DisNum(i);〃顯示數(shù)值iuint8ledcon=0x00;

DelayNS(5);voidDelayNS(uint32dly)

uint32i;

return(0);for(;dly>0;dly一)

)for(i=0;i<50000;i++);

2.9GPI0輸入控制實驗}

ftinclude"config,h”voidIRQ_Eint4(void)

ftdefineKEY_CON(1?4)(

ftdefineBEEP(l?10)inti;

ftdefineBEEP_MASK("BEEP)rGPFCON=rGPFCON&C(0x03?8));

voidDelayNS(uint32dly)for(i=0;i<10000;i++);

(if(rGPFDAT&KEY_CON)

uint32i;{

for(;dly>0;dly一)rGPFCON=rGPFCON|(0x02?8);

for(i=0;i<50000;i++);rEINTPEND=(l?4);

)rSRCPND=(l?4);

intmain(void)rINTPND=rINTPND;

return;

LED_DispA110ff0;

rGPFCON=rGPFCON|(0x02?8);EINT_init();

if(ledcon)IRQEnable();

(while(1);

ledcon=0;return(0);

rGPEDAT=rGPEDAT&("LED1_CON);)

)2.11UART通訊實驗

else#include"config,h”

(voidDelayNS(uint32dly)

ledcon=l;

rGPEDAT=rGPEDAT|LED1_CON;uint32i;

}for(;dly>0;dly一)

rEINTPEND=(l?4);for(i=0;i<50000;i++);

rSRCPND=(l?4);}

rINTPND=rINTPND;串口接受字符

Unitg_getch=0;

voidEINTinit(void)

溫馨提示

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

評論

0/150

提交評論