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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

杭电单片机实验报告一.docx

1、杭电单片机实验报告一单片机原理与应用技术实验报告实验题目: Keil软件使用及汇编语言编程 姓名: * * * 学号: * 实验日期: 2017.4.15 指导教师: 高惠芳 1.Keil软件的简介和使用1.1 Keil uVision4的简介最新的Keil uVision4 IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。uVision4在Vision3 IDE的基础上,增加了更多大众化的功能:多显示器和灵活的窗口管理系统 系统浏览器窗口的显示设备外设寄存器信息 调试还原视图创建并保存多

2、个调试窗口布局 多项目工作区简化与众多的项目1.2 Keil uVision4的使用,打开Keil 4应用软件,其初始界面如下:、点击菜单项“Project”下的“New uVisionProject”,如下图所示。、选择文件夹,并输入工程名。、输入工程名并保存后会弹出选择芯片界面、这里我们选择Atmel公司的AT89S51单片机,选择后,点击“OK”,即创建完工程。、单击点击下图所示圆圈圈起的部分建立一个文件。也可以点击菜单“File”下面的“NEW”来新建一个文件。、之后输入程序的代码后,单击FileSave as,根据代码语言的格类型,可保存为后缀为.asm(汇编语言)和.c(C语言)的

3、文件。、单击“Target1”前面的“+”号,并用鼠标右键点击“SourceGroup1”,界面如图10所示。在用鼠标左键点击“Add Files to Group Source Group1.”即可把刚刚的代码文件添加到工程。最后点击左上角的编译按钮即可完成编译。之后即可进行程序的调试了。2.实验内容 使用汇编语言完成课本P95的(2)、(5)、(8)三道题以及一个跑马灯程序。2.1 P95-(2) 设内部RAM 5AH单元中有一个变量X,请编写计算下述函数式的程序,结果存入5BH。设计思路:显然本题要使用分支语句,不妨使用JZ, JNB等,并通过X-10,X-15综合判断X处于哪个区间。代

4、码如下:ORG 0000HJMP STARTORG 1000HSTART: MOV A, 5AH ;直接寻址,将5AH地址上的数据X存入寄存器AMOV B, 5AH ;直接寻址,将5AH地址上的数据X再一次存入寄存器BSUBB A, #0FH ;将A中数据X先减去15,初步判断X所属区间JNB ACC.7, DO3 ;若A的第7位不为1(X=15)则程序跳到DO3,否则顺序执行MOV A, 5AH ;若X比15小,再次将X存入累加器A中CLR C ;清零进位CSUBB A, #0AH ;将X减去10JNB ACC.7, DO1 ;若A的第7位不为1,(X=10),跳到DO1JMP DO2 ;剩

5、下的情况就是:X10,跳到DO2DO1:MOV A, 5AH ;10=X=15MUL AB ;相当于X*X,结果的低八位存入AADD A, #08H ;即X*X+8AMOV 5BH,A ;即X*X+8BJMP DONE ;跳到程序结束段DO2:MOV A,5AH ;X10MUL AB ;X*XACLR C ;进位C清零SUBB A, #01H ; X*X-1AMOV 5BH,A ; X*X-1BJMP DONE ;跳到程序结束段DO3:MOV A, #29H ;41AMOV 5BH, A ;41BJMP DONE ;跳到程序结束段 DONE:SJMP $END程序截图:程序结果:、当X=12时

6、,Y=12*12+8=152、当X=8时,Y=8*8-1=63、当X=18时,Y=412.2 P95-(5) 设有两个长度均为15的数组,分别存放在以2000H和2100H为首的存储区中,试编程求其对应项之和,结果存放到以2200H为首的存储区中。 设计思路:本题需要用到LOOP进行15次的求和及存放。并且由于地址过高,应采用DPTR进行访问。代码如下:ORG 0000HJMP STARTORG 1000HSTART:MOV R1,#00H ;求和寄存器,初始清零MOV R2,#0FH ;循环次数为15次MOV DPL,#00H ;类似段内偏移地址地址LOOP: MOV DPH,#20H ;D

