單片機原理實驗_第1頁
單片機原理實驗_第2頁
單片機原理實驗_第3頁
單片機原理實驗_第4頁
單片機原理實驗_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應(yīng)用系別:電氣學(xué)院班級:自動化142姓名:學(xué)號:實驗一:熟悉k ei 1 c51集成開發(fā)環(huán)境及常用指令、實驗?zāi)康?:(1)了解8 0 C5 1典型應(yīng)用系統(tǒng)得開發(fā)過程,熟悉k ei1 c51 集成開發(fā)環(huán)境;2)掌握單步執(zhí)行程序 ,查瞧專用寄存器與單片機 RAM 得 執(zhí)行結(jié)果 ;(3)掌握8 0c 5 1得尋址方式及常用指令得使用方法。二、實驗內(nèi)容1 )基本指令練習(xí) ;2)數(shù)據(jù)轉(zhuǎn)送(循環(huán)方式 )。、思考題1 、分別執(zhí)行以下程序,在調(diào)試狀態(tài)下觀察有關(guān)單元得內(nèi)容順序執(zhí)行得程序:ORG00HSJM PMA INO RG30HMAIN:MOVSP ,#60 HMO VR0, #4 0 HMOV

2、R1,#30HMO V3 0H , #5 0HMO VA, # 40HMOVR0, A ; R0 與 A 內(nèi)容相等為 40HMOVA,R1 ; A得內(nèi)容為3 0 H,R1得內(nèi)容給 APUSHACC ;6 1H 給 APOP3 2H ; 60 H 給 30HMOVA ,#5F HSWAP;高四位低四位交換 ,A 為 F5HMOVDPTR,#0 03 0H循環(huán)程序:MO VXDPTR , AXU N HU A N1 :MOV R 0,# 30H ;要賦值得首地址MOVR2,#1 OH ;一共賦值 16次LOOP 1 :CL RA ;從0開始賦值MO VRO,A ;賦值1 6 次后停止賦值IN CA

3、 ;3 2H= 2 ,37H =7, 3BH= 0 B, 3 FH=0FINCR0D J NZR2, LOOP1X U NHU A N 2 :MOVRO,# 3 0HM OVR1,#40HM O VR2, #10 HLOOP2 :MOVA,R 0 ;從 40H 開始一直賦值M OVR 1 ,A ;賦得值從30H開始INCR0 ;就就是 40H=30H , 41H = 31 HINC R1;直到R2 =0D JN ZR 2, LO OP2 ;就就是 4FH=3FH匯編程序 3:PANDU AN 1 :SUBBA, R1 ;帶進位位得加法JNCPAN 1 ;判斷進位位C,不為零跳轉(zhuǎn)MO VA,R0

4、 ; 所以當(dāng) C 等于零時 ,將M O V30 H,#10HMOV31 H, #4 BHMOVR0, #30HMO VR1, #31HMO VA, R0PAN 0:C ;進位位清零C LR40H , R 1 ;3 0 H與30H得內(nèi)容互換M OVR0,40HM OVR 1,APA N0:NOPEND2、編程完成:單片機內(nèi)部 RA M40H4F H置初值 A 0 H4FH得內(nèi)容傳送到外部 RAM中得2000H 2 00 F H單元,在把外部RA M中得2 0 00H200 F H單元得內(nèi)容傳送到單片機內(nèi)部R AM得50H5 FH單元。匯編代碼 :ORG 0 0HAJM P MAINOR G 30

5、HMAI N:MOVR0, #4 0HMO VR1,# 16A,#01HMOVDPTR, # 2000HLOOP1:MOVR0 ,AM OVXDPTR,ANCDPTRINCR0INCDJNZR1,L0 OP 1M OVRO ,#5 0HMOVR1, #16MO VDPT R, #2 0 OOHLO OP 2:MOVX A QPTRM O V RO , AINC D PT RINC ROD JNZ R1 , L O O P 2END中斷、定時器與 I/O 口控制、實驗?zāi)康?)掌握定時器 /計數(shù)器、中斷初始化程序設(shè)計得方法;2) 掌握定時 /計數(shù)器方式 2 得編程方法;(3)掌握中斷得編程方法 ;

6、(4)掌握使用單片機P1 口與P3 口做I/O輸出,各參數(shù)得 配置.、實驗任務(wù)完成在每隔5 0 MS/ 1 S下接在P1 口得八個發(fā)光二極管循環(huán)亮滅程序設(shè)計與調(diào)試。要求 : 1 、選擇定時器 T0 方式一定時,中斷方式產(chǎn)生50 M S,使P1 口得八個發(fā)光二極管循環(huán)亮滅。2、用定時器與計數(shù)器得方式,使 T0 工作定時產(chǎn)生5 OMS,使T1工作與計數(shù)器,計數(shù)10次,每次T 0溢出后從P3、0給T 1端P3、5個脈沖。1 )用定時器定時,計數(shù)器計數(shù) ,當(dāng) 50 ms 到來時,取反 P3、0讓P3、0 口能夠輸出一個周期為 100 m s得脈沖,通過外接導(dǎo)線到 P3、 5,則計數(shù)器就有了外部脈沖得信

