中斷冒泡排序1602單片機(jī)試驗(yàn)報(bào)告_第1頁(yè)
中斷冒泡排序1602單片機(jī)試驗(yàn)報(bào)告_第2頁(yè)
中斷冒泡排序1602單片機(jī)試驗(yàn)報(bào)告_第3頁(yè)
中斷冒泡排序1602單片機(jī)試驗(yàn)報(bào)告_第4頁(yè)
中斷冒泡排序1602單片機(jī)試驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、聲引舜Z上承本科生實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)課程單片機(jī)實(shí)驗(yàn)學(xué)院名稱信息科學(xué)與技術(shù)學(xué)院專業(yè)名稱物聯(lián)網(wǎng)工程學(xué)生姓名曹林鑫學(xué) 生學(xué)號(hào) 學(xué)1413060301指導(dǎo)教師謝興紅實(shí)驗(yàn)地點(diǎn)6B607實(shí)驗(yàn)成績(jī)二。一六年九月二六年十二月實(shí)驗(yàn)一冒泡排序(匯編)一.實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)的匯編語(yǔ)言排序程序。二.實(shí)驗(yàn)內(nèi)容將單片機(jī)內(nèi)部的數(shù)據(jù)進(jìn)行排序,且使用匯編語(yǔ)言。三.實(shí)驗(yàn)要求根據(jù)實(shí)驗(yàn)內(nèi)容編寫一個(gè)程序,數(shù)據(jù)排列順序要求是從小到大。四.實(shí)驗(yàn)說(shuō)明先在片內(nèi)RAM中存儲(chǔ)一組數(shù)據(jù),重復(fù)地走訪過(guò)要排序的數(shù)據(jù),一次比較兩塊內(nèi)存上的數(shù)據(jù),如果他們的順序錯(cuò)誤就把他們交換過(guò)來(lái)。走訪數(shù)據(jù)的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說(shuō)該列數(shù)據(jù)已經(jīng)排序完成。五.算

2、法分析若文件的初始狀態(tài)是正序的,一趟掃描即可完成排序。所需的關(guān)鍵字比較次數(shù)C和記錄移動(dòng)次數(shù)M均達(dá)到最小值:。面由二“ 一 1, Mmin二°。所以,冒泡排序最好的時(shí)間復(fù)雜度為O (n)。若初始文件是反序的,需要進(jìn)行n-1趟排序。每趟排序要進(jìn)行n-i次關(guān)鍵字的比較(K i < n-1),且每次比較都必須移動(dòng)記錄三次來(lái)達(dá)到交換記錄位置。在這種情況下, 比較和移動(dòng)次數(shù)均達(dá)到最大值:Mm =嗎7 =。(島冒泡排序的最壞時(shí)間復(fù)雜度為 ,連? L綜上,因此冒泡排序總的平均時(shí)間復(fù)雜度為57六.實(shí)驗(yàn)程序及分析ORG 0000HLJMP mainORG 0100Hmain:MOV 40H,#05

3、H/昭40H-44H中隨機(jī)存放五個(gè)立即數(shù)MOV 41H,#08HLOOP3:LOOP1:MOV 42H,#09HMOV 43H,#07HMOV 44H,#06HMOV R7,#04H/您制比較循環(huán)的次數(shù)MOV R6,#04HMOV R0,#40H/Jt向需要進(jìn)行比較的數(shù)據(jù)的地址MOV R1,#41H/MOV A,R6MOV R7,ACLR ACLR CMOV A,R1MOV 49H,A/交換數(shù)據(jù)前的備份SUBB A,R0/用進(jìn)位標(biāo)志判斷兩數(shù)的大小JC LOOPLJMP LOOP4LOOP:MOV A, R0/R復(fù)交換前的備份數(shù)據(jù)MOV R1,AMOV R0,49HLOOP4:INC R0INC

4、 R1DJNZ R7,LOOP1/空制比較的次數(shù)DJNZ R6,LOOP3/空制比較的輪數(shù)LJMP $END六、實(shí)驗(yàn)截圖排序前內(nèi)存中的數(shù)據(jù)Adctess 向iU3:0kS0:0:22334455觀0000000000000000Q00000000000DO000000):。d7:7;dooaooooonoooooodooooaooooaooooocooooonooooooo)mE:E;aoocfi口7ooaoooooojoooj口口caooco叩oooorrjomoooa:0k95:5:aoOCODDCOOOC0000口。0003FFCDQO0000DO0000DO口口0000D:QxK;C:

