ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:204.53KB ,
资源ID:10097205      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10097205.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机原理实验.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机原理实验.docx

1、单片机原理实验单片机原理及应用系别:班级:自动化142姓名: 学号:实验一:熟悉keil c51集成开发环境及常用指令、实验目的:(1) 了解80C51典型应用系统的开发过程, 熟悉keil c51集成开发环境;(2)掌握单步执行程序,查看专用寄存器和单片机 RAM的执行结果;(3)掌握80C51的寻址方式及常用指令的使用方法。、实验内容(1 )基本指令练习;(2 )数据转送(循环方式) 三、思考题1、分别执行以下程序,在调试状态下观察有关单元的内容顺序执行的程序:ORG 00HSJMP MAINORG 30HMAIN:MOVSP ,#60HMOVR0,#40HMOVR1,#30HMOV30H

2、,#50HA,#40HMOVINC循环程序:XUNHUAN1:MOVR0,#30H;要赋值的首地址MOVR2,#10H;一共赋值16次CLRA ;从0开始赋值L00P1:MOVRO,A ;赋值16次后停止赋值INCA ; 32H=2, 37H=7,3BH=0B,3FH=0FINCR0DJNZR2,LO OP1XUNHUAN2:MOVR0,#30HMOVR1,#40HMOVR2,#10HLOOP2:MOVA,R0 ;从40H开始一直赋值MOVR1,A ;赋的值从30H开始INCR0 ;就是 40H=30H , 41H=31HINCR1 ; 一直到 R2=0DJNZR2,L00P2 ;就是 4FH

3、=3FH汇编程序3:P ANDUAN1:MOV30H,#10HMOV31H,#4BHMOVR0,#30HMOVR1,#31HP AN0:MOVA,R0CLRC ;进位位清零SUBBA,R1 ;带进位位的加法JNCPAN1 ;判断进位位 C,不为零跳转MOVA,R0 ;所以当C等于零时,将MOV40H,R1 ; 30H和30H的内容互换MOVR0,40HMOVR1,AP AN0:NOPEND2、编程完成:单片机内部 RAM40H4FH 置初值 A0H4FHRAM中的2000H200FH 单元的内容传送到单片机内部RAM的50H5FH单元。汇编代码:ORG 00HAJMP MAINORG 30HM

4、AIN:LOOP1:MOV R0,AMOVX DP TR,AINCDPTRINCROINCADJNZR1,LO OP1MOVR0,#50HMOVR1,#16MOVDP TR,#2000HLOOP2:MOVXA,D PTRMOVR0,AINCDPTRINCR0DJNZR1,LO OP2END中断、定时器与 I/O 口控制、实验目的(2)掌握定时/计数器方式2的编程方法;(3)掌握中断的编程方法;(4)掌握使用单片机 P1 口和P3 口做I/O输出,各参数的 配置。二、实验任务完成在每隔50MS/1S下接在P1 口的八个发光二极管循环亮灭程序设计和调试。使P1 口的八个发光二极管循环亮灭。2、用定

5、时器与计数器的方式,使 TO工作定时产生50MS,使T1工作与计数器,计数 10次,每次TO溢出后从P3.0给T1端P3.5 一个脉冲。(1)用定时器定时,计数器计数,当 50ms到来时,取反(2)是在下降沿时计数,所以应该让 P3.0 开始就输出低电平。A t A电路图如下:i-l:It?IPIJ-P1.4瞰 51 FPit?P3.(2 )定时器方式一和方式二最大定时间分别是:方式一:65.536ms( 2八13微秒)方式二:0.256ms(2八8微秒)实验三:扩展并行接口 8155、实验目的:(1) 掌握8051单片机与8155的接口方法(3)掌握keil c51集成开发环境在硬件仿真条件

6、下各参数的设置;(4)掌握软件延时和定时器中断延时的编程方法。、实验内容画出实验电路图:汇编程序:MAIN:MOV SP ,#60HMOV TMOD ,#01HMOV TH0 ,#3CHMOV A ,#0FEHSETB EASETB ET0ORG0000HLJMPMAINORG000BHLJMPTIMEOSJMP $TIME0:MOV TH0 ,#3CHMOV TL0 ,0B0HRL ARETIEND实验四:并行A/D转换、实验目的:(1 )掌握并行A/D芯片ADC0809与单片机的接口方法(2) 了解ADC0809芯片的性能;(3 )通过实验了解单片机实现数据采集的方法。二、实验内容: 画出

7、电路图:.-.F J .3珂二包垦A L寸上I亠-u二豈殳订匕,二丄二- ,-r-T-f-r -rbcs 接 P2.7 贝y按图中7FF87FFF模拟输入通道的地址值 INTOINT7 :#in eludestdio.htyp edefint ElemType;typ edefint Status;structListElemType *list1;/指向线性表的第一个节点intlen gth;/线性表的实际长度intlistSize;/线性表的最大长度 324;/附加1:给线性表增加空间StatusAgai nMalloc(structList *L1)ElemT ype *p(ElemTy