7、PTR的高八位,可理解为段地址,这里先指向第一个数组的首 ;地址2000HMOVX A,DPTR ;A(DPTR)MOV R1,A ;R1(A)INC DPH ;DPH改成指向高8位是21H的存储区MOVX A,DPTR ;A(DPTR)ADD A,R1 ;两数组对应项求和INC DPH ;DPH改成指向高8位是22H的存储区MOVX DPTR,A ;求和结果送入上述地址区INC DPL ;低8位地址自增DJNZ R2,LOOP ;若循环次数-1后不为0,则跳转到LOOP处进行循环END程序截图:程序结果:首先分别在2000H和2100H存入15数,这里我都存入了1,2,3,14,15。结果得

8、到:2.3 P95-(8) 将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片内RAM 30H60H中,并将原数据块区域全部清零。 设计思路:显然还是得用LOOP进行搬迁,且每搬完一个就得清零原地址数据,并用DPTR访问片外存储器。代码如下:ORG 0000HJMP STARTORG 1000HSTART: MOV R1,#30 ;用R1保存循环次数 30次MOV R0,#30H ;将地址30H存入R0中 MOV DPTR,#1000H ;将1000H这个地址存入DPTR中LOOP: MOVX A,DPTR ;寄存器间接寻址。A(DPTR)MOV R0,A ;(R0)ACLR A

9、 ;A0MOVX DPTR, A ;原地址数据清零INC R0 ;数据的写入地址 自增INC DPTR ;数据的读取地址 自增DJNZ R1,LOOP ;若循环次数-1不为0,则跳转到LOOP处进行循环END程序截图:程序结果:先在片外存储器1000H开始存入数据接下来开始将数据搬迁到片内30H开始的区域中且原地址数据依次被清零2.4 P95-(8) 题目:设计一个6+50=56ms跑马灯,并在P1端口显示。设计思路:首先我得设计一个56ms的延迟。这里已知当单片机系统的振荡频率为fosc=12MHz时,一个机器周期为1T=1us;执行一条DJNZ指令需要2个机器周期,执行一条NOP需要一个机

10、器周期,执行一条MOV也是一个机器周期。 接着,再通过循环左移指令RL A实现跑马等效果。代码如下:ORG 0000HJMP START ORG 0800HSTART:MOV A,#01H ;即将0000 0001存入A,后面会将最右边1循环左移。 SJMP DELAY ;进入延时段起点LOOP:RL A ;从此处开始跑马灯模块。先将A循环左移MOV P1,A ;将A的值赋给端口P1的8位SJMP DELAY ;从56ms的延迟程序段再跑一遍DELAY: MOV R7, #224 ;设置外循环次数224次DLY1: MOV R6, #123 ;设置内循环次数123次DLY2: DJNZ R6,

11、 DLY2 NOPDJNZ R7, DLY1 ;延时程序段结束,总用时(123*2+2+1+1)T*224T+2T+1T=56msSJMP LOOPSJMPEND程序截图:程序结果:初始状态执行一次56ms延迟后左移再一次56ms延迟后左移Proteus仿真截图:3.实验心得 通过以上4个实验,我学会了KEIL软件的使用,即创建工程,创建并添加项目,编译与调试等等。更重要的是学习了很多单片机编程方面的只是。比如用汇编语言实现数据的传送、运算、移位等,同时还有一些简单的程序设计,如分支程序、循环程序等等。 这些实验使我更好的从底层了解单片机系统的运行机制,尤其的汇编语言的使用更是提高了我对各类端口、存储器的运用水平。另一方面我也感受到汇编语言虽然十分直接,但面对大型的程序项目就显得力不从心,所以这就体现了后期实验使用C语言编写的简便性。 我想,通过更多的运用各类指令及对更多端口、元件的综合使用,我会对变得越来越熟练,且能不断地提升自己的逻辑思维。

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

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