5、QO00QQOCFF0000QO叩DOOJ00印CO叩叩OQ叩00皿叩0000D:0«C3:3;QOOD0000OQ000000DO00DO00OQCO口口0000ODDOOODO0000D:OkDA:A;dooa00OOODOO5S0口DO00OD00OD000000000000DODO0000);0xFLL00ODOODOOOOO00OO0000000000DO0054OO5500DO000000排序后內(nèi)存的數(shù)據(jù)Mess |D:WH):0x50:0: ££ 55 44 33 22 OO 00 的 口0 00 00 00 OD 00 OD 口口 口0 OD 00

6、 00 OD OO 00 3:0x£7;7: 00 OD OD 00 00 OO OD 00 OQ 00 00 00 00 00 00 00 00 00 期 00 OD OO 00 ):0x7E:E: (IO 00 FF 07 皿 OO 00 00 00 00 00 00 00 00 00 Ofl DO 00 FF 00 CO OO 00 D:oi(gs:5: qo od on no oo oo oo oo oo oo oo ff oq oo oo oo 0口 on 口口 m oq oo od J:OxAC:C: ???00 口口 口口 FF CO 口口 叩 00 OD 00 00

7、00 00 口口 口口 GO OD 。0 00 00 OO 00 ):0xC3:3:皿 00 OD 00 OD QO CD 0。 QO OQ 皿 00 00 口0 口口 00 CO OD 口口 OD 0口 OO 00 );0xDl;A; OO 00 00 00 DO 叩叩叩叩叩叩 00 OU DO OQ 00 UU 00 口口 00 OU UO Q口 ):0xFl:l: DO 00 on 00 00 OO 00 00 00 00 00 00 00 00 00 oa 00 00 00 04 oa OO 00實(shí)驗(yàn)二外部中斷一.實(shí)驗(yàn)?zāi)康?、掌握單片機(jī)外部中斷的原理及過(guò)程。2、掌握單片機(jī)外部中斷程序的

8、設(shè)計(jì)方法。3、掌握單片機(jī)外部中斷時(shí)中斷方式的選擇方法。二、實(shí)驗(yàn)內(nèi)容如下圖所示,P3.2設(shè)為輸入,P2設(shè)為輸出位,連有 8個(gè)發(fā)光二極管 D1D8。每當(dāng)發(fā)生外部中斷時(shí),發(fā)光二極管以向下流水燈的方式點(diǎn)亮。分別選擇邊沿觸發(fā)外部中斷放是和電平觸發(fā)外部中斷方式兩種。三、編程提示1、P3 是8位準(zhǔn)雙向口,具有雙重功能:第一功能和P1 一樣,作為輸入輸出口,也有字節(jié)操作和位操作兩種方式,每一位可分別定義為輸入或輸出;第二功能定義如下:P3.0RXD串行輸入口P3.1TXD串行輸出口P3.2INT0外部中斷0請(qǐng)求輸入線P3.3INT1外部中斷1請(qǐng)求輸入線P3.4T0定時(shí)器/計(jì)數(shù)器T0外部計(jì)數(shù)器脈沖輸入線P3.5