8、 pe *)realloc(L1-list1,(L1-listSize+ 1)* sizeof (ElemType);if(!p)printf(存储空间分配失败!);exit(1);L1-list1p; /*使list1指向新线性表空间*/L1-listSize=L1-listSize+ 1; /*把线性空间大小修改为新的长度 */附加2:遍历线性表元素StatusTraverse(structList *L1)i;intfor (i0;ile ngth;i+)printf( %d丄1-list1i);/1.创建线性表,给定长度StatusIn itList(structList *L1,i

9、nt ms)if(mslength != 0)return 1;elsereturn 0;/5.返回线性表的当前长度int ListLe ngth(structList *L1)return L1-le ngth;6.返回第i个元素的值ElemT ypeGetElem(struct List *L1, int i)printf(查找的位置超岀线性表的范围!);/退岀 exit(1);else/返回第pos个元素的值 return L1-list1i-1;/7.判断某个元素是否是线性表元素,如果是,返回这个元素第一次在线性表中岀现的位置,如果不是 返回0int IsElem( struct Li

10、st *L1,ElemType e)/必须要先定义,后使用!int i;for (i = 0;ivL1-length;i+)if (L1-list1i=e)/因为i是从0,开始,所有返回i+1return i + 1; /如果没有找到相应的元素,返回-1 ;return 0;/8.返回某个元素的前驱元素(如果这个元素是第一个,则提示这是第一个元素/1、如果这个元素不是线性表元素,返回 -1/2、如果这个元素是线性表第一个元素,返回 0,提示第一个元素没有前驱元素ElemT ype P riorElem(struct List *L1,ElemT ype e)/调用IsElem函数,并将结/判断

11、这个元素是否是线性表元素,如果是返回它的第一个位置 果返回给temp变量int temp = lsElem(L1,e);pri ntf(这个元素不是线性表的元素);return -1;printf(这个元素是第一个元素,没有前驱元素 );return 0;else/返回e元素的前驱元素return L1-list1tem p-2;/9.返回某个元素的后继元素(如果这个元素是最后一个,则提示这是最后一个元素/1、如果这个元素不是线性表元素,返回 -1/2、如果这个元素是线性表的最后一个元素,返回 0,提示最后一个元素没有后继元素ElemTy pe NextElem(struct List *L1

12、,ElemTy pe e)/调用IsElem函数,并将/判断这个元素是否是线性表元素,如果是返回它的第一个位置 结果返回给temp变量int temp = IsElem(L1,e);pri ntf(这个元素不是线性表的元素);return -1;else if (te mpL1-le ngth)pri ntf(这个元素是最后一个元素,没有后继元素 );return 0;else/返回e元素的后继元素return L1-list1tem p;10.在线性表的指定位置i之前插入元素eStatus ListI nsert(struct List *L1, int i,ElemType e)int t

13、emp;if(i L1-le ngth + 1)printf( i越界,不能插入);exit(1);/如果线性表的长度等于最大长度,增加空间if(L1-le ngth = L1-listSize)/每次增加1个ElemType单位的个空间Agai nMalloc(L1);for (temp = (L1-length+1);temp = i;temp-)L1-list1tem p = L1-list1te mp-1;/在i-1的位置插入新元素eL1-list1i-1 = e;/长度加1L1-le ngth = L1-le ngth +1;return 0;/11.删除线性表中指定位置i的元素e,

14、并将e返回List *L1,i nt i)ElemType ListDelete(structint temp;exit(1);/将第i个位置的元素返回给ee = L1-list1i-1;/将第i+1个元素的值赋值给第i个位置L1-list1i-1L1-list1i;/将长度减去1L1-le ngthL1-le ngth1;return e;int mai n()intite mp0;intanytemp = 0;int i1;int listle ngth0;ElemT ypee;struct ListL1;printf(线性表的基本操作! n);scanf( %d,&itemp);/1.创

15、建-InitList(struct List *L1,int ms)Ini tList(&L1,item p);printf(请输入线性表的值,不能超过 %d个,以911结束,911不算长度:n ,itemp);for (i = 1;i = itemp;i+)scanf( %d,&e);/这里不能是exit , exit直接退岀了所有程序,所以是 breakif (e = 911)break;/10.在线性表指定位置i之前插入元素eList In sert(&L1,i,e);/5.返回长度-ListLength(struct List *L1)listle ngth = ListLe ngth

16、(&L1);printf(目前,线性表的长度为:%dn,listlength);/遍历线性表 printf(目前,线性表的值为:n);/遍历,在Traverse中输岀Traverse(&L1);/6.返回第 i 个元素值-GetElem(struct List *L1,int i)/输入时,要在这里赋值地址“ &scanf( %d,&anytemp);pri ntf(第d个位置元素的对应的元素值为:%dn ,an yte mp ,GetElem(&L1,a nytem p);List *L1,ElemTy pe e)/8.返回某个元素的前驱-PriorElem(structprintf(返回线

17、性表元素的前驱,请输入线性表元素: n);scanf( %d,&e);pri ntf(元素 4的前驱元素是:%dn ,e, PriorElem(&L1,e);/9.返回某个元素的后继-NextElem(struct List *L1,ElemType e)pri ntf(返回线性表元素的后继,请输入线性表元素: n);scanf( %d,&e);pri ntf(元素 4的后继元素是:dn ,e,NextElem(&L1,e);11.删除线性表指定位置i的元素,将结果e返回-ListDelete(structList *L1,i nt i)listle ngthListLe ngth(&L1);printf(目前,线性表的长度为:%dn,listlength);pri ntf(请输入要删除第几个位置的元素:n “);scanf( %d,&i);ListDelete(&L1,i);listle ngth = ListLe ngth(&L1);printf(目前,线性表的长度为:%dn,listlength);printf(目前,线性表的值为:n);/遍历,在Traverse中输岀Traverse(&L1);return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1