版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、上冊配合 nSP十六位單片機(jī)實驗箱使用科技大學(xué)計劃編著科 技 大 學(xué) 計 劃 技 術(shù) 資 料前言為了讓老師和同學(xué)更好地學(xué)習(xí) SPCE061A 單片機(jī)科技公司設(shè)計了 nSP十六位單片機(jī)實驗箱,并設(shè)計了基于這個實驗箱的 48 個實驗,這些實驗基本上用到了 SPCE061A 的全部硬件功能模塊,每個實驗都以16 位單片機(jī)應(yīng)用基礎(chǔ)書為理論基礎(chǔ)。本書主要有四大部分:第一章基礎(chǔ)實驗。這章主要是基于 SPCE061A 硬件設(shè)計的 21 個實驗,針對 SPCE061A 的各個硬件模塊。這些實驗是為了讓老師或者同學(xué)掌握 SPCE061A 的硬件結(jié)構(gòu)、硬件模塊、工作原理和簡單的編程方法。第二章語音實驗。這章是各個
2、語音算法的不同實驗,每一個實驗針對一種語音算法或者不同語音算法混合使用的方法,具有代表性。設(shè)計這些實驗的目的是讓老師或者同學(xué)學(xué)會音算法的使用方法。第三章分立模組實驗。這部分是基于 nSP十六位單片機(jī)實驗箱的一些分立模組而設(shè)計的實驗,從液晶顯示到 USB 通訊到外部SPCE061A 擴(kuò)展一些常用功能器件的方法。器的擴(kuò)展,選用這些實驗是為了讓老師或者同學(xué)學(xué)會第四章綜合實驗,綜合實驗里一共設(shè)計了 12 個實驗,涉及了從簡單的幾個模塊的實驗到復(fù)雜的實現(xiàn)一個完整功能的實驗,比如電壓測量表,筆等,目的是讓老師或者同學(xué)從整體上掌握利用SPCE061A 開發(fā)設(shè)計的過程,并學(xué)會 SPCE061A 單片機(jī)比較復(fù)雜
3、的編程方法。全書的實驗由淺入深,由部分到整體,涉及了從基本結(jié)構(gòu)到模塊再到應(yīng)用的全部實驗,老師或者同學(xué)按照實驗順序從基本的編程到功能實現(xiàn)的編程再到復(fù)雜的編程,一方面可以很好的學(xué)習(xí)和掌握單片機(jī)的基本知識,一方面可以很容易的應(yīng)用單片機(jī)進(jìn)行設(shè)計,為以后的課程設(shè)計、畢業(yè)設(shè)計或者工作中的開發(fā)設(shè)計奠定了良好的基礎(chǔ)。本書涉及的全部范例代碼在 IDE參考。的安裝路徑下都可以找到。老師和同學(xué)在實驗過程中可以在編寫過程中難免會有錯誤紕漏,請廣大讀者朋友批評指正??萍即髮W(xué)計劃2005.8.19目錄前言2目錄3第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗1實驗一實驗二實驗三實驗四實驗五實驗六實驗七實驗八實驗九實驗十熟悉 n
4、SP IDE 集成開發(fā)環(huán)境下匯編語言程序的編寫1熟悉 nSP IDE 集成開發(fā)環(huán)境下 C 語言程序的編寫12使用匯編語言實現(xiàn)A 口的輸出15使用 C 語言實現(xiàn) A 口的輸出19使用匯編語言實現(xiàn)A 口作為輸、B 口作為輸出口22使用 C 語言實現(xiàn) A 口作為輸、B 口作為輸出口27定時器 Timer A/B30系統(tǒng)時鐘33FIQ 中斷36IRQ0/IRQ1/IRQ2 中斷41實驗十一實驗十二實驗十三實驗十四實驗十五實驗十六實驗十七實驗十八實驗十九實驗二十IRQ4 中斷44IRQ5 中斷48IRQ6 中斷51外部中斷EXT1、EXT254鍵喚醒58UART63A/D 轉(zhuǎn)換68雙通道D/A73一路輸
5、入的76片內(nèi) 2K SRAM 讀寫79實驗二十一 32K FLASH 讀寫82第 2 章 語音實驗88實驗一實驗二實驗三實驗四實驗五實驗六實驗七SACM_A2000 自動 SACM_A2000 手動 SACM_S480 自動SACM_S480 手動88107113120SACM_A2000 與 SACM_S480 混合127SACM_DVR135SACM_MS01144第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗第1章SPCE061A 基礎(chǔ)應(yīng)用實驗實驗一熟悉 nSP IDE 集成開發(fā)環(huán)境下匯編語言程序的編寫【實驗?zāi)康摹?.2.3.熟悉 SPCE061A 單片機(jī)常用的匯編指令;學(xué)會使用 SPCE06
6、1A 單片機(jī)匯編語言以及偽指令構(gòu)造匯編程序;掌握 nSP IDE 集成開發(fā)環(huán)境的一般使用方法?!緦嶒炘O(shè)備】1.2.裝有Windows 系統(tǒng)和nSP IDE 集成開發(fā)環(huán)境的PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個。本實驗用到的實驗箱硬件模塊為:SPCE061A及周邊電路模塊(包含 32 個 I/O 口)?!緦嶒炓蟆?.編程要求:編寫一個匯編語言程序。2.3.實現(xiàn)功能:從 1 到 100 進(jìn)行累加,并把計算結(jié)果保存在Sum單元里。實驗現(xiàn)象:實驗過程中,單步運行時,可通過 IDE 的調(diào)試工具寄存器觀察窗口(Register Window)觀察通用寄存器的變化,通過變量觀察窗口(Toggle Wa
7、tch)觀察變量 Sum 的變化;累加結(jié)束后保存累加結(jié)果:通過變量觀察窗口(Toggle Watch)可以觀察到變量 Sum 的值為 5050(十六進(jìn)制表示為 0 x13BA)。【實驗原理】SPCE061A 的匯編指令按其功能主要有數(shù)據(jù)傳送指令、算術(shù)指令、邏輯指令、轉(zhuǎn)移指令和控制指令。在程序運行中主要用到 r1r4 四個通用寄存器和 BP(r5)、SP、PC、SR 四個特殊功能寄存器。其中 r1r4一般作為目標(biāo)寄存器或源寄存器,參與數(shù)據(jù)傳輸或算術(shù)邏輯運算?!境绦蛄鞒獭砍跏蓟拇嫫?r2 作為累加器,初始值為 0;寄存器 r1 為加數(shù),初始值為 1。初始化操作完成后即進(jìn)入累加循環(huán);在累加循環(huán)當(dāng)中
8、,累加器的數(shù)值加上加數(shù),并保存在累加器當(dāng)中,加數(shù)自加 1;當(dāng)加數(shù)加到了 100,退出累加循環(huán),把 r2 累加的結(jié)果送到Sum單元中。程序流如圖 1-1 所示。1開始加數(shù)自加1加數(shù)是否大于100?Y清看門狗圖 1-1 程序流【實驗步驟】鑒于本實驗為本書的第一個實驗,所以在此介紹一些有關(guān) unS將不再重述。E 操作的步驟;在之后的實驗中,1.安裝 IDE:雙擊安裝如下圖標(biāo),開始安裝 IDE 集成開發(fā)環(huán)境,按照默認(rèn)選項安裝好 IDE。兩點說明:安裝好 IDE 后,在 C 盤的 Program Files 文件夾會出現(xiàn)一個 Sunplus 文件夾,打開Sunplus 文件夾有如圖 1-2 所示的文件。
9、2變量累加N初始化寄存器、初始化變量第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗圖 1-2 安裝好 IDE 后出現(xiàn)在 Sunplus 的文件夾打開 unSE Common 文件夾,包含三個文件夾,如圖 1-3,其中本書所有的范例程序、驅(qū)動程序、語音資源等用戶常用資源都在 Exle 文件夾里的 SPCE061A 文件夾包含,如圖1-4。圖 1-3 打開 unSE Common 文件夾圖 1-4 SPCE061A 包含的文件夾注意:如果按照這種默認(rèn)安裝方法,書中所有的“IDE 的安裝路徑”指是 C:Program FilenplusunSPIDE CommonExle 路徑。2.打開 IDE 環(huán)境。打
10、開后的界面如圖 1-5。3圖 1-5 打開 IDE 后的界面3.建立一個新的工程按前面步驟打開 IDE 環(huán)境后,建立一個新的工程,工程名為:ex01_asm_ADD1-100,建立方法如下:在 File 下拉菜單里點擊 New,如圖 1-6。圖 1-6 新建工程或者文件點擊 New 后會出現(xiàn)下面一個框,在框的 File 編輯框內(nèi)寫上工程名稱 ex01_asm_ADD1-100,在 location 編輯框選擇工程路徑。如圖 1-7。4第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗圖 1-7 新建工程框點擊“OK”,就會看到圖 1-8 所示的界面,這個界面為創(chuàng)建新工程后的的界面。圖 1-8 新工程界面
11、4.在該工程的源文件夾(Source Files)下建立一個新的匯編語言文件(后綴為:.asm)。按照圖1-6同樣的方法打開建立新文件框,如圖 1-9。5圖 1-9 新文件建立框文件類型選擇為“SE Asm File”, 即匯編文件;在 File 框內(nèi)填寫新建文件名,這里命名為“main”,點擊“OK”,完成新建“main.asm”文件操作。建立好 main.asm 文件后,用戶可以在 FileView 中雙擊 main.asm,以打開該文件;打開后可以看到如圖1-10 所示界面。6第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗圖 1-10 新文件界面5.在圖 1-10 所示的 main.asm 文
12、件中按照程序流編寫匯編代碼。6.的“Project-Select Body”,或者直接點擊圖標(biāo),打開 Select Body編寫完代碼后,選擇框;按如圖 1-11 選擇 Body。Body Name 選擇 SPCE060A_061A(以后的全部實驗中都這樣選擇)。圖 1-11仿真 Body 選擇7.在 IDE 環(huán)境中按圖1-12 所示 Rebuild all,按圖 1-13 橢圓框所示選擇調(diào)試圖標(biāo)。7圖 1-12 Rebuild All圖 1-13 選擇調(diào)試圖標(biāo)8.如圖 1-14,把實驗箱區(qū)的 S19 選擇開關(guān)中 ICE 撥到“ON”位置,使實驗箱當(dāng)中的 SPCE061A處于調(diào)試、狀態(tài),以便將
13、實驗程序到當(dāng)中。其他都撥到“OFF”位置。區(qū)中 J10 接 Probe,打開區(qū)電源開關(guān)ER。8第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗312圖 1-14 實驗箱設(shè)置及連接9.()(或者按 F8 鍵),這時候 PC 運行指針指向 main 函數(shù)的第一條語句,如圖1-15。圖 1-15 程序后的 IDE 集成開發(fā)環(huán)境10. 點擊圖標(biāo)(或者按 Alt+C 鍵)打開變量觀察窗口,點擊圖標(biāo)(或者按 Alt+3 鍵)打開寄存器觀察窗口,點擊圖標(biāo)(或者按 A鍵)打開 Toggle Disassembly 窗口,點擊圖標(biāo)(或者按 Alt+2 鍵)打開 Memory 觀察窗口;所有這些窗口打開后如圖 1-16。
14、9編輯窗口Workplace窗口Toggle Disassembly窗口Memory觀察窗口變量觀察窗口寄存器觀察窗口圖 1-16 打開各個觀察窗口11. 在變量觀察窗口的 name 項輸入變量 Sum;單步運行()(或者按 F11 鍵),如圖 1-17;通過Toggle Disassembly 窗口觀察程序的運行情況,通過變量觀察窗口的 value 項觀察 Sum 的值,通過寄存器觀察窗口觀察寄存器的變化情況;另外,變量觀察窗口的 Address 項顯示的是分配給變量的地址空間。圖 1-17 單步運行10第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗12. 累加結(jié)束時,檢查通過變量觀察窗口的 va
15、lue 項觀察到 Sum 的值是否為 5050(十六進(jìn)制表示為0 x13BA)。如圖1-18。圖 1-18 程序累加結(jié)束后界面注:1)如果全速運行,點擊圖標(biāo)或者按 F5 鍵。2)圖標(biāo)或者按 Ctrl+Shift+F5 鍵。運行過程中如果沒有看清楚,需要重新運行,點擊3)需要在程序中添加斷點,先選中想添加斷點的語句,點擊或者按 F9 鍵。相反,去掉斷點按或者按 Shift +F9 鍵?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦?。IDE 的安裝路徑SPCE061AexaseExaex01_asm_ADD1-100??萍即髮W(xué)計劃()專區(qū)可以到相關(guān)資料?!揪毩?xí)】在 nSP IDE 下用匯編語言編寫一個
16、使用冒泡法排序的程序,排列順序為從小到大的順序。.iramarray: .dw 5,89,40,12,55,32,18,46,77,2111實驗二熟悉 nSP IDE 集成開發(fā)環(huán)境下 C 語言程序的編寫【實驗?zāi)康摹?.2.熟悉 nSP IDE 集成開發(fā)環(huán)境的使用方法;掌握用 SPCE061A 單片機(jī) C 語言編寫應(yīng)用程序的方法?!緦嶒炘O(shè)備】1.2.裝有Windows 系統(tǒng)和nSP IDE 集成開發(fā)環(huán)境的PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個。本實驗用到的實驗箱硬件模塊為:SPCE061A及周邊電路模塊(包含 32 個 I/O 口)?!緦嶒炓蟆?.編程要求:編寫一個 C 語言程序。2.3.
17、實現(xiàn)功能:從 1 到 100 進(jìn)行累加,并把計算結(jié)果保存在變量 Sum 中;實驗現(xiàn)象:打開變量觀察窗口觀察變量 Sum 的變化,累加結(jié)束時變量 Sum 為 5050(16 進(jìn)制表示為 0 x13BA)。【實驗原理】nSP的指令系統(tǒng)算術(shù)邏輯操作符與 ANSI-C 算符大同小異,如表1-1。表 1-1 nSP指令的算術(shù)邏輯操作符nSP支持 ANSI-C 中使用的基本數(shù)據(jù)類型,如表 1-2。12算術(shù)邏輯操作符作用+、-、*、/、%加、減、乘、除、求余運算&、|邏輯與、或&、|、按位與、或、異或、右移、=、=、= = 、!=大于、大于等于、小于、小于等于、等于、不等于=賦值運算符?:條件運算符,逗號運
18、算符*、&指針運算符.分量運算符sizeof求字節(jié)數(shù)運算符 下標(biāo)運算符第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗表 1-2 nSP對 ANSI-C 中基本數(shù)據(jù)類型的支持【程序流】主程序流如圖 1-19 所示。先定義一個累加值變量 Sum 和一個加數(shù)變量 i,初始化 Sum=0,i=1,進(jìn)入累加循環(huán);在累加循環(huán)中,Sum 和 i 相加,并把相加結(jié)果保存在 Sum 中,i 自加 1,判斷 i 是否大于100,如果沒有則繼續(xù)累加,如果大于,則退出累加循環(huán),進(jìn)入主程序循環(huán),執(zhí)行清看門片機(jī)復(fù)位。作,防止單開始加數(shù)自加1加數(shù)是否大于100?Y清看門狗圖 1-19 主程序流【實驗步驟】1.2.和實驗一同樣的方
19、法,將 nSP IDE 環(huán)境打開后,建立一個新工程 ex02_c_ADD1-100。在該工程的源文件夾(Source Files)下建立一個新的 C 語言文件,命名為 main。建立方法如圖13變量累加N初始化加數(shù)變量和累加變量數(shù)據(jù)類型數(shù)據(jù)長度(位數(shù))值域char16-32 76832 767short16-32 76832 76716-32 76832 767long32-2 147 483 6482 147 483 647unsigned char16065 535unsigned short16065 535unsigned16065 535unsigned long3204 294 9
20、67 295float32以IEEE 格式表示的 32 位浮點數(shù)double32以IEEE 格式表示的 32 位浮點數(shù)1-20,注意橢圓框內(nèi)和實驗立匯編語言文件的不同。圖 1-20 建立新的c 語言文件3.4.5.6.在 main.c 文件里編寫 C 語言代碼。Rebuild All。選擇調(diào)試模式(ICE)。、單步運行。打開變量觀察窗口觀察變量 Sum 的變化,觀察累加結(jié)束時 Sum 是否為 5050(16 進(jìn)制表示為0 x13BA)?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦颉DE 的安裝路徑SPCE061AexaseExa ex02_c_ADD1-100。科技大學(xué)計劃()專區(qū)可以到相關(guān)資
21、料?!揪毩?xí)】在 nSP IDE 下用 C 語言編寫一個使用冒泡法排序的程序,排列順序為從小到大的順序。Array = 5,89,40,12,55,32,18,46,77,2114第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗實驗三使用匯編語言實現(xiàn) A 口的輸出【實驗?zāi)康摹?.2.掌握 SPCE061A 單片機(jī)匯編語言的編程方法;掌握 IOA 端口作為普通輸出口時的使用方法。【實驗設(shè)備】1.裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)境的 PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個。2. 本實驗用到的實驗箱硬件模塊為:SPCE061A二極管電路模塊。及周邊電路模塊(包含 32 個 I/O
22、口),發(fā)光【實驗要求】1.2.3.編程要求:編寫一個匯編語言程序。實現(xiàn)功能:通過 IOA 口輸出的數(shù)據(jù)控制 8 個發(fā)光二極管的點亮與熄滅。實驗現(xiàn)象:8 個發(fā)光二極管動態(tài)點亮和熄滅,并且循環(huán)顯示,點亮與熄滅狀態(tài)順序如下表 1-3所示。其中,“”表示二極管是點亮狀態(tài),“”表示二極管是熄滅狀態(tài)。表中 D4D11 為實驗箱上發(fā)光二極管電路模塊中從左到右的 8 個發(fā)光二極管。表 1-38 個發(fā)光二極管狀態(tài)15序號D4D5D6D7D8D9D10D110123456789254255256257【實驗原理】1.I/O 口的設(shè)置SPCE061A 有 32 個可編程 I/O 端口,分為兩組:IOA015 口和
23、IOB015 口,其中每一個端口都可以被單獨設(shè)置為輸入或者輸出口。SPCE061A 的I/O 口的輸入輸出方式是通過方向控制向量 Dir、屬性向量 Attrib 和數(shù)據(jù)向量 Data 三個向量組合控制的。I/O 口的組合控制設(shè)置如表 1-4 所示。表 1-4 I/O 端口的組合控制設(shè)置注:端口位默認(rèn)為帶下拉電阻的輸入管腳。按照上面的組合控制設(shè)置,當(dāng) IOA 的低八位設(shè)置為同相低電平輸出口時,Dir、Attrib 和 Data 三個向量的設(shè)置如下表 1-5 所示。表 1-5 IOA 的低 8 位設(shè)置為同相低電平輸在 SPCE061A 的 I/O 口被設(shè)置為輸出口時,當(dāng)Data 寄存器中的某一位寫
24、入“1”時,該位所對應(yīng)的端口輸出2.;寫入“0”時,輸出低電平。發(fā)光二極管的點亮與熄滅如下圖 1-21 實驗箱發(fā)光二極管的電路原理圖。當(dāng) IO 端輸出點亮;輸出低電平時,發(fā)光二極管截止,即二極管熄滅。時,發(fā)光二極管導(dǎo)通,即二極管D11R1IO220圖 1-21 發(fā)光二極管電路原理圖【硬件連接】如圖 1-22 硬件連接圖所示,IOA 的低八位 IOA0IOA7 分別依次接 8 個發(fā)光二極管D11D4,即用 8pin排線連接實驗箱的 J26 和 J16,注意這里的連接順序為 J26 的第 0 號引腳連接 J16 的第 7 號引腳,不要接反了。(在以后的描述中如果出現(xiàn)類似“IOA0IOA7 分別依次
25、接 8 個發(fā)光二極管 D11D4”,就說明 IOA0接發(fā)光二極管 D11;如果沒有特別說明,就是正常的連接方式,即 J26 的第 0 號引針接 J16 的第 0 號引針;在連接過程中敬請讀者注意。另外,本書上出現(xiàn)的所有的標(biāo)號類似 J26、J16 等都是基于本的實驗箱,如果讀者用的是其他版本的實驗箱,以電路連接圖為準(zhǔn)。)版本 V3.0 版16向量b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0Dir0000000011111111Attrib0000000011111111Data0000000000000000DirAttribData功能功能描述000下拉帶下拉電
26、阻的輸入方式001上拉帶上拉電阻的輸入方式010懸浮懸浮式輸入方式011懸浮懸浮式輸入方式10X反相輸出Data 數(shù)據(jù)位反相輸出方式11X同相輸出Data 數(shù)據(jù)位同相輸出方式第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗D11IOA0D10IOA1D9 IOA2D8 IOA3D7IOA4D6IOA5D5IOA6D4 IOA7圖 1-22 硬件連接圖【程序流】根據(jù)實驗要求 8 個發(fā)光二極管的顯示狀態(tài),程序的主循環(huán)當(dāng)中,輸出到 IOA 口低八位的數(shù)據(jù)每次輸出顯示后要加 1;輸出顯示的數(shù)據(jù)可用變量保存,也可在程序運行當(dāng)中通過P_IOA_Buffer(0 x7001)寄存器得到上次輸出數(shù)值。主程序流如圖 1
27、-23 所示:開始圖 1-23 主程序流注意:為了避免因為延時時間長導(dǎo)致看門狗復(fù)位,延時子程序里需要清看門作。選擇合適的延時時間,本實驗中選擇大約 0.2s 的延時。因為當(dāng)延時時間太短時,8 個發(fā)光二極管的狀態(tài)變化太快,還沒來及看一個狀態(tài),就已經(jīng)變化到下一個狀態(tài),不便觀察;而當(dāng)延時時間太長時,發(fā)光二極管停留在一個狀態(tài)很長時間,也不便于觀察 8 個發(fā)光二極管的狀態(tài)變化,所以要選擇合適的延時時間。【實驗步驟】1.按照流編寫一個匯編語言程序。17IOA口低八位數(shù)據(jù)加1延時初始化A口為同相低電平輸出口 2.3.利用和前面實驗相同的方法 Rebuild All。如圖 1-24 所示,區(qū)的 S19 選擇開
28、關(guān)中 ICE 撥到“ON”位置,其他都撥到“OFF”位置。區(qū)和區(qū)中 JP4 和 JP7 的跳線全部斷開,區(qū) J16 和 J26 按照圖 1-22 所示利用 8pin 排線連接,即把 IOA07 依次連接 8 個發(fā)光二極管 D11D4,區(qū)中 J10 接 Probe。把所有排線、跳線和開關(guān)都連接好之后,打開區(qū)電源開關(guān)ER。1672543圖 1-24 實驗箱硬件連接和其他設(shè)置4.在 IDE 環(huán)境中選擇調(diào)試圖標(biāo),注意 Body 選擇和實驗一相同。5.1-24 區(qū)發(fā)光二極管 D4D11 的變化,檢查與實驗要求是否、運行,觀察圖?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦?。IDE 的安裝路徑SPCE061
29、AexaseExaex03_asm_IOA_OUT??萍即髮W(xué)計劃()專區(qū)可以到相關(guān)資料?!揪毩?xí)】利用匯編語言編寫程序,實現(xiàn)任選 8 個 IOB 口輸出控制 8 個發(fā)光二極管的點亮與熄滅。18第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗實驗四使用 C 語言實現(xiàn) A 口的輸出【實驗?zāi)康摹?.2.掌握 SPCE061A 單片機(jī) C 語言的編程方法;掌握 IOA 口作為普通輸出口時的使用方法。【實驗設(shè)備】1. 裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)境的 PC 機(jī)一臺,nSP 十六位單片機(jī)實驗箱一個。2. 本實驗用到的實驗箱硬件模塊為:SPCE061A極管電路模塊。及周邊電路模塊(包含 3
30、2 個 I/O 口),發(fā)光二【實驗要求】1.2.3.編程要求:編寫一個 C 語言程序。實現(xiàn)功能:通過 IOA 口輸出的數(shù)據(jù)控制 8 個發(fā)光二極管的點亮與熄滅。實驗現(xiàn)象:8 個發(fā)光二極管動態(tài)點亮和熄滅,并且循環(huán)顯示,點亮與熄滅狀態(tài)順序如下表 1-6所示。其中, “”表示二極管是點亮狀態(tài),“”表示二極管是熄滅狀態(tài)。表中的為實驗箱上發(fā)光二極管電路模塊中從左到右的 8 個發(fā)光二極管。D4D11表 1-68 個發(fā)光二極管狀態(tài)【實驗原理】SPCE061A 的 I/O 口工作原理及發(fā)光二極管點亮與熄滅原理參見本章實驗三。19序號D4D5D6D7D8D9D10D110123456789254255256257
31、SPCE061A 單片機(jī) C 語言編程設(shè)置端口的操作是通過指針來實現(xiàn)的。nSP IDE 集成開發(fā)環(huán)境編譯器所認(rèn)可的指針是 16 位的。比如要設(shè)置 IOA 口為同相低電平輸出口時,可以通過下面幾句去實現(xiàn)。#define P_IOA_Data(volatile unsigned*)0 x7000#define P_IOA_Dir(volatile unsigned*)0 x7002#define P_IOA_Attrib(volatile unsigned*)0 x7003*P_IOA_Dir = 0 x f;*P_IOA_Attrib = 0 x f;*P_IOA_Data = 0 x0000;
32、其中,前面三條語句是定義指向 0 x7000(IOA 數(shù)據(jù)向量單元)、0 x7002(IOA 方向控制向量單元)和 0 x7003(IOA 屬性向量單元)這三個向量單元的指針;后面三條語句用來給前面的三個向量單元送數(shù)據(jù)。比如,#define P_IOA_Data(volatile unsigned*)0 x7000 和*P_IOA_Data = 0 x0000 兩條語句表示P_IOA_Data 指向 0 x7000 這個地址單元,然后通過指針操作的方式把 0 x0000 這個數(shù)據(jù)送到 0 x7000 地址單元。【硬件連接】硬件連接圖如圖本章實驗三圖 1-22 硬件連接圖。同樣是 IOA 口的低
33、八位 IOA07 連接 8 個發(fā)光二極管 D11D4,即用 8pin 排線連接實驗箱的 J26 和 J16。注意連接順序和實驗三相同?!境绦蛄鳌扛鶕?jù)實驗要求的二極管狀態(tài),程序中 IOA 口低八位的數(shù)據(jù)每次顯示時要加 1。為便于觀察,程序中延時時間選擇大約 0.2s。程序流如圖 1-25 所示:開始圖 1-25 主程序流20清看門狗延時A口低八位數(shù)據(jù)加1初始化A口為同相低電平輸出口第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗【實驗步驟】1.2.3.4.5.6.新建一個工程 ex04_c_IOA_OUT。按照前面實驗同樣的方法編寫 C 語言程序。Rebuild All。按照和本章實驗三相同的方法進(jìn)行硬
34、件連接、跳線設(shè)置和開關(guān)選擇。在 IDE 集成開發(fā)環(huán)境下選擇調(diào)試圖標(biāo),、運行。觀察各個二極管亮滅狀態(tài)和寄存器狀態(tài),分析是否和實驗要求相同。【范例路徑】在以下路徑有可供大家參考的程序。IDE 的安裝路徑SPCE061AexaseExaex04_c_IOA_OUT??萍即髮W(xué)計劃()專區(qū)可以到相關(guān)資料?!揪毩?xí)】利用 C 語言編寫程序,實現(xiàn)任選 8 個 IOB 口輸出控制 8 個發(fā)光二極管的點亮與熄滅。21實驗五使用匯編語言實現(xiàn) A 口作為輸、B 口作為輸出口【實驗?zāi)康摹空莆绽脜R編語言來實現(xiàn) A 口作為輸、B 口作為輸出口的方法。【實驗設(shè)備】1.裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)
35、境的 PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個。本實驗用到的實驗箱硬件模塊為:SPCE061A及周邊電路模塊(包含 32 個 I/O 口),發(fā)光二極管電路模塊,高低電平發(fā)生按鍵電路模塊。2.【實驗要求】1.2.編程要求:編寫匯編語言程序。實現(xiàn)功能:IOA 低八位端口作為按鍵輸,IOB 低八位端口作為輸出口,控制 8 個發(fā)光二極管,實現(xiàn)鍵控 LED 燈(發(fā)光二極管)的顯示。實驗現(xiàn)象:不同的發(fā)光二極管點亮表示有不同的鍵按下。當(dāng)?shù)谝粋€按鍵按下時,第一個發(fā)光二極管點亮,第 i(1i8)個按鍵按下時,第 i(1i8)個發(fā)光二極管點亮。3.【實驗原理】1.I/O 口的設(shè)置SPCE061A 的I/O 口可
36、以被單獨定義為輸入或者輸出口,它們的輸入輸出方式是由方向控制向量 Dir、屬性向量 Attrib、數(shù)據(jù)向量 Data 的組合設(shè)置確定的,組合控制設(shè)置表如本章實驗三表 1-4。比如 IOA 口低八位被設(shè)置為帶下拉電阻的輸、IOB 口低八位被設(shè)置為同相低電平輸出口,設(shè)置如表 1-7。表 1-7 IOA07 為帶下拉電阻的輸、IOB07 為同相低電平輸出口SPCE061A 輸出的高低電平及發(fā)光二極管的點亮與熄滅原理在實驗三中有詳細(xì)說明,不再贅述。2.高低電平發(fā)生按鍵電路模塊工作原理實驗箱高低電平發(fā)生按鍵電路的原理圖如圖 1-26 所示。IO 端口設(shè)置為帶下拉電阻的輸,當(dāng)鍵按下時,在 IO 端口可檢測
37、到;不按時,IO 端就保持低電平。VCCS20IO22地址單元向量b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0P_IOA_DirDir0000000000000000P_IOA_AttribAttrib0000000000000000P_IOA_DataData0000000000000000P_IOB_DirDir0000000011111111P_IOB_AttribAttrib0000000011111111P_IOB_DataData0000000000000000第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗圖 1-26 高低電平發(fā)生按鍵電路模塊原理圖【硬件
38、連接】硬件連接圖如圖 1-27 所示。IOA07 連接 8 個按鍵 S20S27,IOB07 連接 8 個發(fā)光二極管 D4D11,即用 8pin 的排線分別連接 J18 與 J26、J16 與 J28,1*8 鍵盤左邊的選擇開關(guān) S28 撥到上方(即靠近實驗箱上S28字符的位置)。VCCS20D4 IOB0 IOA0 S21 IOA1S22 IOA2S23 IOA3S24 IOA4S25 IOA5S26 IOA6S27 IOA7D5 IOB1D6 IOB2D7 IOB3D8 IOB4D9 IOB5D10 IOB6D11 IOB7圖 1-27 硬件連接圖【程序流】1.主程序流初始化 I/O 口:
39、初始化 IOA 低八位為帶下拉電阻輸,IOB 低八位為同相低電平輸出口。進(jìn)入主程序循環(huán),調(diào)用鍵盤程序,取鍵值。判斷鍵值是否為 0,如果不為 0,把鍵值送到 IOB 口,控制點亮相應(yīng)的發(fā)光二極管,清看門狗;如果為零,直接清看門狗。主程序流如圖 1-28:23開始Y鍵值是否為0N清看門狗圖 1-28 主程序流2.鍵盤程序流鍵盤程序是利用延時的方法進(jìn)行消抖處理的:先IOA 口鍵值保存在寄存器,判斷讀回值是否為零,為零則表示沒有鍵按下,返回零;非零則延時大約 30ms 后再次鍵值是否相同,如果相同則返回鍵值,否則返回零。鍵盤程序流IOA 口鍵值,比較兩次的如圖1-29。24把鍵值送到IOB口的低八位控
40、制顯示調(diào)用鍵盤程序取鍵值初始化I/O口第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗開始Y輸入是否為零?NN兩次數(shù)據(jù)是相等?Y置返回鍵值為零返回鍵值圖 1-29 鍵盤程序流【實驗步驟】1.2.3.新建一個工程 ex05_asm_IOA_IN_IOB_OUT,編寫匯編程序。 Rebuild All。硬件連接和設(shè)置:如圖 1-30,區(qū)的 S19 選擇開關(guān)中 ICE 撥到“ON”位置,其他都撥到“OFF”位置;、區(qū) JP3、JP4、JP5、JP7、JP6 跳線中與 IOA07 及 IOB07 有關(guān)的全部斷開;按照圖 1-27硬件連接圖用排線連接區(qū) J26 與 J18 和區(qū)中J28 與 J16 接口電路,高
41、低電平發(fā)生按鍵左邊的S28 開關(guān)撥向上方(標(biāo) H 的一端),即讓鍵盤的公共端接到(VCC);區(qū) J10 連接 probe;打開區(qū)電源開關(guān)ER。25置有效返回鍵值再次IOA端口低八位輸入延時消除抖動IOA端口低八位輸入312897654圖 1-30 實驗箱硬件設(shè)置4.在 IDE 集成開發(fā)環(huán)境中選擇調(diào)試圖標(biāo),運行。5.按任意一個按鍵,觀察發(fā)光二極管,驗證是不是和實驗要求的現(xiàn)象?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦?。IDE 的安裝路徑SPCE061AexaseExaex05_asm_IOA_IN_IOB_OUT。科技大學(xué)計劃()專區(qū)可以到相關(guān)資料。【練習(xí)】使用匯編語言實現(xiàn) A 口作為輸出口、B
42、 口作為輸:選擇 A 口的任 8 位連接 8 個發(fā)光二極管,B口的任 8 位連接 8 個高低電平發(fā)生按鍵,和本實驗要求類似,即當(dāng)按不同鍵時要求不同的發(fā)光二極管點亮。26第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗實驗六使用 C 語言實現(xiàn) A 口作為輸、B 口作為輸出口【實驗?zāi)康摹空莆绽?C 語言來實現(xiàn) A 口作為輸、B 口作為輸出口的方法?!緦嶒炘O(shè)備】1.裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)境的 PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個。2.本實驗用到的實驗箱硬件模塊為:SPCE061A極管電路模塊,高低電平發(fā)生按鍵電路模塊。及周邊電路模塊(包含 32 個 I/O 口),發(fā)
43、光二【實驗要求】1.2.編程要求:編寫 C 語言程序。實現(xiàn)功能:IOA 口低八位接鍵盤,IOB 口低八位接 8 個發(fā)光二極管,按下按鍵,控制點亮對應(yīng)的發(fā)光二極管。實驗現(xiàn)象:不同的發(fā)光二極管點亮表示有不同的鍵按下。當(dāng)?shù)谝粋€按鍵按下時,第一個發(fā)光二極管點亮,第 i(1i8)個按鍵按下時,第(1i8)個發(fā)光二極管點亮。3.【實驗原理】SPCE061A I/O 口的工作原理、發(fā)光二極管點亮與熄滅原理、高低電平發(fā)生按鍵的工作原理、利用 C語言對 SPCE061A 進(jìn)行操作的原理詳見實驗三到實驗五?!居布B接】硬件連接圖如本章實驗五圖 1-27 所示。IOA07 連接 8 個按鍵 S20S27,1*8 鍵
44、盤左邊的選擇開關(guān)S28 撥到上方(即靠近實驗箱上S28字符的位置);IOB07 連接 8 個發(fā)光二極管 D4D11,即用 8pin的排線分別連接 J18 與 J26、J16 與 J28?!境绦蛄鳌?.主程序流和上一實驗相同,初始化 I/O 口:初始化 IOA 低八位為帶下拉電阻輸,IOB 低八位為同相低電平輸出口。進(jìn)入主程序循環(huán),調(diào)用鍵盤程序,取鍵值。判斷鍵值是否為 0,如果不為 0,把鍵值送到 IOB如圖 1-31 所示??冢刂泣c亮相應(yīng)的發(fā)光二極管,清看門狗;如果為零,直接清看門狗。主程序流27開始Y鍵值是否為0N清看門狗圖 1-31 主程序流2.鍵盤程序流鍵盤處理方法和上一實驗相同,利用
45、延時的方法進(jìn)行消抖處理的:先IOA 口鍵值保存在寄存器,判斷讀回值是否為零,為零則表示沒有鍵按下,返回零;非零則延時大約 30ms 后再次IOA 口鍵值,1-32。比較兩次的鍵值是否相同,如果相同則返回鍵值,否則返回零。鍵盤程序流如圖28把鍵值送到IOB口的低八位控制顯示調(diào)用鍵盤程序取鍵值初始化I/O口第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗開始Y輸入是否為零?NN兩次數(shù)據(jù)是相等?Y置返回鍵值為零返回鍵值圖 1-32 鍵盤程序流【實驗步驟】1.2.3.4.5.編寫 C 語言程序。 Rebuild All。按照和本章實驗五相同的方法連接硬件和進(jìn)行硬件設(shè)置。、運行。按任意按鍵,觀察發(fā)光二極管狀態(tài),
46、判斷是不是符合實驗要求的實驗現(xiàn)象?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦?。IDE 的安裝路徑SPCE061AexaseExaex06_c_IOA_IN_IOB_OUT??萍即髮W(xué)計劃()專區(qū)可以到相關(guān)資料?!揪毩?xí)】使用 C 語言實現(xiàn) A 口作為輸出口、B 口作為輸:選擇 A 口的任 8 位連接 8 個發(fā)光二極管,B 口的任 8 位連接 8 個高低電平發(fā)生按鍵,與實驗要求類似,當(dāng)按不同鍵時要求不同的發(fā)光二極管點亮。29置有效返回鍵值再次IOA端口低八位輸入延時消除抖動IOA端口低八位輸入實驗七定時器 Timer A/B【實驗?zāi)康摹?.2.3.通過實驗熟悉定時器 Timer A/B 的工作原理。
47、掌握預(yù)置數(shù)單元 P_TimerA/B_Data 和定時控制單元 P_TimerA/B_Ctrl 的設(shè)置方法掌握定時器 Timer A/B 的編程方法。【實驗設(shè)備】裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)境的 PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個,示波器一臺。1.2.本實驗用到的實驗箱硬件模塊為:SPCE061A二極管電路模塊。及周邊電路模塊(包含 32 個 I/O 口),發(fā)光【實驗要求】1.2.編程要求:編寫一個匯編語言程序。實現(xiàn)功能:設(shè)置不同的計數(shù)初值、不同的占空比和不同的時鐘源,IOB8 同時和一個發(fā)光二極管和示波器連接,用戶可以通過觀察二極管點亮的持續(xù)時間和熄滅持續(xù)
48、的時間,通過示波器觀察信號波形的占空比變化和頻率。實驗現(xiàn)象:計數(shù)初值不同、占空比不同、時鐘源不同,發(fā)光二極管的亮滅狀態(tài)變化就不同。3.【實驗原理】TimerA 和 TimerB 定時器啟動后,在預(yù)置數(shù)單元 P_TimerA_Data 或 P_TimerB_Data 內(nèi)置入一個計數(shù)初值 N 后,在所選的時鐘源頻率下開始向計數(shù)增加的方向計數(shù) N+1,N+2,EH,當(dāng)計數(shù)到FH后,再來一個計數(shù)時鐘則溢出到 0000H,這時的計數(shù)時間為(F-N)*1/(TimerA 或者 TimerB 的時鐘源頻率)。比如,當(dāng)啟動 TimerA 定時器后,TimerA 時鐘源頻率選擇為 1024Hz,計數(shù)初值設(shè)置為
49、0 xF7FF,則它的計數(shù)時間為(F-F7FF)*1/1024=2s。產(chǎn)生溢出時,一方面,如果已經(jīng)打開TimerA 或者TimerB 中斷,會產(chǎn)生中斷請求信號TA_TimeOut_或 TB_TimeOut_,被 CPU 響應(yīng)后執(zhí)行相應(yīng)的中斷服務(wù)程序。與此同時,計數(shù)初值 N 會被自動重新置入定時器/計數(shù)器內(nèi),并重復(fù)上述加計數(shù)的過程。另一方面,該溢出信號會作為脈寬調(diào)制輸出計數(shù)器的時鐘源輸入,使其輸出一個具有四位可調(diào)的脈寬調(diào)制占空比輸出信號 AO 或 BO,其中 IOB8、IOB9 分別為 A、B的輸出端。Timer的溢出頻率取決于時鐘源的選擇和計數(shù)初值的選擇,而的輸出頻率受Timer的溢出頻率的控
50、制:Timer的溢出信號經(jīng)一個4位計數(shù)器和一個4位半加器,并通過P_TimerA_Ctrl設(shè)置脈寬后,輸出的信號即為所以信號;Timer溢出一次,4位計數(shù)器計一次數(shù),當(dāng)計數(shù)器計滿十六次時輸出一個周期的信號,信號的頻率為Timer溢出頻率的1/16;比如Timer溢出的頻率為16Hz,則的頻率為1Hz。所以事實上可以歸結(jié)為信號的頻率取決于時鐘源的選擇和計數(shù)初值的選擇。信號的脈寬是通過 P_TimerA_Ctrl(700BH)或者 P_TimerB_Ctrl(700DH)單元單元來設(shè)置的。通過寫入 P_TimerA_Ctrl(700BH)的第 69 位可選擇設(shè)置 A入 P_TimerB_Ctrl(
51、700DH)單元的第 69 位,便可選擇設(shè)置 BO 輸出波形的脈寬占空比;同理,寫O 輸出波形的脈寬占空比。相同頻率不同的占空比的信號輸出控制二極管的亮滅,表現(xiàn)為點亮的時間和熄滅的時間各相同,表現(xiàn)在波形上30第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗為高、低電平持續(xù)的時間不同。如圖 1-33。占空比為 10/16占空比為 7/16圖 1-33 兩個不同占空比的波形【硬件連接】IOB8 同時連接一個發(fā)光二極管 D4(從左邊開始第一個發(fā)光二極管)和示波器的一個探頭,即用 8PIN排線將 J29 和 J16 相連,然后用示波器的 CH1 探頭檢測 J25 的第 0 引針,即 IOB8 的引針。硬件連接
52、圖如圖 1-34。D4IOB8D5IOB9D6 IOB10D7 IOB11D8IOB12D9IOB13D10IOB14D11IOB15圖 1-34 硬件連接圖【程序流】主程序流如圖 1-35,初始化 IOB8 為同相低電平輸出口,設(shè)置計數(shù)器初值和時鐘源頻率,然后程序進(jìn)入主循環(huán),在循環(huán)中進(jìn)行清看門作。IOB8 端口會輸出預(yù)置頻率和占空比的高低電平脈沖,并以此點亮、熄滅連接在 IOB8 上的發(fā)光二極管。31CH1示波器CH2IOB8開始清看門狗圖 1-35 主程序流【實驗步驟】1.2.3.4.5.根據(jù)程序流Rebuild All;編寫匯編語言程序;按照硬件連接圖連接電路;程序,運行;觀察發(fā)光二極管
53、的亮滅變化和示波器的波形,分析是否和實驗要求實驗現(xiàn)象?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦?。IDE 的安裝路徑SPCE061AexaseExaex07_asm_TIMERA_TIMERB??萍即髮W(xué)計劃()專區(qū)可以到相關(guān)資料?!揪毩?xí)】使用匯編語言實現(xiàn) TimerB 定時器實驗:當(dāng)輸入時鐘源頻率分別為 Fosc/2、Fosc/256、32768HZ、 8192HZ、4096HZ 時觀察輸出頻率,設(shè)置不同的計數(shù)初值,使得每次的計數(shù)時間都為 2s;通過設(shè)置P_TimerB_Ctrl(700DH)單元的第 69 位設(shè)置它的占空比,并通過 IOB9 觀察輸出波形。32設(shè)置計數(shù)初值和時鐘頻率初始化IO
54、B8為同相低電平輸出口第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗實驗八系統(tǒng)時鐘【實驗?zāi)康摹?.2.3.熟悉 SPCE061A 系統(tǒng)時鐘的工作原理。掌握系統(tǒng)時鐘單元 P_SystemClock 的設(shè)置方法。掌握用程序設(shè)置系統(tǒng)時鐘及 CPU 時鐘頻率的方法。【實驗設(shè)備】1.裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)境的 PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個,示波器一臺。2.本實驗用到的實驗箱硬件模塊為:SPCE061A二極管電路模塊。及周邊電路模塊(包含 32 個 I/O 口),發(fā)光【實驗要求】1.2.3.編程要求:編寫一個匯編語言程序。實現(xiàn)功能:選擇不同 Fosc 信號頻率或
55、CPUClk 頻率。實驗現(xiàn)象:選擇不同 Fosc 信號頻率或 CPUClk 頻率時發(fā)光二極管亮滅閃爍的快慢不同?!緦嶒炘怼縎PCE061A 中每條匯編指令的執(zhí)行周期數(shù)用 Cycles 表示,每一個 Cycles 的時間長度為一個 CPU 時鐘周期;而每條指令的 Cycles 數(shù)是一定的。本實驗中主循環(huán)里會調(diào)用延時子程序延時,延時后翻轉(zhuǎn)端口輸出狀態(tài),接著再循環(huán)調(diào)用延時子程序延時,延時后再翻轉(zhuǎn)端口輸出狀態(tài);這樣就可以在輸出端口輸出高低電平的脈沖,表現(xiàn)在外接的發(fā)光二極管上表現(xiàn)為循環(huán)點亮、熄滅發(fā)光二極管。而通過改變 Fosc(系統(tǒng)時鐘)或 CPU 時鐘頻率(CPUClk),則可以改變每條指令執(zhí)行的時
56、間長度;在延時子程序里面執(zhí)行周期數(shù)(Cycles)固定的情況下,就使得延時子程序的延時時長隨 CPU 時鐘頻率的改變而改變;最終表現(xiàn)為改變 CPU 時鐘頻率后接在輸出端口的發(fā)光二極管亮滅速度也隨之改變。在 SPCE061A 中,通過設(shè)置 P_SystemClock(寫)($7013H)單元設(shè)置系統(tǒng)時鐘和 CPU 時鐘。通過設(shè)置該單元的第57 位可以選擇系統(tǒng)時鐘的頻率(Fosc=20/24/32/40/49MHz);通過設(shè)置第02 位可以選擇CPU時鐘頻率;將第 02 位置為“111”可以使 CPU 時鐘停止工作,系統(tǒng)切換至低功耗的備用狀態(tài)。在備用狀態(tài)下,通過設(shè)置該單元的第 4 位可以接通或關(guān)閉
57、 32KHz 實時時鐘。詳細(xì)設(shè)計方法可參考時鐘”相關(guān)章節(jié)。書“系統(tǒng)【硬件連接】IOA0IOA7 分別依次連接 D11D4(即從右到左的 8 個發(fā)光二極管),即用 8pin 排線連接實驗箱的J16 和 J26。注意 J16 和 J26 的連接順序為:J16 的第 07 號引腳依次連接 J26 的第 70 號引腳。硬件連接圖如圖 1-36 所示。33D11IOA0D10IOA1D9 IOA2D8 IOA3D7IOA4D6IOA5D5IOA6D4 IOA7圖 1-36 硬件連接圖【程序流】初始化 IOA 口的低 8 位為同相低電平輸出口,選擇系統(tǒng)時鐘和 CPU 時鐘頻率;進(jìn)入發(fā)光二極管狀態(tài)變化循環(huán):
58、發(fā)光二極管點亮,延時,發(fā)光二極管熄滅,延時,發(fā)光二極管點亮,延時,發(fā)光二極管熄滅,如此循環(huán)。為便于觀察,讀者自己選擇程序中合適的延時時間。主程序流如圖1-37 所示。開始設(shè)置IOA低8位為同相低點平輸出口圖 1-37 主程序流【實驗步驟】1.2.建立一個新工程 ex08_asm_SYSTEM_CLOCK,根據(jù)程序流Rebuild All。編寫匯編語言程序。34延時發(fā)光二極管熄滅延時發(fā)光二極管點亮選擇系統(tǒng)時鐘和 CPU時鐘頻率 第 1 章SPCE061A 基礎(chǔ)應(yīng)用實驗3.4.5.根據(jù)硬件連接圖連接電路。在 IDE 環(huán)境中選擇調(diào)試圖標(biāo),、運行。觀察 8 個發(fā)光二極管亮滅變化的快慢,并通過示波器觀察
59、波形和頻率?!痉独窂健吭谝韵侣窂接锌晒┐蠹覅⒖嫉某绦颉DE 的安裝路徑SPCE061AexaseExaex08_asm_SYSTEM_CLOCK。科技大學(xué)計劃()專區(qū)可以到相關(guān)資料。【練習(xí)】編寫一個匯編語言程序,選擇系統(tǒng)時鐘為 20MHz,CPU 時鐘為 Fosc/64,每延時 0.5s 發(fā)光二極管的狀態(tài)變化一次;改變系統(tǒng)時鐘為 49MHz,CPU 時鐘依然為 Fosc/64,利用前一種情況相同的延時程序,延時時間到時發(fā)光二極管的狀態(tài)變化一次;觀察前后兩種情況下發(fā)光二極管狀態(tài)體由那些 I/O 口控制請自行定義)不同。(發(fā)光二極管具35實驗九FIQ 中斷【實驗?zāi)康摹?.2.熟悉 FIQ 的中
60、斷向量和中斷源;掌握中斷控制單元 P_Ctrl,P_Clear 的設(shè)置方法;3.掌握 FIQ 中斷的編程方法。【實驗設(shè)備】1.裝有 Windows 系統(tǒng)和 nSP IDE 集成開發(fā)環(huán)境的 PC 機(jī)一臺,nSP十六位單片機(jī)實驗箱一個。2.本實驗用到的實驗箱硬件模塊為:SPCE061A二極管電路模塊。及周邊電路模塊(包含 32 個 I/O 口),發(fā)光【實驗要求】1.2.編程要求:編寫一個匯編語言程序。實現(xiàn)功能:打開并設(shè)置 TimerA 和 TimerB 定時器,并打開它們的 FIQ 中斷,當(dāng)有 TimerA/B 的 FIQ 中斷請求時,響應(yīng)相應(yīng)的中斷服務(wù)程序,在中斷服務(wù)中翻轉(zhuǎn) I/O 端口輸出電平
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 虛擬現(xiàn)實廣告的跨媒體傳播-洞察分析
- 纖維素生物質(zhì)化學(xué)轉(zhuǎn)化-洞察分析
- 初二期末綜合評價總結(jié)(6篇)
- 天然氣合成甲醇-洞察分析
- 元宇宙對時裝設(shè)計影響分析-洞察分析
- 匠心筑夢技能報國三分鐘演講稿范文(10篇)
- 辦公自動化技術(shù)的推廣與應(yīng)用研究報告
- 辦公空間走向可持續(xù)的展館模式
- 以科技為驅(qū)動的家庭財富增長路徑探索
- 煤礦爆破員勞動合同三篇
- 數(shù)字化變電站的IEC61850建模
- 管道閉水試驗記錄表自動計算軟件
- 學(xué)校綜合督導(dǎo)匯報ppt課件
- 人流咨詢話術(shù)
- 鐵路建設(shè)征地拆遷補(bǔ)償標(biāo)準(zhǔn)(附表)
- 農(nóng)村祠堂上梁說辭
- GB31644-2018食品安全國家標(biāo)準(zhǔn)復(fù)合調(diào)味料
- 建筑施工現(xiàn)場安全檢查的程序及要點
- 市政工程溝槽開挖與回填自動計算表
- SJ8002B電子測量原理實驗指導(dǎo)書(V3.1)
- 2歲寶寶思維能力的發(fā)展特點
評論
0/150
提交評論