7、號,而計數(shù)器就是在下降沿時計數(shù), 所以應(yīng)該讓P 3、0 開始就輸出低 電平。電路圖如下:r1i *if-ij11.4Pl.給鬥#.O-AA-44(2)定時器方式一與方式二最大定時間分別就是方式一:65、5 3 6 m s(213 微秒)方式二:0、2 5 6ms( 2人8微秒)實驗三:擴展并行接口 81 5 5、實驗?zāi)康茫?1) 掌握8051單片機與8 1 55得接口方法(2)掌握ke il c 5 1集成開發(fā)環(huán)境在硬件仿真條件下 各參數(shù)得設(shè)置;(3) 掌握軟件延時與定時器中斷延時得編程方法.二、實驗內(nèi)容畫出實驗電路圖:肇-1*-r號二 S Fl -總xyTQaj.-; HB* 一二 -匯編程

8、序:O R G 00 00HLJM P MAI NORG0 0 OBHLJMP TIMEOMAIN:MOV SP ,# 6OHMOV TMOD , # O1HMOV T HO ,#3C HMOV TLO ,#0 B OH;定時 50msMOV D PT R ,7F F8;DPTR指向命令寄存器8 1 55MOV A , #0 3H;設(shè)定 A,B,C工作方式MOV X DPT R ,A;啟動81 5 5MO V D PT R,# 7F F9H;打開A口MOV A ,# OF EHMOVX DPTR , A;將流水燈值給PA 口SET B EASET B ETOS ETB TRO; 打開單片機定時

9、器 OTIME0:SJM P $MOV T H0 ,# 3 CHM O V T L0 , 0B0HMO VX DPTR , A;將左移得值給PA口RETIEN D實驗四 :并行 A/D 轉(zhuǎn)換、實驗?zāi)康?:(1 )掌握并行A/D芯片A D C08 0 9與單片機得接口方法(2) 了解AD C 080 9芯片得性能3)通過實驗了解單片機實現(xiàn)數(shù)據(jù)采集得方法。二、實驗內(nèi)容 :畫出電路圖 :匸 二】ti _p L三巴 w _二T, -1二 HI - -= - J 匸二 卜一一蘭 r 二-二C S 接 P2、7 貝y按圖中模擬輸入通道得地址值 INTOI NT 7:7F F87FFF#in eludest

