




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机原理及应用系别:电气学院班级:自动化142姓名:学号:实验一:熟悉k ei 1 c51集成开发环境及常用指令、实验目得 :(1)了解8 0 C5 1典型应用系统得开发过程,熟悉k ei1 c51 集成开发环境;2)掌握单步执行程序 ,查瞧专用寄存器与单片机 RAM 得 执行结果 ;(3)掌握8 0c 5 1得寻址方式及常用指令得使用方法。二、实验内容1 )基本指令练习 ;2)数据转送(循环方式 )。、思考题1 、分别执行以下程序,在调试状态下观察有关单元得内容顺序执行得程序:ORG00HSJM PMA INO RG30HMAIN:MOVSP ,#60 HMO VR0, #4 0 HMOV
2、R1,#30HMO V3 0H , #5 0HMO VA, # 40HMOVR0, A ; R0 与 A 内容相等为 40HMOVA,R1 ; A得内容为3 0 H,R1得内容给 APUSHACC ;6 1H 给 APOP3 2H ; 60 H 给 30HMOVA ,#5F HSWAP;高四位低四位交换 ,A 为 F5HMOVDPTR,#0 03 0H循环程序: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,不为零跳转MO VA,R0
4、 ; 所以当 C 等于零时 ,将M O V30 H,#10HMOV31 H, #4 BHMOVR0, #30HMO VR1, #31HMO VA, R0PAN 0:C ;进位位清零C LR40H , R 1 ;3 0 H与30H得内容互换M OVR0,40HM OVR 1,APA N0:NOPEND2、编程完成:单片机内部 RA M40H4F H置初值 A 0 H4FH得内容传送到外部 RAM中得2000H 2 00 F H单元,在把外部RA M中得2 0 00H200 F H单元得内容传送到单片机内部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 口控制、实验目得1)掌握定时器 /计数器、中断初始化程序设计得方法;2) 掌握定时 /计数器方式 2 得编程方法;(3)掌握中断得编程方法 ;
6、(4)掌握使用单片机P1 口与P3 口做I/O输出,各参数得 配置.、实验任务完成在每隔5 0 MS/ 1 S下接在P1 口得八个发光二极管循环亮灭程序设计与调试。要求 : 1 、选择定时器 T0 方式一定时,中断方式产生50 M S,使P1 口得八个发光二极管循环亮灭。2、用定时器与计数器得方式,使 T0 工作定时产生5 OMS,使T1工作与计数器,计数10次,每次T 0溢出后从P3、0给T 1端P3、5个脉冲。1 )用定时器定时,计数器计数 ,当 50 ms 到来时,取反 P3、0让P3、0 口能够输出一个周期为 100 m s得脉冲,通过外接导线到 P3、 5,则计数器就有了外部脉冲得信
7、号,而计数器就是在下降沿时计数, 所以应该让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、实验目得:(1) 掌握8051单片机与8 1 55得接口方法(2)掌握ke il c 5 1集成开发环境在硬件仿真条件下 各参数得设置;(3) 掌握软件延时与定时器中断延时得编程方法.二、实验内容画出实验电路图:肇-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;设定 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 转换、实验目得 :(1 )掌握并行A/D芯片A D C08 0 9与单片机得接口方法(2) 了解AD C 080 9芯片得性能3)通过实验了解单片机实现数据采集得方法。二、实验内容 :画出电路图 :匸 二】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;/指向线性表得第一个节点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、创建线性表,给定长度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、返回线性表得当前长度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、判断某个元素就是否就是线性表元素,如果就是,返回这个元素第一次在线性表中岀现得位置,如果不就是返回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;? /如果没有找到相应得元素,返回-1 ;? re tur n 0 ;/8、返回某个元素得前驱元素(如果这个元素就是第一个,则提示这就是第一个元素)/1、如果这个元素不就是线性表元素,返回一1/ /2
16、、如果这个元素就是线性表第一个元素,返回0,提示第一个元素没有前驱元素E1 emTy pe PriorElem(struct List *L1,ElemTy pee)/ /判断这个元素就是否就是线性表元素,如果就是返回它得第一个位置/调用Is E lem函数,并将结果返回给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(这个元素就是第一个元素,没有前驱元素);retu r n 0;else/返回e元素得前驱元素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)/调用IsEl em函/ /判断这个元素就是否就是线性表元素,如果就是返回它得第一个位置数,并将结果返回给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、创建一-InitList(struct LiIn it L ist(&L1,i te m p);pr i n tf(请输入线性表得值,不能超过4个,以9 1 1结束,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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度板材采购供应合同范本
- 二零二五年办公设备专业维修与保养服务合同
- 二零二五年度商业综合体场地调研与运营合同
- 二零二五年度电子产品进出口贸易合同模板
- 二零二五年度专业安保团队保安员劳动合同范本
- 2025版信息技术测试加工综合服务合同
- 2025版补偿贸易与智能电网建设合作协议
- 2025版标准临时休闲设施租赁合同范本发布
- 2025版甜品店股份合作项目合同书
- 二零二五年度消防安全技术服务与培训协议
- 会务工作人员培训课件
- 会务服务培训课件
- 股权质押项目交易方案
- 江河治理与防洪工程课件
- 网络安全知识培训资料
- 2025年下半年中小学教师资格考试题库带答案
- 同业培训课件
- 中试平台运营管理制度
- 2025年江苏省高考化学试卷真题(含答案详解)
- 2025年沪科版八年级(初二)下学期物理期末考试模拟测试卷02
- DB13T 1347-2010 城镇居住区绿地规划设计规范
评论
0/150
提交评论