9、T1定時(shí)器/計(jì)數(shù)器T1外部計(jì)數(shù)器脈沖輸入線P3.6WR外部數(shù)據(jù)存貯器寫脈沖輸出線P3.7RD外部數(shù)據(jù)存貯器讀脈沖輸出線2、各中斷服務(wù)程序入口地址:外部中斷003H定時(shí)器/計(jì)數(shù)器T1溢出中斷0BH外部中斷113H定時(shí)器/計(jì)數(shù)器1BH串行口中斷23H3、外部中斷的產(chǎn)生條件中斷允許寄存器IE:EAESET1EX1ET0EX0(1)外部中斷源允許中斷(中斷 0: EX0=1 ;中斷1: EX1=1 )。(2) CPU 開中斷(EA=1 )。(3)外部中斷方式CPU發(fā)出中斷申請(qǐng)。4、外部中斷方式的選擇控制TCON :TF1TR1TF0TR0IE1IT1IE0IT0IT0是選擇文字則外部中斷 0請(qǐng)求(IN

10、T0 )邊沿觸發(fā)方式或電平觸發(fā)方式的控制位。前一方 式 IT0=1 ,后一方式 IT0=0。IT1是選擇外部中斷 1請(qǐng)求(INT1 )為邊沿觸發(fā)方式或電平觸發(fā)方式的控制位。前一方式IT1=1 ,后一方式 IT1=0。當(dāng)8031復(fù)位后,TCON被1# 0。5、外部中斷電路負(fù)脈沖作為中斷請(qǐng)求信號(hào)時(shí),為了保證中斷的唯一性,必須加上消除開關(guān)抖動(dòng)的電路或者去抖動(dòng)延時(shí)程序, 保證每次只產(chǎn)生單脈沖,構(gòu)成邊沿觸發(fā)方式外部中斷電路。邊沿觸發(fā)的最大優(yōu)點(diǎn)在于不會(huì)丟失中斷。只要中斷請(qǐng)求負(fù)跳變的寬度大于1個(gè)機(jī)器周期,單片機(jī)就能夠采樣到中斷請(qǐng)求信號(hào), 單片機(jī)將采樣到的信號(hào)瑣存到中斷請(qǐng)求標(biāo)志寄存器中,硬件自動(dòng)置IE0為1,

11、即使單片機(jī)暫時(shí)不響應(yīng),這個(gè)標(biāo)志也不會(huì)丟失,只有在外部中斷響應(yīng)之后,硬件 才將IE0清除。低電平觸發(fā)的外部中斷與邊沿觸發(fā)的外部中斷,其中斷過(guò)程基本相似。 唯一不同在于中斷請(qǐng)求信號(hào)的保持與撤消。在邊沿觸發(fā)中,單片機(jī) TCON寄存器專門有一位作它的請(qǐng)求標(biāo) 志,當(dāng)負(fù)跳變后,單片機(jī)將中斷請(qǐng)求標(biāo)志IE1 (INT1中斷為IE1, INT0中斷為IE0)自動(dòng)置1,由IE1請(qǐng)求中斷,在響應(yīng)中斷時(shí),又由單片機(jī)自動(dòng)清除IE1 o但是對(duì)于電平觸發(fā)方式,單片機(jī)中沒有專門的請(qǐng)求標(biāo)志,響應(yīng)中斷時(shí)也不能自動(dòng)清除請(qǐng)求信號(hào)。在實(shí)際應(yīng)用中,常常是在單片機(jī)外增加一個(gè)觸發(fā)器作為中斷請(qǐng)求標(biāo)志,當(dāng)中斷請(qǐng)求發(fā)生時(shí)置觸發(fā)器為0,使INT1為

12、低電平,在單片機(jī)響應(yīng)這個(gè)中斷后,利用軟件(占用另一根I/O線,仞如P3.1)發(fā)出復(fù)位脈沖,使該觸發(fā)器置1,撤消中斷請(qǐng)求。這種電路使請(qǐng)求中斷的低電平能夠保持足夠的時(shí)間, 一直到中斷發(fā)生為止, 因而不會(huì)丟失中斷請(qǐng)求。 低電平的時(shí)間又不致太長(zhǎng),只要進(jìn)入中斷服務(wù)程序,在返回之前,就撤消請(qǐng)求信號(hào),因而也不會(huì)產(chǎn)生多余的中斷動(dòng)作。四、實(shí)驗(yàn)器材仿真器、目標(biāo)系統(tǒng)實(shí)驗(yàn)板、直流電源五、實(shí)驗(yàn)步驟1、邊沿觸發(fā)式外部中斷 0實(shí)驗(yàn)(1) P3.2設(shè)為邊沿觸發(fā)方式,連接外部復(fù)位開關(guān),編程使每次中斷流水燈向下移 位一次,中斷程序中不延時(shí)去抖動(dòng),觀察結(jié)果。(2) P3.2設(shè)為邊沿觸發(fā)方式,連接外部復(fù)位開關(guān),編程使每次中斷流水燈向

13、下移 位一次,中斷程序中采用延時(shí)去抖動(dòng),觀察結(jié)果。(3) P3.3設(shè)為邊沿觸發(fā)方式,連接外部RS觸發(fā)器硬件去抖動(dòng)的開關(guān),編程使每次中斷流水燈向下移位一次,中斷程序中不延時(shí)去抖動(dòng),觀察結(jié)果。(4) 平觸發(fā)式外部中斷實(shí)驗(yàn)P3.3設(shè)為電平觸發(fā)方式,連接外部RS觸發(fā)器硬件去抖動(dòng)的開關(guān),編程使每次中斷流水燈向下移位一次,中斷程序中不延時(shí)去抖動(dòng),觀察結(jié)果。六、C源程序清單#include <STC12C5A60S2.h>#define uchar unsigned charuchar i=0;uchar numi尸0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;

