S3C2410A實(shí)驗(yàn)指導(dǎo)說明書_第1頁(yè)
S3C2410A實(shí)驗(yàn)指導(dǎo)說明書_第2頁(yè)
S3C2410A實(shí)驗(yàn)指導(dǎo)說明書_第3頁(yè)
S3C2410A實(shí)驗(yàn)指導(dǎo)說明書_第4頁(yè)
S3C2410A實(shí)驗(yàn)指導(dǎo)說明書_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

...wd......wd......wd...目錄第1章實(shí)驗(yàn)要求3第2章預(yù)備知識(shí)4一、ADS1.2安裝4二、ADS1.2下使用Wiggler電纜調(diào)試5三、配置ads1.2軟件6四、H-JTAG驅(qū)動(dòng)程序的使用8第3章S3C2410A實(shí)驗(yàn)24實(shí)驗(yàn)一ADS1.2開發(fā)環(huán)境創(chuàng)立與簡(jiǎn)要介紹24一、實(shí)驗(yàn)?zāi)康?4二、實(shí)驗(yàn)內(nèi)容24三、實(shí)驗(yàn)設(shè)備24四、實(shí)驗(yàn)步驟24五、實(shí)驗(yàn)步驟32實(shí)驗(yàn)二ARM的I/O接口實(shí)驗(yàn)34一、實(shí)驗(yàn)?zāi)康?4二、實(shí)驗(yàn)內(nèi)容34三、實(shí)驗(yàn)設(shè)備34四、實(shí)驗(yàn)原理34五、實(shí)驗(yàn)步驟36六、參考程序36實(shí)驗(yàn)三ARM的中斷實(shí)驗(yàn)37一、實(shí)驗(yàn)?zāi)康?7二、實(shí)驗(yàn)內(nèi)容37三、實(shí)驗(yàn)設(shè)備37四、ARM的中斷原理37五、三星的2410ARM處理器的中斷的使用37六、中斷編程實(shí)例31七、實(shí)驗(yàn)步驟32八、分析理解32實(shí)驗(yàn)四ARM的UART實(shí)驗(yàn)34一、實(shí)驗(yàn)?zāi)康?4二、實(shí)驗(yàn)內(nèi)容34三、實(shí)驗(yàn)設(shè)備34四、UART的工作原理34五、實(shí)驗(yàn)步驟39六、分析理解39實(shí)驗(yàn)五ARM的A/D接口實(shí)驗(yàn)40一、實(shí)驗(yàn)?zāi)康?0二、實(shí)驗(yàn)內(nèi)容40三、實(shí)驗(yàn)設(shè)備40四、實(shí)驗(yàn)原理40五、實(shí)驗(yàn)步驟44六、分析理解44實(shí)驗(yàn)六鍵盤接口和七段數(shù)碼管的控制實(shí)驗(yàn)45一、實(shí)驗(yàn)?zāi)康?5二、實(shí)驗(yàn)內(nèi)容45三、實(shí)驗(yàn)設(shè)備45四、實(shí)驗(yàn)原理45五、實(shí)驗(yàn)步驟49六、分析理解49七、要求50實(shí)驗(yàn)要求ARM實(shí)驗(yàn)室是電子信息科學(xué)與技術(shù)的專業(yè)實(shí)驗(yàn)室。旨在培養(yǎng)學(xué)生對(duì)嵌入式系統(tǒng)設(shè)計(jì)和開發(fā)的能力,使學(xué)生加深對(duì)嵌入式系統(tǒng)設(shè)計(jì)思想的理解,掌握ARM實(shí)驗(yàn)平臺(tái)進(jìn)展程序設(shè)計(jì)、開發(fā)的技巧和方法,進(jìn)而增強(qiáng)學(xué)生的實(shí)踐能力和動(dòng)手能力,提高其創(chuàng)新意識(shí)。實(shí)驗(yàn)室還為大學(xué)生電子設(shè)計(jì)大賽,電子類學(xué)生的畢業(yè)設(shè)計(jì)、課程設(shè)計(jì)以及科研訓(xùn)練提供實(shí)驗(yàn)環(huán)境。利用嵌入式實(shí)驗(yàn)開發(fā)系統(tǒng)。實(shí)驗(yàn)要求在實(shí)驗(yàn)過程中,要求學(xué)生做到:〔1〕預(yù)習(xí)實(shí)驗(yàn)指導(dǎo)書有關(guān)局部,認(rèn)真做好實(shí)驗(yàn)內(nèi)容的準(zhǔn)備,就實(shí)驗(yàn)可能出現(xiàn)的情況提前作出思考和分析?!?〕仔細(xì)觀察上機(jī)編程時(shí)出現(xiàn)的各種現(xiàn)象,記錄主要情況,作出必要說明和分析。〔3〕認(rèn)真書寫實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)報(bào)告包括實(shí)驗(yàn)?zāi)康暮鸵?,?shí)驗(yàn)情況及其分析,寫出程序設(shè)計(jì)說明,給出源程序框圖和清單。〔4〕遵守機(jī)房紀(jì)律,服從輔導(dǎo)教師指揮,保護(hù)實(shí)驗(yàn)設(shè)備?!?〕實(shí)驗(yàn)課程不遲到,如有事不能出席,所缺實(shí)驗(yàn)一般不補(bǔ)。實(shí)驗(yàn)的驗(yàn)收將分為兩個(gè)局部。第一局部是上機(jī)操作,包括檢查程序運(yùn)行和即時(shí)提問。第二局部是提交書面的實(shí)驗(yàn)報(bào)告。預(yù)備知識(shí)ADS1.2安裝翻開安裝光盤的ads1.2文件夾,雙擊SETUP.EXE,進(jìn)展安裝,按默認(rèn)設(shè)置,也可適當(dāng)更改安裝路徑。安裝完成后,出現(xiàn)一個(gè)添加licence的界面,選中ADS1.2目錄下的crack文件夾中的licence.dat文件,點(diǎn)下一步,直至完畢。至此,完成軟件的安裝。ADS1.2下使用Wiggler電纜調(diào)試安裝Rdi.dll將文件夾下的Rdi.dll、dev.ini、dev文件夾一同拷貝到xx:\ProgramFiles\ARM\ADSv1_2\Bin目錄下〔推薦目錄〕;2.安裝并口驅(qū)動(dòng)運(yùn)行GiveIOInstaller.exe選擇InstallService配置ads1.2軟件翻開AXD,選擇菜單〞options〞中的〞configuertarget…〞,如以下列圖:點(diǎn)擊〞ADD〞,再?gòu)棾龅牧斜砜蛑姓业介_場(chǎng)拷貝的RDI.dll,如以下列圖:翻開后再點(diǎn)擊Configure進(jìn)展配置,點(diǎn)擊〞OK〞,如果此時(shí)連接了Wiggler電纜和實(shí)驗(yàn)箱,即可進(jìn)入正確的調(diào)試模式,如以下列圖:H-JTAG驅(qū)動(dòng)程序的使用安裝操作說明首先,將H-JTAGv2.0.exe應(yīng)用程序雙擊,安裝。安裝到你的C盤或D盤的programfiles下,安裝成功后,在桌面上會(huì)出現(xiàn)圖1左下方的圖標(biāo)H-JTAG。連上wiggler電纜,雙擊圖標(biāo)H-JTAG,彈出圖1的右面的對(duì)話框。假設(shè)檢測(cè),連接成功,最小化H-JTAG。到開場(chǎng)/程序/ARMDeveloperSuite1.2目錄下翻開ADS1.2的調(diào)試器AXD。將彈出圖8。點(diǎn)擊,深色處,之后點(diǎn)擊OK。〔注意,這步前,應(yīng)該正確安裝H-JTAGV2.0.exe程序〕S3C2410A實(shí)驗(yàn)ADS1.2開發(fā)環(huán)境創(chuàng)立與簡(jiǎn)要介紹實(shí)驗(yàn)?zāi)康氖煜DS1.2開發(fā)環(huán)境,正確使用仿真調(diào)試電纜進(jìn)展編譯、下載、調(diào)試。了解ARM匯編語(yǔ)言的根本框架,學(xué)會(huì)使用ARM的匯編語(yǔ)言編程。了解ARMC語(yǔ)言的根本框架,學(xué)會(huì)使用ARM的C語(yǔ)言編程實(shí)驗(yàn)內(nèi)容學(xué)習(xí)ADS1.2開發(fā)環(huán)境用匯編語(yǔ)言編寫一個(gè)簡(jiǎn)單的應(yīng)用程序用C語(yǔ)言編寫一個(gè)簡(jiǎn)單的應(yīng)用程序?qū)嶒?yàn)設(shè)備EL-ARM-830+教學(xué)實(shí)驗(yàn)箱,PC機(jī),仿真調(diào)試電纜。ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試電纜驅(qū)動(dòng)程序?qū)嶒?yàn)步驟ADS1.2下建設(shè)工程運(yùn)行ADS1.2集成開發(fā)環(huán)境〔CodeWarriorforARMDeveloperSuite〕,點(diǎn)擊File|New,在New對(duì)話框中,選擇Project欄,其中共有7項(xiàng),ARMExecutableImage是ARM的通用模板。選中它即可生成ARM的執(zhí)行文件。同時(shí),如圖2-1-1圖2-1-1還要在,Projectname欄中輸入工程的名稱,以及在Location中輸入其存放的位置。按確定保存工程。在新建的工程中,選擇Debug版本,如圖2-1-2,使用Edit|DebugSettings菜單對(duì)Debug版本進(jìn)展參數(shù)設(shè)置。圖2-1-2在如圖2-1-3中,點(diǎn)擊DebugSetting按鈕,彈出2-1-4圖,選中TargetSetting圖2-1-3圖2-1-4項(xiàng),在Post-linker欄中選中ARMfromELF項(xiàng)。按OK確定。這是為生成可執(zhí)行的代碼的初始開關(guān)。在如圖2-1-5中,點(diǎn)擊ARMAssembler,在ArchitectureorProcesser圖2-1-5欄中選ARM920T。這是要編譯的CPU核。在如圖2-1-6中,點(diǎn)擊ARMCCompliler,在ArchitectureorProcesser欄中選ARM920T。這是要編譯的CPU核。圖2-1-6在如圖2-1-7中,點(diǎn)擊ARMlinker,在outpur欄中設(shè)定程序的代碼段地址,以及數(shù)據(jù)使用的地址。圖中的ROBase欄中填寫程序代碼存放的起始地址,RWBase欄中填寫程序數(shù)據(jù)存放的起始地址。該地址是屬于SDRAM的地址。圖2-1-7圖2-1-8在options欄中,如圖2-1-8,Imageentrypoint要填寫程序代碼的入口地址,其他保持不變,如果是在SDRAM中運(yùn)行,則可在0x30000000—0x33ffffff中選值,這是64MSDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數(shù)據(jù)空間,而且還必須是4字節(jié)對(duì)齊的地址〔ARM狀態(tài)〕。通常入口點(diǎn)Imageentrypoint為0x30000000,ro_base也為0x30000000。在Layout欄中,如圖2-1-9,在Placeatbeginningofimage框內(nèi),需要填寫工程的入口程序的目標(biāo)文件名,如,整個(gè)工程工程的入口程序是2410init.s,那么應(yīng)在Object/Symbol處填寫其目標(biāo)文件名2410init.o,在Section處填寫程序入口的起始段標(biāo)號(hào)。它的作用是通知編譯器,整個(gè)工程的開場(chǎng)運(yùn)行,是從該段開場(chǎng)的。圖2-1-9在如圖2-1-10中,即在DebugSetting對(duì)話框中點(diǎn)擊左欄的ARMfromELF項(xiàng),在Outputfilename欄中設(shè)置輸出文件名*.bin,前綴名可以自己取,在Outputformat欄中選擇Plainbinary,這是設(shè)置要下載到flash中的二進(jìn)制文件。圖2-1-10中使用的是test.bin.圖2-1-10到此,在ADS1.2中的根本設(shè)置已經(jīng)完成,可以將該新建的空的工程文件作為模板保存起來。首先,要將該工程工程文件改一個(gè)適宜的名字,如S3C2410ARM.mcp等,然后,在ADS1.2軟件安裝的目錄下的Stationary目錄下新建一個(gè)適宜的模板目錄名,如,S3C2410ARMExecutableImage,再將剛剛設(shè)置完的S3c2410ARM.mcp工程文件存放到該目錄下即可。這樣,就能在圖2-1-10中看到該模板。新建工程工程后,就可以執(zhí)行菜單Project|AddFiles把和工程所有相關(guān)的文件參加,ADS1.2不能自動(dòng)進(jìn)展文件分類,用戶必須通過Project|CreateGroup來創(chuàng)立文件夾,然后把參加的文件選中,移入文件夾?;蛘呤髽?biāo)放在文件填加區(qū),右鍵點(diǎn)擊,即出!如圖2-1-11 圖2-1-11先選AddFiles,參加文件,再選CreateGroup,創(chuàng)立文件夾,然后把文件移入文件夾內(nèi)。讀者可根據(jù)自己習(xí)慣,更改Edit|Preference窗口內(nèi)關(guān)于文本編輯的顏色、字體大小,形狀,變量、函數(shù)的顏色等等設(shè)置。如圖2-1-12。圖2-1-122.ADS1.2下仿真、調(diào)試在ADS1.2下進(jìn)展仿真調(diào)試,首先需要一根仿真調(diào)試電纜。其驅(qū)動(dòng)程序的安裝和使用在光盤中的\實(shí)驗(yàn)軟件\ARM9_RDI中,里面有相關(guān)的文檔。在連上調(diào)試電纜后,給實(shí)驗(yàn)箱上電,翻開調(diào)試軟件AXDDebugger。點(diǎn)擊File|loadimage加載文件ADS.axf(\實(shí)驗(yàn)程序\HARDWARE\ADS\實(shí)驗(yàn)三\ADS\ADS_data目錄下)。翻開超級(jí)終端,設(shè)置其參數(shù)為:波特率為115200,數(shù)據(jù)位數(shù)8,奇偶校驗(yàn)無,停頓位無1,數(shù)據(jù)流控?zé)o。點(diǎn)擊全速運(yùn)行,出現(xiàn)圖2-1-13的界面:圖2-1-13在最后介紹調(diào)試按鈕,上圖,左起第一個(gè)是全速運(yùn)行,第二個(gè)是停頓運(yùn)行,第三個(gè)跳入函數(shù)內(nèi)部,第四個(gè)單步執(zhí)行,第五個(gè)跳出函數(shù)。到此,開發(fā)環(huán)境就全部介紹完了,這是ARM的開發(fā)根基。ARM使用C語(yǔ)言編程是大勢(shì)所趨在應(yīng)用系統(tǒng)的程序設(shè)計(jì)中,假設(shè)所有的編程任務(wù)均由匯編語(yǔ)言來完成,其工作量巨大,并且不易移植。由于ARM的程序執(zhí)行速度較高,存儲(chǔ)器的存儲(chǔ)速度和存儲(chǔ)量也很高,因此,C語(yǔ)言的特點(diǎn)充分發(fā)揮,使得應(yīng)用程序的開發(fā)時(shí)間大為縮短,代碼的移植十分方便,程序的重復(fù)使用率提高,程序架構(gòu)清晰易懂,管理較為容易等等。因此,C語(yǔ)言的在ARM編程中具有重要地位。ARMC語(yǔ)言程序的根本規(guī)則在ARM程序的開發(fā)中,需要大量讀寫硬件存放器,并且盡量縮短程序的執(zhí)行時(shí)間的代碼一般使用匯編語(yǔ)言來編寫,比方ARM的啟動(dòng)代碼,ARM的操作系統(tǒng)的移植代碼等,除此之外,絕大多數(shù)代碼可以使用C語(yǔ)言來完成。C語(yǔ)言使用的是標(biāo)準(zhǔn)的C語(yǔ)言,ARM的開發(fā)環(huán)境實(shí)際上就是嵌入了一個(gè)C語(yǔ)言的集成開發(fā)環(huán)境,只不過這個(gè)開發(fā)環(huán)境和ARM的硬件嚴(yán)密相關(guān)。在使用C語(yǔ)言時(shí),要用到和匯編語(yǔ)言的混合編程。當(dāng)匯編代碼較為簡(jiǎn)潔,則可使用直接內(nèi)嵌匯編的方法,否則,使用將匯編文件以文件的形式參加工程當(dāng)中,通過ATPCS的規(guī)定與C程序相互調(diào)用與訪問。ATPCS,就是ARM、Thumb的過程調(diào)用標(biāo)準(zhǔn)〔ARM/ThumbProcedureCallStandard〕,它規(guī)定了一些子程序間調(diào)用的根本規(guī)則。如存放器的使用規(guī)則,堆棧的使用規(guī)則,參數(shù)的傳遞規(guī)則等。在C程序和ARM的匯編程序之間相互調(diào)用必須遵守ATPCS。而使用ADS的C語(yǔ)言編譯器編譯的C語(yǔ)言子程序滿足用戶指定的ATPCS的規(guī)則。但是,對(duì)于匯編語(yǔ)言來說,完全要依賴用戶保證各個(gè)子程序遵循ATPCS的規(guī)則。具體來說,匯編語(yǔ)言的子程序應(yīng)滿足下面3個(gè)條件:●在子程序編寫時(shí),必須遵守相應(yīng)的ATPCS規(guī)則;●堆棧的使用要遵守相應(yīng)的ATPCS規(guī)則;●在匯編編譯器中使用-atpcs選項(xiàng)。根本的ATPCS規(guī)定,請(qǐng)?jiān)斠娞峁┑南嚓P(guān)PDF文檔。匯編程序調(diào)用C程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時(shí)參數(shù)正確傳遞。在匯編程序中使用IMPORT偽指令聲明將要調(diào)用的C程序函數(shù)。在調(diào)用C程序時(shí),要正確設(shè)置入口參數(shù),然后使用BL調(diào)用。C程序調(diào)用匯編程序匯編程序的設(shè)置要遵循ATPCS規(guī)則,保證程序調(diào)用時(shí)參數(shù)正確傳遞。在匯編程序中使用EXPORT偽指令聲明本子程序,使其他程序可以調(diào)用此子程序。在C語(yǔ)言中使用extern關(guān)鍵字聲明外部函數(shù)〔聲明要調(diào)用的匯編子程序〕。在C語(yǔ)言的環(huán)境內(nèi)開發(fā)應(yīng)用程序,一般需要一個(gè)匯編的啟動(dòng)程序,從匯編的啟動(dòng)程序,跳到C語(yǔ)言下的主程序,然后,執(zhí)行C程序,在C環(huán)境下讀寫硬件的存放器,一般是通過宏調(diào)用,在每個(gè)工程文件的Startup2410/INC目錄下都有一個(gè)2410addr.h的頭文件,那里面定義了所有關(guān)于2410的硬件存放器的宏,對(duì)宏的讀寫,就能操作2410的硬件。具體的編程規(guī)則同標(biāo)準(zhǔn)C語(yǔ)言。簡(jiǎn)單的小例子下面是一個(gè)簡(jiǎn)單的小例子IMPORTMainAREAa,CODE,READONLY;ENTRYLDRR0,=0x01d00000LDRR1,=0x245STRR1,[R0];把0x245放到地址0X01D00000BLMain;跳轉(zhuǎn)到Main()函數(shù)處的C/C++程序END;標(biāo)識(shí)匯編程序完畢以上是一個(gè)簡(jiǎn)單的程序,先存放器初始化,然后跳轉(zhuǎn)到Main()函數(shù)標(biāo)識(shí)的C/C++代碼處,執(zhí)行主要任務(wù),此處的Main是聲明的C語(yǔ)言中的Main()函數(shù)。實(shí)驗(yàn)步驟本實(shí)驗(yàn)僅使用實(shí)驗(yàn)教學(xué)系統(tǒng)的CPU板,串口。在進(jìn)展本實(shí)驗(yàn)時(shí),LCD電源開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。在PC機(jī)并口和實(shí)驗(yàn)箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜,以及串口間連接公/母接頭串口線。檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。翻開ADS1.2開發(fā)環(huán)境,從里面翻開C.mcp工程文件,進(jìn)展編譯。編譯通過后,進(jìn)入ADS1.2調(diào)試界面,加載C_Data\Debug中的映象文件程序映像C.axf。翻開/實(shí)驗(yàn)軟件/tools/目錄下的串口調(diào)試助手工具,配置為波特率為115200,校驗(yàn)位無,數(shù)據(jù)位為8,停頓位為1。不要選十六進(jìn)制顯示。之后,在ADS調(diào)試環(huán)境下全速運(yùn)行映象文件,應(yīng)出現(xiàn)圖2-3-1界面。本程序連續(xù)發(fā)送55。圖2-3-1下邊分析一下主程序的源碼。在C程序前的局部為系統(tǒng)的初始化,這在后邊BOOTLOADER的章節(jié)里,要詳細(xì)介紹。#include"..\inc\config.h"http://嵌入包括硬件的頭文件unsignedchardata;//定義全局變量voidMain(void){ Target_Init();//目標(biāo)板初始化,定義串口的硬件初始化在//target.c中定義Delay(10);//延時(shí)data=0x55;//給全局變量賦值while(1){Uart_Printf("%x",data);//串口0輸出Delay(10);} }把data=0x55;語(yǔ)句中的0x55,換成其他8位數(shù),重新編譯,下載,看看串口工具上輸出是什么內(nèi)容。ARM的I/O接口實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康牧私釹3C2410的通用I/O接口掌握I/0功能的復(fù)用并熟練的配置,進(jìn)展編程實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容利用ADS1.2編譯,在實(shí)驗(yàn)箱的CPU板上點(diǎn)亮LED燈LED1、LED2,并輪流閃爍!keil(mdk4.12)點(diǎn)亮LED燈LED1、LED2,并輪流閃爍!實(shí)驗(yàn)設(shè)備EL-ARM-830+教學(xué)實(shí)驗(yàn)箱,仿真調(diào)試電纜。ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動(dòng)程序。kiel+Proteus軟件。實(shí)驗(yàn)原理S3C2410CPU共有117個(gè)多功能復(fù)用輸入輸出口,分為8組端口:4個(gè)16位的I/O端口〔PORTC、PORTD、PORTE、PORTG〕2個(gè)11位的I/O端口〔PORTB和PORTH〕1個(gè)8位的I/O端口〔PORTF〕1個(gè)23位的I/O端口〔PORTA〕這些通用的GPI/O接口,是可配置的,PORTA除功能口外,它們僅用作輸出使用,剩下的PORTB、PORTC、PORTD、PORTE、PORTF、PORTG均可作為輸入輸出口使用。配置這些端口,是通過一些存放器來實(shí)現(xiàn)的,這些存放器均有各自的地址,位長(zhǎng)32位。往該地址中寫入相應(yīng)的數(shù)據(jù),即可實(shí)現(xiàn)功能及數(shù)據(jù)配置?,F(xiàn)用G口舉例說明。對(duì)于G口如表2-1、表2-2、表2-3,表2-1RegisterAddressR/WDescriptionResetValueGPGCON0x56000060R/WConfigurethepinsofportG0x0GPGDAT0x56000064R/WThedataregisterforportGUndefinedGPGUP0x56000068R/WPull-updisableregisterforportG0xF800Reserved0x5600006C–Reserved表2-2PortGSelectablePinFunctionsGPG15Input/outputEINT23nYPONGPG14Input/outputEINT22YMONGPG13Input/outputEINT21nXPONGPG12Input/outputEINT20XMONGPG11Input/outputEINT19TCLK1GPG10Input/outputEINT18–GPG9Input/outputEINT17–GPG8Input/outputEINT16–GPG7Input/outputEINT15SPICLK1GPG6Input/outputEINT14SPIMOSI1GPG5Input/outputEINT13SPIMISO1GPG4Input/outputEINT12LCD_PWRENGPG3Input/outputEINT11nSS1GPG2Input/outputEINT10nSS0GPG1Input/outputEINT9–GPG0Input/outputEINT8–表2-3GPGDATBitDescriptionGPG[15:0][15:0]Whentheportisconfiguredasinputport,datafromexternalsourcescanbereadtothecorrespondingpin.Whentheportisconfiguredasoutputport,datawritteninthisregistercanbesenttothecorrespondingpin.Whentheportisconfiguredasfunctionalpin,undefinedvaluewillberead.表2-4GPGUPBitDescriptionGPG[15:0][15:0]0:Thepull-upfunctionattachedtotothecorrespondingportpinisenabled.1:Thepull-upfunctionisdisabled.(GPG[15:11]are"pull-updisabled"stateattheinitialcondition.)也就是說,在地址0x56000060中,給32位的每一位賦值,那么,在CPU的管腳上就定義了管腳的功能值。當(dāng)G口某管腳配置成輸出端口,則在GPDAT對(duì)應(yīng)的地址中的對(duì)應(yīng)位上,寫入1,則該管腳輸出為高電平,寫入0,則該管腳輸出為低電平。假設(shè)配置為功能管腳,則該管腳變成具體的功能腳。其他端口配置請(qǐng)參見PDF文擋。在程序中對(duì)GPI/O各存放器的讀寫實(shí)現(xiàn),是通過給宏賦值實(shí)現(xiàn)的。這些宏在2410addr.h中定義;具體如:。#definerGPGCON(*(volatileunsigned*)0x56000060)//Gcontrol#definerGPGDAT(*(volatileunsigned*)0x56000064)//Gdata#definerGPGUP(*(volatileunsigned*)0x56000068)//Pull-upcontrolG因此,配置端口G,在程序中也就是用如下語(yǔ)句即可:rGPGCON=rGPGCON&0xFFFF0FFF|0x00050000;//配置第8、第9位為輸出管腳rGPGDAT=rGPGDAT&0xFCFF|0x0100;//配置第8位輸出為高電平,第9位輸出低電平。rGPGDAT=rGPGDAT&0xFCFF|0x0200;//配置第8位輸出為低電平,第9位輸出高電平。#definerGPGCON(*(volatileunsigned*)0x56000060)//PortGcontrol#definerGPGDAT(*(volatileunsigned*)0x56000064)//PortGdata#definerGPGUP(*(volatileunsigned*)0x56000068)//Pull-upcontrolGinti;intmain(void){rGPGCON=rGPGCON&0xfff0ffff|0x00050000;for(;;){ rGPGDAT=rGPGDAT&0xfcff|0x200; for(i=0;i<10000;i++);//延時(shí) rGPGDAT=rGPGDAT&0xfcff|0x100; for(i=0;i<10000;i++);//延時(shí) }}其他的各功能存放器在2410addr.h中也都有相應(yīng)的定義,參照該做法,即可把GPI/O管腳配置成輸入輸出端口,也可把管腳配置成所需的功能管腳。實(shí)驗(yàn)步驟本實(shí)驗(yàn)使用實(shí)驗(yàn)教學(xué)系統(tǒng)的CPU板,在進(jìn)展本實(shí)驗(yàn)時(shí),LCD電源開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。在PC機(jī)并口和實(shí)驗(yàn)箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜。檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。翻開ADS1.2開發(fā)環(huán)境,從里面翻開IO.mcp工程文件,進(jìn)展編譯。編譯通過后,進(jìn)入ADS1.2調(diào)試界面,加載實(shí)驗(yàn)程序IO_Data\Debug中的映象文件程序映像IO.axf。在ADS調(diào)試環(huán)境下全速運(yùn)行映象文件。觀察CPU板左下角的LED1、LED2燈輪流的的閃爍!這是對(duì)GPGIO口操作的結(jié)果。具體實(shí)現(xiàn)見程序。參考程序voidMain(void){inti; Target_Init();rGPGCON=rGPGCON&0xfff0ffff|0x00050000;while(1){ for(i=0;i<2000000;i++);//延時(shí) rGPGDAT=rGPGDAT&0xfcff|0x0200; for(i=0;i<2000000;i++);//延時(shí) rGPGDAT=rGPGDAT&0xfcff|0x100; }}ARM的中斷實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆盏闹袛噘Y源及其相關(guān)中斷存放器的進(jìn)展合理配置掌握對(duì)實(shí)驗(yàn)內(nèi)容學(xué)習(xí)響應(yīng)外部中斷請(qǐng)求的配置方法,并通過響應(yīng)定時(shí)器中斷,執(zhí)行中斷服務(wù)子程序使CPU板上的LED指示燈閃爍。實(shí)驗(yàn)設(shè)備EL-ARM-830+教學(xué)實(shí)驗(yàn)箱,PentiumII以上的PC機(jī),仿真調(diào)試電纜。PC操作系統(tǒng)WINXP或WIN7,ADS1.2仿真調(diào)試驅(qū)動(dòng)程序ARM的中斷原理在ARM中,有兩類中斷,一類是IRQ,一類是FIQ,IRQ是普通中斷,F(xiàn)IQ是快速中斷,在進(jìn)展大批量的復(fù)制、數(shù)據(jù)轉(zhuǎn)移等工作時(shí),常使用此類中斷。FIQ的優(yōu)先級(jí)高于IRQ。同時(shí),它們都屬于ARM的異常模式,當(dāng)一旦有中斷發(fā)生,不管是外部中斷,還是內(nèi)部中斷,正在執(zhí)行的程序都會(huì)停下,PC指針進(jìn)而跳入異常向量的地址處,假設(shè)是IRQ中斷,則0x18處,假設(shè)是FIQ中斷,則跳到0x1C處。異常向量地址處,一般存有中斷服務(wù)子程序的地址,所以,接下來PC指針跳入中斷服務(wù)子程序中。當(dāng)完成中斷服務(wù)子程序后,PC指針會(huì)返回到被打斷的程序的下一條地址處,繼續(xù)執(zhí)行程序。這就是ARM中斷操作的根本原理。但是,通常由于生產(chǎn)ARM處理器的各廠家都集成了很多中斷請(qǐng)求源,比方,串口中斷、AD中斷、外部中斷、定時(shí)器中斷、DMA中斷等等,所以,很多中斷可能同時(shí)請(qǐng)求中斷,因此,為區(qū)分它們,更準(zhǔn)確的完成任務(wù),這些中斷都有相應(yīng)的優(yōu)先級(jí)別,以及當(dāng)發(fā)生中斷時(shí),它們都有相應(yīng)的中斷標(biāo)志位,通過在發(fā)生中斷是判斷中斷優(yōu)先級(jí),和訪問中斷標(biāo)志位的狀態(tài)來識(shí)別到底哪一個(gè)中斷發(fā)生了。三星的2410ARM處理器的中斷的使用首先,ARM920TCPU的PSR存放器中的F位為1,則CPU不會(huì)響應(yīng)中斷控制器的FIQCPU的PSR存放器中的I位為CPU也不會(huì)響應(yīng)中斷控制器的IRQ中斷,為使CPU響應(yīng)中斷,須在啟動(dòng)代碼中將其設(shè)為0,以及使INTMSK存放器中的相應(yīng)位置0。S3C2410A共有56個(gè)中斷源,有26個(gè)中斷控制器,外部中斷EXTIN8~23共用一個(gè)中斷控制器,外部中斷EXTIN4~7共用一個(gè)中斷控制器,9個(gè)UART中斷分成3組,共用3個(gè)中斷控制器,ADC和觸摸屏共用一個(gè)中斷控制器。見表2-中斷的優(yōu)先級(jí)是由主組號(hào)和從ID號(hào)的級(jí)別控制的。中斷優(yōu)先級(jí)產(chǎn)生模塊如以下列圖所示:圖2-6-1從上圖可以看出,中斷優(yōu)先級(jí)產(chǎn)生模塊共有7個(gè)判優(yōu)器,每個(gè)判優(yōu)器是否使能由存放器PRIORITY[6:0]決定,每個(gè)判優(yōu)器下面有4~6個(gè)中斷源,這些中斷源對(duì)應(yīng)著REQ0~REQ5這6個(gè)優(yōu)先級(jí),這些優(yōu)先級(jí)由存放器PRIORITY[20:7]的相應(yīng)位決定。要正確使用S3C2410的中斷控制器,必須設(shè)置如下的存放器,如下表2-6-1所示:表2-6-1SRCPND0x4a000000R/W中斷源掛起寄存器,當(dāng)中斷產(chǎn)生后,相應(yīng)位置位INTMOD0x4a000004R/W中斷模式存放器,設(shè)定IRQ或FIQ模式INTMSK0x4a000008R/W中斷屏蔽存放器,如果相應(yīng)位置位則該中斷被屏蔽PRIORITY0x4a00000cR/W中斷優(yōu)先級(jí)控制存放器,設(shè)置中斷優(yōu)先級(jí)INTPND0x4a000010R/W中斷掛起存放器,相應(yīng)位對(duì)應(yīng)正在執(zhí)行的中斷服務(wù)INTOFFSET0x4a000014R中斷源請(qǐng)求偏移存放器25第三章25SUBSRCPND0x4a000018R/W子中斷源掛起存放器INTSUBMSK0x4a00001cR/W子中斷屏蔽存放器中斷掛起存放器主要是提供哪個(gè)中斷有請(qǐng)求的標(biāo)志存放器,相應(yīng)位置1,則說明有該中斷請(qǐng)求產(chǎn)生。假設(shè)相應(yīng)位為0,則無該中斷請(qǐng)求產(chǎn)生。中斷模式存放器主要是配置該中斷是IRQ型中斷,還是FIQ型中斷。中斷屏蔽存放器的主要功能是屏蔽相應(yīng)中斷的請(qǐng)求,即使中斷掛起存放器的相應(yīng)位已經(jīng)置1,假設(shè)中斷屏蔽存放器相應(yīng)位置1,則中斷控制器屏蔽該中斷請(qǐng)求,也無法讓CPU響應(yīng)該中斷。INTPND為向量IRQ中斷服務(wù)掛起狀態(tài)存放器,當(dāng)向量IRQ中斷發(fā)生時(shí),該存放器內(nèi)只有一位被設(shè)置,即只有當(dāng)前要服務(wù)的中斷標(biāo)志位置位。通過讀它的值,就能判斷出哪個(gè)中斷發(fā)生了。在INTPND中相應(yīng)位寫入數(shù)據(jù),就能去除掉中斷掛起存放器中的中斷請(qǐng)求標(biāo)志位,以使CPU不再響應(yīng)中斷,其實(shí),CPU響應(yīng)中斷是看中斷掛起存放器中的請(qǐng)求標(biāo)志位有沒有置位,假設(shè)置位,又屏蔽位翻開,ARM920T的PSR的F或I為也翻開,那么,CPU就響應(yīng)中斷,否則,有一個(gè)條件不成立,則CPU無法響應(yīng)中斷。SRCPND――源中斷指示存放器SRCPND存放器32位中的每一位對(duì)應(yīng)著一個(gè)中斷源,每一位被設(shè)置為1,則相應(yīng)的中斷源產(chǎn)生中斷請(qǐng)求并且等待中斷被服務(wù)。因此,這個(gè)存放器說明了哪個(gè)中斷源在等待中斷請(qǐng)求被處理。注意,SRCPND存放器的每一位是由中斷源自動(dòng)設(shè)置的,而不管INTMSK存放器中的屏蔽位是否置1。另外,SRCPND存放器不影響中斷控制器的優(yōu)先級(jí)邏輯。在指定中斷源的中斷服務(wù)程序中,SRCPND存放器相對(duì)應(yīng)的位必須被去除,這樣才可以正確響應(yīng)來自同一中斷源的中斷請(qǐng)求。如果從ISR返回而沒有去除相應(yīng)的位,也就是RCPND存放器中的對(duì)應(yīng)的位還是1,那么就會(huì)一直響應(yīng)這個(gè)中斷請(qǐng)求。SRCPND中相應(yīng)的中斷位去除的時(shí)間依賴于用戶的需求,如果想要從同一中斷源接收另一次有效的中斷請(qǐng)求,你在第一次就應(yīng)該去除相應(yīng)的位,并且使能中斷。用戶可以通過向SRCPND存放器的相應(yīng)位寫“1〞,這樣可以去除該位。下表為SRCPND存放器的地址和位定義說明RegisterAddressR/WDescriptionResetValueSRCPND0X4A000000R/WIndicate the interruptrequeststatus.0 = The interrupt has notbeenrequested.1=Theinterruptsourcehasassertedtheinterruptrequest.0x00000000INTMOD――中斷模式存放器中斷模式存放器〔〕的32位中的每一位對(duì)應(yīng)一個(gè)中斷源,當(dāng)INTMOD的每一位都設(shè)置位1,則ARM內(nèi)核將以FIQ模式相應(yīng)中斷,否則將以IRQ模式相應(yīng)中斷。INTMOD存放器的定義如下表:RegisterAddressR/WDescriptionResetValueNTMOD0X4A000004R/WInterruptmoderegiseter.0=IRQmode1=FIQmode0x00000000INTPND――中斷請(qǐng)求存放器中斷請(qǐng)求存放器32位中的每一位對(duì)應(yīng)著相應(yīng)的中斷請(qǐng)求,經(jīng)過優(yōu)先級(jí)邏輯后,INTPND存放器只能有一位被設(shè)置為1,并且向ARM產(chǎn)生中斷請(qǐng)求。在IRQ中斷服務(wù)子程序,能夠讀取這個(gè)存放器的值來決定32個(gè)中斷源的那一個(gè)中斷被服務(wù)。同SRCPND存放器,在中斷服務(wù)子程序里,這個(gè)存放器的相應(yīng)位需要被去除INTPND存放器寫一個(gè)數(shù)據(jù)1,來去除存放器的指定位。INTMSK――中斷屏蔽存放器在INTMSK存放器中,32位依次對(duì)應(yīng)著每個(gè)中斷源,如果指定位被設(shè)為1,ARM將不響應(yīng)中斷源的中斷請(qǐng)求〔注意,即使在SRCPND相應(yīng)的位被置位1的條件下也不響應(yīng)〕。如果屏蔽位為0,則中斷請(qǐng)求可以被響應(yīng)。PRIORITYRegisterAddressR/WDescriptionResetValuePRIORITY0x4A00000CR/WIRQprioritycontrolregister0x7FPRIORITYBitDescriptionInitialStateARB_SEL6[20:19]600==10==[18:17]500=01=REQ10=11=REQ[16:15]400==REQ10==REQ[14:13]300==REQ10==REQ[12:11]200==REQ10==REQ[10:9]100==REQ10==REQ[8:7]000==10==ARB_MODE6[6]60=not1=27第三章27[5]50=not1=[4]40=not1=[3]30=not1=[2]20=not1=[1]10=not1=[0]00=not1=INTOFFSET――中斷偏移存放器中斷偏移存放器INTOFFSET中的值顯示了INTPND存放器中哪一個(gè)IRQ的SRCPND和INTPND后將自動(dòng)去除。S3C2440A子中斷列表SUBSRCPND――次級(jí)源中斷指示存放器INTSUBMSK――次級(jí)中斷屏蔽存放器表2-6-2第三章第三章29EXTINTn――外部中斷控制存放器n外部中斷控制存放器可以控制外部中斷信號(hào)有效方式,外部中斷信號(hào)有效方式可以設(shè)置為電平觸發(fā)和邊沿觸發(fā),具體內(nèi)容見下表。EXTERNALINTERRUPTCONTROLREGISTER(EXTINTn)The24externalinterruptscanberequestedbyvarioussignalingmethods.TheEXTINTnconfiguresthesignalingmethodbetweentheleveltriggerandedgetriggerfortheexternalinterruptrequest,andalsoconfiguresthesignalpolarity.Torecognizethelevelinterrupt,thevalidlogiclevelonEXTINTnpinmustberetainedatleastfor40nsbecauseofthenoisefilter(EINT[15:0]).EXTINT0BitDescriptionEINT7[30:28]Setof000=001=High=10x==3030EINT6[26:24]Setof000==High=edge10x=edge=BothEINT5[22:20]SetofEINT5.000==High=edge10x=edge=BothEINT4[18:16]SetofEINT4.000==High=edge10x=edge=BothEINT3[14:12]SetofEINT3.000==High=edgetriggered10x=edge=BothEINT2[10:8]SetofEINT2.000==High=edge10x=edge=BothEINT1[6:4]SetofEINT1.000==High=edge10x=edge=BothEINT0[2:0]SetofEINT0.000==Highlevel =edge10x=edge=BothBitDescriptionReserved[31]EINT15[30:28]Setof000===edge10x=edge=BothReserved[27]EINT14[26:24]SetofEINT14.000===edge10x=edge=BothReserved[23]EINT13[22:20]SetofEINT13.000===edge10x=edge=BothReserved[19]EINT12[18:16]SetofEINT12.000===edge10x=edge=BothReserved[15]EINT11[14:12]Setof000===edge10x=edge=BothReserved[11]EINT10[10:8]SetofEINT10.000===edge10x=edge=BothReserved[7]EINT9[6:4]SetofEINT9.000===edge10x=edge=BothReserved[3]EINT8[2:0]SetofEINT8.000===edge10x=edge=Bothtriggered31第三章31BitDescriptionFLTEN23[31]Filterfor0=1=EINT23[30:28]Setof000===10x=edge=edgeFLTEN22[27]Filterfor0=1=EINT22[26:24]SetofEINT22.000===10x=edge=edgeFLTEN21[23]Filterfor0=1=EINT21[22:20]SetofEINT21.000===10x=edge=edgeFLTEN20[19]Filterfor0=1=EINT20[18:16]SetofEINT20.000===10x=edge=edgetriggeredFLTEN19[15]Filterfor0=1=EINT19[14:12]SetofEINT19.000===10x=edge=edgetriggeredFLTEN18[11]Filterfor0=EINT18[10:8]SetofEINT18.000===10x=edge=edge[7]Filterfor0=1=EINT17[6:4]SetofEINT17.000===10x=edge=edgeFLTEN16[3]Filterfor0=1=EINT16[2:0]SetofEINT16.000===10x=edge=edgeEXTERNALINTERRUPTFILTERREGISTER(EINTFLTn)TheEINTFLTnthelengthoffilterfor8interrupts(EINT[23:16]).EXTERNALINTERRUPTMASKREGISTER(EINTMASK)中斷編程實(shí)例在ADS1.2的開發(fā)環(huán)境下,翻開Interrupt.mcp工程,在Application/SRC/Main.c中可以看到,主程序中,在進(jìn)展目標(biāo)板初始化后,程序進(jìn)入死循環(huán),等待中斷!在Startup2410/src/target.C文件中包括對(duì)要使用的中斷控制器的初始化程序,CPU響應(yīng)了該中斷后的中斷服務(wù)子程序。該工程的程序流程是,按下程序啟動(dòng)后,初始化定時(shí)器1,設(shè)定定時(shí)器的中斷時(shí)間,然后,等待定時(shí)器中斷,當(dāng)定時(shí)器中斷到來時(shí),就會(huì)進(jìn)入定時(shí)器中斷服務(wù)子程序,而中斷服務(wù)子程序會(huì)把LED1和LED2燈熄滅或點(diǎn)亮,從現(xiàn)象中看到LED1和LED2燈忽閃一次,則說明定時(shí)器發(fā)生了一次中斷。最后,關(guān)閉中斷請(qǐng)求,等待下一次的中斷的到來。為使CPU響應(yīng)中斷,在中斷服務(wù)子程序執(zhí)3232行之前,必須翻開ARM920T的CPSR中的I位,以及相應(yīng)的中斷屏蔽存放器中的位。打開相應(yīng)的中斷屏蔽寄存器中的位,是在target.C中的voidTimer1INT_Init(void)函數(shù)中,在做了這些準(zhǔn)備后,就可以等待中斷的到來了。voidTimer1INT_Init(void){//定時(shí)器接口使能if((rINTPND&BIT_TIMER1)){rSRCPND|=BIT_TIMER1;}pISR_TIMER1=(int)Timer1_ISR;rINTMSK &=~(BIT_TIMER1); //開中斷;}TIMER1INT_Init()函數(shù)已在Target_Init()中調(diào)用。詳見Interrupt.mcp源代碼注釋。實(shí)驗(yàn)步驟本實(shí)驗(yàn)僅使用實(shí)驗(yàn)教學(xué)系統(tǒng)的核心CPU板。在進(jìn)展本實(shí)驗(yàn)時(shí),LCD電源開關(guān),音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。在PC機(jī)并口和實(shí)驗(yàn)箱的CPU板上的JTAG纜。檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。翻開超級(jí)終端0,超級(jí)終端1,進(jìn)展設(shè)置〔115200,8位數(shù)據(jù),1位停頓位,無奇偶校驗(yàn)〕;翻開ADS1.2編譯通過后,進(jìn)入ADS1.2中的映象文件程序映像在ADS和LED1和1可以改變閃爍的頻率,即改變文件內(nèi)的rTCNTB1=越快。編譯全速運(yùn)行,觀看結(jié)果,看閃爍頻率是否發(fā)生了改變!這是對(duì)GPIO口操作的結(jié)果。具體實(shí)現(xiàn)見程序。分析理解運(yùn)行程序開發(fā)版上的led1和led2交替閃爍?!?分〕定時(shí)器中斷服務(wù)子程序〔0.5分〕intflag;voidirqTimer1_ISR(void){if(flag==0){rGPGDAT=rGPGDAT&0xeff|0x200;flag=1;}else{rGPGDAT=rGPGDAT&0xdff|0x100;flag=0;}rSRCPND|=BIT_TIMER1;rINTPND|=BIT_TIMER1;}定時(shí)器初始化程序〔0.5分〕void{=&|GPG=|=255; //=0<<4; //=//在下,1秒鐘的記數(shù)值=/4/256===(1|(1<<|(0=|(0<<|(1}異常及中斷控制器的初始化〔1分〕void{=====0x0; ==//Allis<-SOP}分別利用main分〕,實(shí)現(xiàn)了周期不同。ARM的UART實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康牧私獠⑹煜ART的概念及其工作原理;掌握ARM相應(yīng)的存放器配置;能夠用C編寫出相應(yīng)的串口程序;實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)箱的CPU板上運(yùn)行程序,在超級(jí)終端上回顯發(fā)送的數(shù)據(jù)!實(shí)驗(yàn)設(shè)備EL-ARM-830+教學(xué)實(shí)驗(yàn)箱,PC機(jī),仿真調(diào)試電纜,串口電纜。PC操作系統(tǒng)WIN7或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動(dòng)程序。UART的工作原理通用的串行I/O接口有許多種,最常見的一種標(biāo)準(zhǔn)是美國(guó)電子工業(yè)協(xié)會(huì)推薦的一種標(biāo)準(zhǔn),即RS—232C。這種標(biāo)準(zhǔn)在PC系列中大量采用9針接插件。在ARM的處理器中,也采用了這種標(biāo)準(zhǔn)。具體的硬件機(jī)械、電氣特性請(qǐng)參閱有關(guān)RS232串口通信的書籍。S3C2410的UART〔UniversalAsynchronousReceiverandTransmitter,通用異步收發(fā)器〕單元提供3個(gè)獨(dú)立的異步串行I/O口,都可以運(yùn)行于中斷模式或DMA模式。也就是說,UART可以產(chǎn)生中斷請(qǐng)求或DMA請(qǐng)求,以便在CPU和UART之間傳遞數(shù)據(jù)。它最高可支持115200bps的傳輸速率。S3C2410中每個(gè)UART通道包含兩個(gè)用于接收和發(fā)送數(shù)據(jù)的16位FIFO隊(duì)列。S3C2410的每個(gè)UART都有波特率發(fā)生器、數(shù)據(jù)發(fā)送器、數(shù)據(jù)接收器,及控制單元。內(nèi)部數(shù)據(jù)通過并行數(shù)據(jù)總線到達(dá)發(fā)送單元后,進(jìn)入FIFO隊(duì)列,或不進(jìn)入FIFO隊(duì)列,通過發(fā)送移相器TXDn引腳發(fā)送出去,送出的數(shù)據(jù)通過一個(gè)電壓轉(zhuǎn)換芯片將3.3V的TTL/COMS電平轉(zhuǎn)換成EIA〔ElectronicindustriesAssociation〕電平,送進(jìn)PC的串口。數(shù)據(jù)接收的過程剛好相反,外部串口信號(hào)需要先把EIA電平經(jīng)電壓轉(zhuǎn)換芯片把電平轉(zhuǎn)換3.3V的TTL/COMS電平,然后由RXDn管腳進(jìn)入接收移相器,經(jīng)過轉(zhuǎn)換后放到并行數(shù)據(jù)總線上,由CPU進(jìn)展處理或直接送到存儲(chǔ)器中〔DMA方式下〕。在正確使用S3C2410的串口進(jìn)展收發(fā)實(shí)驗(yàn)前,首先,要配置相關(guān)的存放器組。見表2-8-1。表2-8-1為串口0和串口1的線性控制存放器的配置說明,推薦使用值:0x03; infra-RedMode:紅外、正常模式選擇: [6]0正常模式,1紅外模式UARTLINECONTROLREGISTERTherearethreeUARTlinecontrolregistersincludingULCON0,ULCON1,andULCON2intheUARTblock.RegisterAddressR/WDescriptionULCON00x50000000R/WUARTchannel0linecontrolregisterULCON10x50004000R/WUARTchannel1linecontrolregisterULCON20x50008000R/WUARTchannel2linecontrolregisterULCONnBitDescriptionULCON0R/WUARTchannel0linecontrolregisterULCON1R/WUARTchannel1linecontrolregisterULCON2R/WUARTchannel2linecontrolregister表2-8-1ParityMode:奇偶校驗(yàn)?zāi)J竭x擇:[5:3]0XX無奇偶校驗(yàn) 100奇校驗(yàn) 101偶校驗(yàn) 110強(qiáng)制校驗(yàn)/校驗(yàn)1 111強(qiáng)制校驗(yàn)/校驗(yàn)0 Numberofstopbit:停頓位選擇:[2]01個(gè)停頓位,12個(gè)停頓位Wordlength:字長(zhǎng) [1:0]005位,016位,107位,118位表2-8-2為串口0和串口1的控制存放器的配置說明,推薦使用值:0X245;ClockSelection選擇使用的時(shí)鐘[10]0:使用PCLK,1:使用UCLK引腳引入的時(shí)鐘Txinterrupttype發(fā)送中斷請(qǐng)求類型[9]0=邊沿,1=電平Rxinterrupttype接收中斷請(qǐng)求類型[8]0=邊沿,1=電平Rxtimeoutenable允許/不允許Rx超時(shí)中斷[7]0=制止1=使能Rxerrorstatusinterruptenable允許/不允許UART錯(cuò)誤中斷[6]0=不允許1=允許表2-8-2Loop-backMode:該位為1使UART進(jìn)入loopback模式[5]0=正常模式,1=Loop-back模式SendBreakSignal:該位為1使UART發(fā)送一個(gè)暫停條件,該位在發(fā)送一個(gè)暫停信號(hào)后自動(dòng)去除[4]0=正常發(fā)送,1=發(fā)送斷點(diǎn)信號(hào)TransmitMode:這兩位確定哪個(gè)模式可以寫TX數(shù)據(jù)到UART發(fā)送保持存放器[3:2]00=制止01=中斷請(qǐng)求或查詢模式10=BDMA0請(qǐng)求(僅為UART0)11=BDMA1請(qǐng)求(僅為UART1)ReceiveMode: 這兩位確定哪個(gè)模式可以從UART接收緩沖存放器讀數(shù)據(jù)00=制止01=中斷請(qǐng)求或查詢模式10=BDMA0請(qǐng)求(僅為UART0)11=BDMA1請(qǐng)求(僅為UART1)表2-8-3為串口0和串口1的FIFO控制存放器的配置說明,推薦使用值:0X00;表2-8-3TxFIFOTriggerLevel:這兩位確定發(fā)送FIFO的觸發(fā)條件[7:6]00=空,01=4字節(jié),10=8字節(jié),11=12字節(jié)RxFIFOTriggerLevel這兩位確定接收FIFO的觸發(fā)條件[5:4]00=空,01=4字節(jié),10=8字節(jié),11=12字節(jié)Reserved[3] 保存TxFIFOResetTXFIFO復(fù)位位,該位在FIFO復(fù)位后自動(dòng)去除[2]0=正常,1=TxFIFO復(fù)位RxFIFOResetRxFIFO復(fù)位位,該位在FIFO復(fù)位后自動(dòng)去除[1]0=正常,1=RxFIFO復(fù)位FIFOEnableFIFO模式選擇[0]0=制止FIFO1=FIFO模式表2-8-3為串口0和串口1的模式控制存放器的配置說明,推薦使用值:0X00;AFC(AutoFlowControlAFC是否允許[4]0=制止1=使能RequesttoSend:如果AFC允許,該位忽略[0]0=高電平(制止nRTS)1=低電平(激活nRTS)表2-8-4這是需要用程序配置的有關(guān)串口的存放器,其他的是一些狀態(tài)存放器,如UARTTX/RX狀態(tài)存放器,UART錯(cuò)誤狀態(tài)存放器,UARTFIFO狀態(tài)存放器,UARTMODEM狀態(tài)存放器,UART接收緩沖存放器和FIFO存放器。當(dāng)然,關(guān)于UART波特率設(shè)置,則有專門的分頻存放器進(jìn)展設(shè)置。計(jì)算公式具體如下:UBRDIVn=(int)(PCLK/(bpsx16))–1或者UBRDIVn=(int)(UCLK/(bpsx16))–1PCLK是外圍總線頻率,UCLK是UCLK引腳引入的時(shí)鐘頻率。例如在PCLK=50.7MHz下,當(dāng)波特率取115200時(shí),UBRDIVn=int(50700000/115200/16)–1=26根據(jù)具體的程序要求,正確配置各存放器。詳細(xì)具體設(shè)置應(yīng)用,請(qǐng)參見HARDWARE\ADS\實(shí)驗(yàn)八目錄下的UART.mcp工程文件。請(qǐng)?jiān)敿?xì)閱讀代碼注釋。實(shí)驗(yàn)步驟本實(shí)驗(yàn)使用實(shí)驗(yàn)教學(xué)系統(tǒng)的CPU板,串口。在進(jìn)展本實(shí)驗(yàn)時(shí),LCD電源開關(guān)、音頻的左右聲道開關(guān)、AD通道選擇開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。在PC機(jī)并口和實(shí)驗(yàn)箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜。使用串口線連接PC機(jī)串口1和實(shí)驗(yàn)箱CPU板的串口。檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。翻開ADS1.2開發(fā)環(huán)境,從里面翻開\實(shí)驗(yàn)程序\HARDWARE\ADS\實(shí)驗(yàn)八\uart.mcp工程文件,進(jìn)展編譯。編譯通過后,進(jìn)入ADS1.2調(diào)試界面,加載實(shí)驗(yàn)程序\HARDWARE\ADS\實(shí)驗(yàn)八\UART_Data\Debug中的映象文件程序映像UART.axf。翻開超級(jí)終端0,超級(jí)終端1,進(jìn)展設(shè)置〔115200,8位數(shù)據(jù),1位停頓位,無奇偶校驗(yàn)〕;在ADS調(diào)試環(huán)境下,全速運(yùn)行映象文件。激活超級(jí)終端0,敲鍵盤,觀察超級(jí)終端0,超級(jí)終端1的內(nèi)容顯示!所敲鍵盤的字符應(yīng)該在兩個(gè)超級(jí)終端上顯示出來。實(shí)驗(yàn)的原理就是把鍵盤敲擊的字符通過PC機(jī)的串口發(fā)送給實(shí)驗(yàn)箱上的ARM的CPU板的串口0,ARM的CPU板上的串口得到字符后,通過ARM把它送給CPU板上的串口0輸出給PC機(jī)。這樣,就完成了串口間的收發(fā)數(shù)據(jù)。分析理解如何設(shè)置串口的波特率串口是如何發(fā)送、接收數(shù)據(jù)的在超級(jí)終端上顯示特定的字符串(HelloWorld!)。ARM的A/D接口實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)A/D接口原理掌握S3C2410的A/D相關(guān)存放器的配置及編程應(yīng)用方法;實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)箱的CPU板上運(yùn)行程序,在超級(jí)終端及LCD上顯示采集到的數(shù)據(jù)值!實(shí)驗(yàn)設(shè)備EL-ARM-830+教學(xué)實(shí)驗(yàn)箱,PentiumII以上的PC機(jī),仿真調(diào)試電纜,串口電纜。PC操作系統(tǒng)WIN98或WIN2000或WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動(dòng)程序。實(shí)驗(yàn)原理A/D轉(zhuǎn)換器是模擬信號(hào)和CPU之間聯(lián)系的接口,它是將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),以供計(jì)算機(jī)和數(shù)字系統(tǒng)進(jìn)展分析、處理、存儲(chǔ)、控制和顯示。在工業(yè)控制和數(shù)據(jù)采集及許多其他領(lǐng)域中,A/D轉(zhuǎn)換是不可缺少的。按照轉(zhuǎn)換速度、精度、功能以及接口等因素,常用的A/D轉(zhuǎn)換器有以下兩種:a.雙積分型的A/D轉(zhuǎn)換器雙積分型也稱為二重積分式,其實(shí)質(zhì)是測(cè)量和比擬兩個(gè)積分的時(shí)間,一個(gè)是對(duì)模擬信號(hào)電壓的積分時(shí)間T,此時(shí)間常是固定的,另一個(gè)是以充電后的電壓為初值,對(duì)參考電源Vn的反向積分,積分電容被放電至零,所需的時(shí)間Ti。模擬輸入電壓Vi與參考電壓Vref之比,等于上述兩個(gè)時(shí)間之比。由于Vref、T時(shí)間固定,而放電時(shí)間Ti可以測(cè)出,因而可以計(jì)算出模擬輸入電壓的大小。b.逐次逼近型的A/D轉(zhuǎn)換器逐次逼近型也稱為逐位比擬式,它的應(yīng)用比積分型更為廣泛,通常主要有逐次逼近存放器SAR、D/A轉(zhuǎn)換器、比擬器以及時(shí)序和邏輯控制等局部組成。通過逐次把設(shè)定的SAR存放器中的數(shù)字量經(jīng)D/A轉(zhuǎn)換后得到電壓Vc與待轉(zhuǎn)換模擬電壓V0進(jìn)展比擬。比擬時(shí),先叢SAR的最高位開場(chǎng),逐次確定各位的數(shù)碼應(yīng)為‘1’還是‘0’,而得到最終的轉(zhuǎn)換值。其工作原理為:轉(zhuǎn)換前,先將SAR存放器各位清零,轉(zhuǎn)換開場(chǎng)時(shí),控制邏輯電路先設(shè)定SAR存放器的最高位為‘1’,其余各位為‘0’,此值經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成電壓Vc,然后將Vc與輸入模擬電壓Vx進(jìn)展比擬。如果Vx大于等于Vc,說明輸入的模擬電壓高于比擬的電壓,SAR最高位的‘1’應(yīng)保存;如果Vx小于Vc,說明SAR的最高位應(yīng)去除。然后在SAR的次高位置‘1’,依上述方法進(jìn)展D/A轉(zhuǎn)換和比擬。如此反復(fù)上述過程,直至確定出SAR存放器的最低位為止,此過程完畢后,狀態(tài)線改變狀態(tài),說明已完成一次轉(zhuǎn)換。最后,逐次逼近存放器SAR中的數(shù)值就是輸入模擬電壓的對(duì)應(yīng)數(shù)字量。位數(shù)越多,越能準(zhǔn)確逼近模擬量,但轉(zhuǎn)換所需的時(shí)間也越長(zhǎng)。三星2410的A/D的工作介紹S3C2410的A/D轉(zhuǎn)換器包含一個(gè)8路模擬輸入混合器,可以將模擬輸入信號(hào)轉(zhuǎn)換成10位數(shù)字編碼。在AD轉(zhuǎn)換時(shí)鐘為2.5MHz時(shí),其最大轉(zhuǎn)換率為500KSPS。AD轉(zhuǎn)換操作支持片上采樣保持功能和掉電模式。特征如下:最大轉(zhuǎn)換速率:500KSPS輸入電壓范圍:0-3.3V在正確使用S3C2410的AD進(jìn)展采集實(shí)驗(yàn)前,首先,要配置相關(guān)的存放器組。見表2-9-1。表2-18為A/D轉(zhuǎn)換存放器的配置說明。表2-9-1 ECFLGA/D轉(zhuǎn)換狀態(tài)標(biāo)志(只讀)[15]0=A/D轉(zhuǎn)換中1=A/D轉(zhuǎn)換完畢 PRSCENA/D轉(zhuǎn)換預(yù)比例因子〔預(yù)定值〕使能[14]0=制止1=使能PRSCVL[13:6]預(yù)比例因子設(shè)置SEL_MUX模擬輸入通道選擇[5:3]000=AIN0001=AIN1010=AIN2011=AIN3100=AIN4101=AIN5110=AIN6111=AIN7STDBM模式選擇[2]0=普通模式1=待命模式READ_STARTA/D轉(zhuǎn)換通過讀來啟動(dòng)[1]0=通過讀操作關(guān)閉1=通過讀操作啟動(dòng)ENABLE_STARTA/D轉(zhuǎn)換通過允許來啟動(dòng)〔如果READ_START位無效〕[0]0=關(guān)閉 1=A/D轉(zhuǎn)換開場(chǎng),之后該位自動(dòng)去除表2-9-2為A/D轉(zhuǎn)換器轉(zhuǎn)換模式的配置說明,表2-9-2在普通AD轉(zhuǎn)換時(shí),AUTO_PST和XY_PST都設(shè)置成0即可,其他各位與觸摸屏有關(guān),可以忽略,不需設(shè)置。表2-9-3為A/D轉(zhuǎn)換器數(shù)據(jù)存放器的說明。表2-9-3在這個(gè)數(shù)據(jù)存放器是只讀,可以讀取A/D轉(zhuǎn)換的數(shù)字量。9~0位是轉(zhuǎn)換后的數(shù)字量。根據(jù)具體的程序要求,正確配置各存放器?,F(xiàn)舉例如下:〔仔細(xì)分析轉(zhuǎn)換過程〕intGet_AD(unsignedcharch){inti;intval=0;if(ch>7)return0; //通道不能大于7for(i=0;i<16;i++){ //為轉(zhuǎn)換準(zhǔn)確,轉(zhuǎn)換16次rADCCON|=0x1;//啟動(dòng)A/D轉(zhuǎn)換rADCCON=rADCCON&0xffc7|(ch<<3); while(rADCCON&0x1); //防止第一個(gè)標(biāo)志出錯(cuò) while(!(rADCCON&0x8000));//防止第二個(gè)標(biāo)志出錯(cuò) val+=(rADCDAT0&0x03ff); Delay(10);}return(val>>4);//為轉(zhuǎn)換準(zhǔn)確,除以16取均值}voidAD_Init(void){rADCDLY=(0x100); //ADCStartorIntervalDelayrADCTSC=0;//設(shè)置成為ADC模式rADCCON=(1<<14)|(49<<6)|(ch<<3)|(0<<2)|(0<<1)|(0);//設(shè)置ADC控制存放器}注:rADCCON,這種宏形式,在Startup2410/INC/2410addr.h中已定義!詳細(xì)具體的應(yīng)用,請(qǐng)參見HARDWARE\ADS\實(shí)驗(yàn)九目錄下的AD.mcp工程文件。請(qǐng)?jiān)敿?xì)閱讀代碼注釋。實(shí)驗(yàn)步驟本實(shí)驗(yàn)使用實(shí)驗(yàn)教學(xué)系統(tǒng)的CPU板,串口、AD通道選擇開關(guān)、LCD單元。在進(jìn)展本實(shí)驗(yàn)時(shí),音頻的左右聲道開關(guān)、觸摸屏中斷選擇開關(guān)等均應(yīng)處在關(guān)閉狀態(tài)。在PC機(jī)并口和實(shí)驗(yàn)箱的CPU板上的JTAG接口之間,連接仿真調(diào)試電纜。使用串口線連接PC機(jī)串口1和實(shí)驗(yàn)箱CPU板的串口,使用直連線連接底板串口2和PC機(jī)上的串口2之間的電纜。檢查連接是否可靠,可靠后,接入電源線,系統(tǒng)上電。撥碼開關(guān)SW5為選中的A/D轉(zhuǎn)換的通道,值得注意的是本實(shí)驗(yàn)系統(tǒng)八個(gè)通道可以同時(shí)采集一個(gè)信號(hào)源。實(shí)驗(yàn)時(shí)要選中采集的通道號(hào),即對(duì)應(yīng)的SW5開關(guān)撥到ON狀態(tài)。例如SW3的1撥到ON狀態(tài),說明用AD轉(zhuǎn)換器的通道1采集,如果,8個(gè)通道全部選擇為ON,則表示用8個(gè)通道采集。本實(shí)驗(yàn)程序使用通道1采集數(shù)據(jù),所以,SW5的1應(yīng)該撥到ON狀態(tài)。要給ADIN一個(gè)輸入信號(hào),可以是底板上的SQUARE信號(hào)和SINE信號(hào),也可是外部信號(hào),但是必須注意,接外部電壓信號(hào)時(shí),要共地,以及信號(hào)的電壓范圍為0—2.5V,切記?。?!翻開ADS1.2開發(fā)環(huán)境,從里面翻開\實(shí)驗(yàn)程序\HARDWARE\ADS\實(shí)驗(yàn)九\AD.mcp工程文件,進(jìn)展編譯。編譯通過后,進(jìn)入ADS1.2調(diào)試界面,加載AD_Data\Debug中的映象文件程序映像AD.axf。在ADS調(diào)試環(huán)境下,全速運(yùn)行映象文件。翻開LCD電源開關(guān),檢查SW3上選擇的是通道幾。確認(rèn)后,觀察LCD上1通道當(dāng)前采集的情況。由于液晶的顯示速度比波型慢許多,所以要暫停程序才會(huì)看到比擬清楚的波形。由于信號(hào)源輸出后,電壓經(jīng)過縮放和偏置處理。使得的ARMCPU板所采集到的電壓值的變化范圍缺乏0—2.5V,故而采集到的數(shù)字值,不能滿程。但這些不會(huì)影響實(shí)驗(yàn)原理的顯示。分析理解程序運(yùn)行并在LCD屏幕上顯示〔3分〕分析在屏幕中顯示文字和圖形,〔0.5分〕理解在超級(jí)終端上顯示采集的數(shù)據(jù)?!?.5分〕分析了解ADC初始化?!?.5分〕分析了解ADC過程?!?.5分〕如何在LCD上面顯示AD轉(zhuǎn)換后的波形?!?分〕周期長(zhǎng)一些,幅度大一些。鍵盤接口和七段數(shù)碼管的控制實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)4X4鍵盤的與CPU的接口原理掌握鍵盤芯片HD7279的使用,及8位數(shù)碼管的顯示方法;實(shí)驗(yàn)內(nèi)容通過4X4按鍵完成在數(shù)碼管上的各種顯示功能,以及LCD上顯示。實(shí)驗(yàn)設(shè)備EL-ARM-830+教學(xué)實(shí)驗(yàn)箱,PC機(jī),仿真調(diào)試電纜。PC操作系統(tǒng)WINXP,ADS1.2集成開發(fā)環(huán)境,仿真調(diào)試驅(qū)動(dòng)程序。實(shí)驗(yàn)原理鍵盤和7段數(shù)碼管的控制實(shí)驗(yàn),是通過鍵盤的控制芯片HD7279A來完成的。它的+信號(hào)線及控制線連接到S3C2410上,驅(qū)動(dòng)線直接連到8位共陰的7段數(shù)碼管上。由于其芯片的接口電壓是5V的,而S3C2410的接口電壓是3.3V,所以,HD7279AHD7279是一片具有串行接口的可同時(shí)驅(qū)動(dòng)8位共陰式數(shù)碼管或獨(dú)立的LED的智能顯示驅(qū)動(dòng)芯片。該芯片同時(shí)還可連接多達(dá)64鍵的鍵盤矩陣,單片即可完成顯示鍵盤接口的全部功能。內(nèi)部含有譯碼器可直接承受BCD碼或16進(jìn)制碼并同時(shí)具有兩種譯碼方式。此外還具有多種控制指令如消隱、閃爍、左移、右移、段尋址等,具有片選信號(hào)可方便地實(shí)現(xiàn)多于8位的顯示或多于64鍵的鍵盤接口。HD7279在與S3C2410接口中,它使用了4根接口線。片選信號(hào)#CS〔低電平有效〕,時(shí)鐘信號(hào)CLK,數(shù)據(jù)收發(fā)信號(hào)DATA,中斷信號(hào)#KEY〔低電平送出〕,EL-ARM-830+實(shí)驗(yàn)箱與其的接口中,使用了三個(gè)通用I/O接口,和一個(gè)外部中斷,實(shí)現(xiàn)了與HD7279A的連接,S3C2410的外部中斷接HD7279的中斷#KEY,三個(gè)I/O口分別與HD7279A的其他控制、數(shù)據(jù)信號(hào)線相連。HD7279的其它管腳分別接4X4按鍵和8位數(shù)碼管。當(dāng)程序運(yùn)行時(shí),按下按鍵,平時(shí)為高電平的HD7279A的#KEY就會(huì)產(chǎn)生一個(gè)低電平,送給S3C2410的外部中斷5請(qǐng)求腳,在CPU中斷請(qǐng)求位翻開的狀態(tài)下,CPU會(huì)立即響應(yīng)外部中斷5的請(qǐng)求,PC指針就跳入中斷異常向量地址處,進(jìn)而跳入中斷服務(wù)子程序中,由于外部中斷4/5/6/7使用同一個(gè)中斷控制器,所以,還必須判斷一個(gè)狀態(tài)存放器,判斷是否是外部中斷5的中斷請(qǐng)求,當(dāng)判斷出是外部中斷5的中斷請(qǐng)求,則程序繼續(xù)執(zhí)行,CPU這時(shí),通過發(fā)送#CS片選信號(hào)選中HD7279A,再發(fā)送時(shí)鐘CLK信號(hào)和通過DATA線發(fā)送控制指令信號(hào)給HD7279A,HD7279A得到CPU發(fā)送的命令后,識(shí)別出該命令,然后,掃描按鍵,把得到鍵值回送給CPU,同時(shí),在8位數(shù)碼管上顯示相關(guān)的指令內(nèi)容,CPU在得到按鍵后,有時(shí),程序還會(huì)給此鍵值一定的意義,然后再通過識(shí)別此按鍵的意義,進(jìn)而進(jìn)展相應(yīng)的程序處理。要進(jìn)一步開發(fā)顯示功能,請(qǐng)參見關(guān)于HD7279芯片及相應(yīng)的編程資料HD7279A.PDF的文檔,其中有詳細(xì)、完備的編程資料。在ADS調(diào)試環(huán)境下全速運(yùn)行映象文件。按下任意鍵值,觀察數(shù)碼管的顯示。說明:“0”“1”“2”“4”“9”“A〞鍵表示數(shù)碼管循環(huán)左移。其他按鍵在最右兩個(gè)數(shù)碼管上顯示鍵值。根據(jù)HD7279A.PDF文檔可以進(jìn)一步開發(fā)具體的相應(yīng)的程序。詳細(xì)具體的應(yīng)用,請(qǐng)參見Key_Led.mcp工程文件。請(qǐng)?jiān)敿?xì)閱讀代碼注釋。#include"..\INC\config.h"voidMain(){ charp; Target_Init();//目標(biāo)初始化 while(1) { switch(key_number) { case0: send_byte(cmd_test); //測(cè)試鍵 break;case1:for(p=0;p<8;p++)//右移8位{ send_byte(0xA0); send_byte(0xC8+7); send_byte(p);long_delay();Delay(7000);} break; case2: for(p=0;p<8;p++)//循環(huán)右移{ send_byte(0xA0); send_byte(0xC8+7); send_byte(p);

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論