10、 dio、h”typede fi ntElemT ype;t y pedefStatust r uc tLi s tE lemType *lis t1;/指向線性表得第一個節(jié)點int l e n g th/線性表得實際長度intli s t S ize;/ /線性表得最大長度324;/ /附加1:給線性表增加空間S tat usAgain M allo c(str u ct L ist* L1 )ElemType * p = (Elem T ype *)r eallo c (L 1 list1,(L1 l istSize +1) * si zeo f(El e mType);? if (!pr

11、in t f (存儲空間分配失?。。?exit(L1-li st1p; /*使li s t1指向新線性表空間* /L1 -1 is t Size=L1 l is tSize + 1;/ *把線性空間大小修改為新得長度*/ /附加2:遍歷線性表元素Stat u s Traverse( s tr u ct List *L1)inti;f or(i =0 ;i L 1-le n gth;i+ +)print f (” %d” ,L1 lis t 1 : i);/ /I、創(chuàng)建線性表,給定長度St atus In i tList(s tr uct List *L1, in t ms)if (m s 1

12、e n gth0;L l li Sts izems/給li St 1分配空間,單元大小為定義得ElemT ype類型,長度為msLl listi(El em Type *)malloc(m s * s ize of (El e mType);if( ! Ll )pr i n t f (”空間分配失敗!);exit(1 );elseprint f(空間分配成功!n ”);p r in t f(您分配得空間大小為 %d n , ms );u rn 0;/2、銷毀線性表? ? Stat us DestoryList (str u ct Li s t* LI )? ? if(L1 ! = NUL L)

13、L1 le ng t h0;L 1 -l i stSiz e0;fre e (L1);? pr in tf (銷毀成功! n);r et ur n 0;/ / 3、清空線性表* L1)S t atus C l e a rL i s t (st r uct List?/清空只需要將線性表得長度記為 0即可。L1 le n gth0;p ri n t f (清空成功! n);ret urn 0;4、判斷線性表就是否為空(如果為空返回0,如果不為空返回1 )? ? St a tusListEmpt y (struct L i s t *L1)? ? if(L 1-le ngth!=0)pr i n

14、tf (線性表不為空!r e t ur n 1 ;els ep r in tf (線性表為空!n ”);r e t urn 0;? /5、返回線性表得當(dāng)前長度intLis t L e ngth (s t ruct L i st *L1)return L1-length;/ /6、返回第i個元素得值ElemTy pe Ge tE l em(struct List *L1 , i nti f (i 1) II (i L1-listSize)pr i n t f (”查找得位置超岀線性表得范圍! ”/退岀ex i t(l);? else/返回第po s個元素得值r e tur n L1-list l

15、 i- 1;7、判斷某個元素就是否就是線性表元素,如果就是,返回這個元素第一次在線性表中岀現(xiàn)得位置,如果不就是返回0int IsE le m (str uct List *L1,E l emType e)?/必須要先定義,后使用!? i nt i ;? f o r(i = 0;i l i st1 : i : =e )? ? /因為i就是從0 ,開始,所有返回i+1? r e turn i + 1;? /如果沒有找到相應(yīng)得元素,返回-1 ;? re tur n 0 ;/8、返回某個元素得前驅(qū)元素(如果這個元素就是第一個,則提示這就是第一個元素)/1、如果這個元素不就是線性表元素,返回一1/ /2

16、、如果這個元素就是線性表第一個元素,返回0,提示第一個元素沒有前驅(qū)元素E1 emTy pe PriorElem(struct List *L1,ElemTy pee)/ /判斷這個元素就是否就是線性表元素,如果就是返回它得第一個位置/調(diào)用Is E lem函數(shù),并將結(jié)果返回給t e mp變量i n t tempIsElem ( L1, e );? i f (temp =0)e Isp nntf(r et u rni f(temp”這個元素不就是線性表得元素);1;=1)printf(這個元素就是第一個元素,沒有前驅(qū)元素);retu r n 0;else/返回e元素得前驅(qū)元素re turn L1-

17、1 ist 1 tem p-2;/ 9、返回某個元素得后繼元素(如果這個元素就是最后一個,則提示“這就是最后一個元素”)/I、如果這個元素不就是線性表元素,返回一1/2、如果這個元素就是線性表得最后一個元素,返回0,提示最后一個元素沒有后繼元素El e mTyp e Nex t E lem (str uc t List * L 1, ElemTypee)/調(diào)用IsEl em函/ /判斷這個元素就是否就是線性表元素,如果就是返回它得第一個位置數(shù),并將結(jié)果返回給temp變量int t e mp = I sE le m( L1,e);if (t em p0)? prin t f (這個元素不就是線性

18、表得元素”);r e tu r n -1 ;? else if(te mpL 1 le ngth)p rint f(這個元素就是最后一個元素,沒有后繼元素”);re t urn 0;else/ /返回e元素得后繼元素return L1- l i s t 1temp;/ 1 0、在線性表得指定位置i之前插入元素StatusListInsert ( s tructLi s* L1, int i, E lemType e)int te mpif (i1 )lI (i L1 lengt+ 1)printf(i越界,不能插入exit(1);/如果線性表得長度等于最大長度,增加空間i f (L1 -len

19、 g t h = L 1- 1 i s tSiz e )/每次增加1個E le m Typ e單位得個空間A ga in Ma l 1 oc (L 1 );/將位置i之后得元素向后以一個位置f or( t em p = (L 1 len gt h+1);tem p = i;t emp)L 1 li st1 te mp = L1 1 ist1 tem p 1/ /在i 1得位置插入新兀素eL1- li s t1i 1= e ;/ /長度加1L 1 - length = L 1 - len gt h +1 ;return 0 ;/ /11、刪除線性表中指定位置i得元素e,并將e返回ElemT y

20、pe Li stDel e t e(s t ru c t Li st * L1 ,i nt i )Ele m Type e;? i nt temp;if (i1) I |(iL1-length )printf ( ”要刪除得元素超岀線性表得范圍! ”);ex it(1);/將第i個位置得元素返回給ee =L1 list1for (te m p = i ; i v L1 l eng th ; i + )/將第i + 1個元素得值賦值給第i個位置L1- lis t1 i 1= L1 li st 1 i ;/將長度減去1L 1- lengthL1le ngthi ntintretu r n e;ma

21、i n ()ite mpi n tanyte m p=0;1;int l i stleng tE 1 emT ype e;t ru c t L ist L1;pri n t f (”線性表得基本操作! n);pri ntf(* * * * * * * *初始化操作* * *n );P rin tf(”請輸入初始化得長度:”);s c an f(” %d ,&it e mp ;,i nt m s)/1、創(chuàng)建一-InitList(struct LiIn it L ist(&L1,i te m p);pr i n tf(請輸入線性表得值,不能超過4個,以9 1 1結(jié)束,9 1 1不算長度:n ”,i

22、tem p);f o r (i = 1;i = item p;i+ )sc a n f (” d/這里不能就是exit ,e xit直接退岀了所有程序,所以就是b r e ak? if (e = = 91 1)? b r eak;/ 10、在線性表指定位置i之前插入元素e? Lis tl nse rt (&L1,i, e);/5、返回長度Lis t Lengt h (struct Li s t *L1)? listlengt h = ListLengt h (&L1);P rin t f (目前,線性表得長度為: dn ,listlengt h);/遍歷線性表pr i n t f(目前,線性表得值為: n);/遍歷,在Travers e中輸岀T ra V ers e ( & L1);/ 6、返回第 i 個元素值GetEle m (s t r u ct List * LI, i n t i)? pr i ntf(請輸入,要返回第幾個元素值:n ”;/輸入時,要在這里賦值地址“ &sc anf (” d”,&any t emp);p

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論