14、 void delay(uchar k );void main() EA=1;EX0=1;IT0=1;while(1) if(EX0=0)/delay(100);IE0=0;EX0=1;void int0() interrupt 0EX0=0;P2=numii;i+;if(i>8)i=0;void delay(uchar k )uchar x,y,z;for(x=k;x>0;x-) for(y=20;y>0;y-)for(z=250;z>0;z-);)七、總結(jié)1、邊沿觸發(fā)和電平觸發(fā)兩種方式中斷響應(yīng)的原理與區(qū)別邊沿觸發(fā):當(dāng)從高至低電平或從低至高電平轉(zhuǎn)變時(shí),觸發(fā)產(chǎn)生;電平保

15、持多久都只產(chǎn)生一次。所以,邊沿觸發(fā)適合與以負(fù)脈沖形式輸入的外部中斷請(qǐng)求。電平觸發(fā):那么在電平時(shí)間內(nèi)中斷一直有效;因此如果在電平?jīng)]有恢復(fù)之前中斷程序就已經(jīng)執(zhí)行完成從而退出,那么會(huì)在退出后又再次進(jìn)入中斷;但只要中斷沒有退出是不會(huì)重復(fù)觸發(fā)的。所以,電平觸發(fā)方式適合于外部中斷以電平輸入而且中斷服務(wù)能清除外部中斷源的 情況。2、實(shí)驗(yàn)現(xiàn)象1、(1)實(shí)驗(yàn)現(xiàn)象是,按鍵一次就會(huì)跳過(guò)幾個(gè)燈,也就是說(shuō)按鍵一次并不是向后移一位 而是好幾位,這是因?yàn)榘存I沒有去抖動(dòng),所以會(huì)進(jìn)入多次中斷導(dǎo)致。1、(2)按鍵一次,燈就向下移一位,這是通過(guò)軟件去抖動(dòng)之后,按鍵按下后延時(shí)一段 時(shí)間,再來(lái)判斷中斷有沒有打開,所以按鍵一次只進(jìn)入一次

16、中斷。1、(3)按鍵一次,燈就向下移一位,雖然沒有用按鍵去抖動(dòng),但是這個(gè)鍵在硬件上已 經(jīng)去抖,所以按鍵一次也是只進(jìn)入一次中斷程序,所以會(huì)有這種現(xiàn)象。2、(1)由于是電平觸發(fā),所以在按下按鍵的時(shí)候,會(huì)有好多燈一起亮,比如低電平, 在低電平這段時(shí)間里, 會(huì)不斷地請(qǐng)求中斷, 所以就會(huì)進(jìn)入很多次中斷, 在加上請(qǐng)求中斷的速 度快和LED燈有一定的的余暉,所以肉眼看起來(lái)就好像燈全是亮的。實(shí)驗(yàn)三定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)MCS-51內(nèi)部計(jì)數(shù)器的使用和編程方法。二、實(shí)驗(yàn)內(nèi)容使用MCS-51內(nèi)部定時(shí)/計(jì)數(shù)器,定時(shí)一秒鐘,CPU運(yùn)用定時(shí)中斷方式, 實(shí)現(xiàn)每一秒鐘輸 出狀態(tài)發(fā)生一次反轉(zhuǎn),即發(fā)光管每隔一秒鐘亮一次

17、。三、實(shí)驗(yàn)要求根據(jù)實(shí)驗(yàn)內(nèi)容編寫一個(gè)程序,并在實(shí)驗(yàn)儀上調(diào)試和驗(yàn)證。四、實(shí)驗(yàn)說(shuō)明關(guān)于內(nèi)部計(jì)數(shù)器的編程主要是定時(shí)常數(shù)的設(shè)置和有關(guān)控制寄存器的設(shè)置。內(nèi)部計(jì)數(shù)器在單片機(jī)中主要有定時(shí)器和計(jì)數(shù)器兩個(gè)功能。本實(shí)驗(yàn)使用的是定時(shí)器,定時(shí)為一秒鐘。定時(shí)器/計(jì)數(shù)器有關(guān)的寄存器有工作方式寄存器 TMOX口控制寄存器TCON TMOD用于設(shè) 置定日器/計(jì)數(shù)器的工作方式0-3 ,并確定用于定時(shí)還是用于計(jì)數(shù)。 TCON主要功能是為定時(shí) 器在溢出時(shí)設(shè)定標(biāo)志位,并控制定時(shí)器的運(yùn)行或停止等。內(nèi)部計(jì)數(shù)器用作定時(shí)器時(shí),是對(duì)機(jī)器周期計(jì)數(shù)。每個(gè)機(jī)器周期的長(zhǎng)度是12個(gè)振蕩器周期。假設(shè)實(shí)驗(yàn)系統(tǒng)的晶振是 12MHz程序工彳于方式2,即8位自動(dòng)重

18、裝方式定時(shí)器,定時(shí)器 100uS中斷一次,所以定時(shí)常數(shù)的設(shè)置可按以下方法計(jì)算:機(jī)器周期=12+12MHz=1uS(256-定時(shí)常數(shù))X 1uS=100uS定時(shí)常數(shù)=156。然后對(duì)100uS中斷次數(shù)計(jì)數(shù)10000次,就是1秒鐘。內(nèi)部計(jì)數(shù)器用作計(jì)數(shù)器時(shí),是對(duì)外部負(fù)脈沖進(jìn)行計(jì)數(shù)。其中, 負(fù)脈沖從P3.4、P3.5端口 輸入的。每有一個(gè)負(fù)脈沖,計(jì)數(shù)器就加一。在本實(shí)驗(yàn)的中斷處理程序中,因?yàn)橹袛喽〞r(shí)常數(shù)的設(shè)置對(duì)中斷程序的運(yùn)行起到關(guān)鍵作 用,所以在置數(shù)前要先關(guān)對(duì)應(yīng)的中斷,置數(shù)完之后再打開相應(yīng)的中斷。本實(shí)驗(yàn)需要用到CPU模塊(F3區(qū))和八位邏輯電平顯示模塊( B5區(qū))。五、實(shí)驗(yàn)程序及分析程序流程圖如下:主程序

19、流程圖|中晰人口|取原PL1湍口T1中斷服務(wù)子程序T0中斷服務(wù)子程序?qū)嶒?yàn)程序如下:Tick equ 10000;10000x100us=1sT100us equ 156;100us時(shí)間常數(shù)(6M)C100us equ 30h;100us、50us記數(shù)單元Tuck equ 5000;5000x100us=0.5sLEDBuf bit 20h DIR bit P3.0 org 0000h ljmp Start org 000bhljmp T0Int;T0定時(shí)器中斷入口 :0138Horg 001bh;T1中斷入口地址:001BHcpl P1.1;T1中斷服務(wù)子程序reti地址 org 0100h0

20、100H Start:mov P3,0ffh;P3端口做輸入口,初始化要置 1mov TMOD, #62h;T0為方式2,定時(shí)器,T1為方式2,計(jì)數(shù)器clr EA;關(guān)中斷,置定時(shí)器的初值mov TH0, #T100usmov TL0, #T100usmov TH1, #0fdhmov TL1, #0fdhmov IE, #10001010b; EA=1, IT0 = 1, IT1 = 1setb TR0;開始定時(shí)setb TR1;開始計(jì)數(shù)clr LEDBufclr P1.0clr P1.1mov C100us, #27H ;#high(Tick)mov C100us+1, #10H ;#low

21、(Tick)0125H Loop: clr C mov C,DIR jnc Loop1 setb F0;F0=1,T=0.5sljmp Loop3012FH Loop1: clr F0;F0=0,T=1s0131H Loop3: mov c, LEDBuf mov P1.0, c ljmp Loop0138H T0Int:;T0定時(shí)器中斷子程序push PSW mov a, C100us+1 jnz Goon dec C100us0140H Goon:decC100us+1mova, C100usorla, C100us+1jnzExit;記數(shù)器不為0,返回jbF0,Loop2movC100us, #27H ; #high(Tick),記數(shù)器為0,重置記數(shù)器movC100us+1, #10H ; #low(Tick)ljmpLoop40154H Loop2:,記數(shù)器為0,重置記數(shù)器mov C

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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)論