单片机实验2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1单片微型计算机原理、应用及接口技术实验报告得分:年级专业:测控1303班学生姓名/学号:崔振振/201323030325评阅教师:提交时间:2015—2016学年第1学期2单片机实验1汇编语言程序设计实验----存储器块清零或赋值一.实验目的1熟悉存储器的读写方法,熟悉51汇编语言结构。2熟悉循环结构程序的编写。3熟悉编程环境和程序的调试。二.实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。例如将4000H开始的100个字节内容清零或全部赋值为33H。三.实验仪器微机、WAVE6000编程环境软件,(单片机实验箱)仿真器--仿真器设置-Lab6000通用微控制器MCS51实验8031√使用伟福软件模拟器勾上四、实验内容及步骤1、运行WAVE双击“WAVE”图标,进入仿真调试环境。最上行为提示行:伟福6000软件模拟器(8***)[C:\WAVE\SAMPLES\***.PRJ]-[***-C:\WAVE\SAMPLES\***.ASM],其中,8***为要仿真的芯片,后面的.PRJ文件是你要调试的项目,最后一项是录入的源程序。(如果有项目文件,请点击菜单文件-关闭项目)2、仿真器设置使用语言设置:点击“仿真器——仿真器设置”仿真器设置:点击“仿真器——仿真器设置——语言”,选择“伟福汇编器”“混合十、十六进制”;点击仿真器设置下的“仿真器”,选择S51/S、POD8X5X、8751(或AT89C51);在“使用伟福软件模拟器”选项上打“√”,点击“好”。完成软件模拟仿真器环境设置。3、程序录入完成下列程序的录入(SY1.ASM)。(注意:录入源程序必须使用西文输入法)录入步骤为:点击“文件”——点击“新建文件”,则显示器打开源程序录入窗口,文件名默认为NONAME1;将SY1.ASM录入并点击“文件”———点击“保存文件”。特别注意:保存文件时必须加上扩展名“.ASM”,并记录保存的文件夹路径。建立项目,点击新建项目,选择刚才新建的文件,下一步可不选择,然后填写项目名字参考程序:Blockequ4000hmovdptr,#Block;起始地址movr0,#10;清10个字节mova,#33h;Loop:movx@dptr,aincdptr;指向下一个地址djnzr0,Loop;记数减一ljmp$3end4、对录入的源程序SY1.ASM进行编译编译步骤为:点击“项目———全部编译”若编译完成,在左下角的“信息窗口”将显示生成两个文件SY1.HEX和SY1.BIN。若源程序在格式上有错误,则在“信息窗口”中出现错误提示,请检查源程序,修改后再进行编译,直至编译成功。窗口最下一行显示:执行时间和PC、DPTR、A、PSW、SP的当前值。5、窗口介绍与练习(1)、左边窗口:为“项目窗口”和“观察窗口”:Project:项目窗口;REG:工作寄存器和部分特殊功能寄存器窗口。SFR:51系列单片机特殊功能寄存器窗口。另:此窗口最右边显示的是某个特殊功能寄存器(点击选中左边的某个寄存器)的位及对应的二进制的值。(2)、左下角为“信息窗口”。(3)、右下角为CODE(程序存储器)窗口和XDATA(片外数据存储器)窗口。(4)、点击主菜单的“窗口——CPU窗口”,在右部窗口显示PC值、机器码和源程序。(5)、点击主菜单的“窗口——数据窗口——DATA”:显示片内RAM窗口。6、调试程序点击“执行——复位”:使程序指针指向第一条指令(CPU窗口指向0000H)点击“执行——单步”:使程序单步执行。7、观察寄存器单元中的内容:点击窗口——数据窗口-DATA:可以观看片内RAM00H到FFH中的内容,点击窗口——数据窗口-CODE:可以观看程序存储器0000H——FFFFH中的机器码。点击窗口——数据窗口——XDATA:可以观看片外RAM数据0000H—FFFFH点击窗口——数据窗口——DATA:可以观看RAM数据00H—FFH参考程序与流程图实验心得:通过实验能够让我更了解单片机内部工作的原理,能够更深一层次的帮助我理解各个语句命令的功能4单片机实验2存储块移动一.实验目的1熟悉51汇编语言程序结构。2熟悉循环结构程序的编写,进一步熟悉指令系统。3熟悉编程环境和程序的调试。二.实验内容将指定源地址(3000H)和长度(100字节)的存储块移动到目的地址(4000H)。三.实验步骤同实验一项目文件建立过程,然后录入代码四.代码内容movr0,#30hmovr1,#00hmovr2,#40hmovr3,#00hmovr7,#10Loop:movdph,r0movdpl,r1movxa,@dptrmovdph,r2movdpl,r3movx@dptr,aincr1incr3djnzr7,Loopljmp$实验心得:试验中当时挺迷惑dph和dpl的,最终查书才知道是dptr的另一种表达方式,从这可以看出有时候实验是检验自己学习不足的好方法,从而加深对本质的理解5单片机实验3数据排序一.实验目的1了解数据排序的常用算法,掌握冒泡算法。2进一步熟悉编程环境和调试方法。3熟悉汇编程序设计。二.实验内容将50H开始的10个随机数按从小到大的顺序排列。三.实验仪器微机、WAVE6000编程环境试验中由于上电后数据都一样,所以需要手动修改50H后10个数据(要排序的数)方法是:窗口---数据窗口---DATA找到50H开始的10个2位16进制数,双击,修改其数值如(6,2,4,9,3,7,1,5,8,0)之后编译(下载),单步执行,查看排序执行过程四.实验步骤:同实验一,值得注意的地方就是修改数据参考程序:Sizeequ10;数据个数Arrayequ50h;数据起始地址Changeequ0;交换标志Sort:movr0,#Arraymovr7,#Size-1clrChangeGoon:mova,@r0movr2,aincr0movB,@r0cjnea,B,NotEqualsjmpNextNotEqual:jcNext;前小后大,不交换setbChange;前大后小,置交换标志xcha,@r0;交换decr0xcha,@r0incr0Next:djnzr7,GoonjbChange,Sortljmp$end实验心得:其实有时候挺疑惑伪代码到底是干什么的,因为程序在执行中,不像c语言一样调用子函数能够让人很理解,但究其最终的的过程,还是和c语言是一样的,具有同样的思想6单片机实验4P1口输入输出实验一.实验目的1.熟悉P1口的功能。2.熟悉延时子程序或定时中断程序的编写和使用。3.初步熟悉单片机软硬件设计方法。二.实验内容(两内容分开做)注意:硬件实验小实验箱的仿真器设置:选择仿真器选择仿真头选择CPUG6WPOD5180311.P1口做输出口接八只发光二极管,编写程序,使发光二极管循环亮灭。注意:小实验箱(G2010)的发光二级管LED是低电平亮,高电平灭;大实验箱(LAB6000)的发光二级管LED是高电平点亮,低电平灭。2.P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管。编写程序读取开关状态,将此状态在发光二极管上显示出来。三.实验仪器微机,WAVE6000编程环境、实验箱注意:当P1口用作输入口时,必须先对它置”1”。编程时应注意P1.0,P1.1作为输入时应先置1,才能正确读入值。S0,S1就是实验箱上K0,K1键实验说明1.P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。内容1大实验箱参考程序:Loop:mova,#01hmovr2,#87Output:movP1,arlacallDelaydjnzr2,OutputljmpLoopDelay:movr6,#0movr7,#0DelayLoop:djnzr6,DelayLoopdjnzr7,DelayLoopretend内容2大实验箱参考程序KeyLeftequP1.0KeyRightequP1.1LedLeftequP1.2LedRightequP1.3SETBKeyLeftSETBKeyRightLoop:MOVC,KeyLeftMOVLedLeft,CMOVC,KeyRightMOVLedright,CLJMPLoopEND实验心得:当进行实验时,我一直不明白,为什么可以用OX0000H这样的值赋给dptr单片机就知道是对P0P2操作,P1能不能这样使用呢,在实验中我们看到对单个引脚操作时是直接进行赋值的,但最终还是通过看书得以理解。8实验五计数器实验一.实验目的1熟悉计数器的使用方法。2熟悉计数器的硬件电路连接。3熟悉计数器的软件设计。二.实验内容注意:硬件实验小实验箱的仿真器设置:选择仿真器选择仿真头选择CPUG6WPOD5180318031内部定时计数器0,按计数器模式和工作方式1工作,对P3.4(计数器0计数脉冲输入T0)引脚进行计数。将其计数数值按二进制数用P1口驱动LED灯显示出来。说明实验中内计数器起计数器的作用,外部事件计数冲由P3.4引入定时器T0。单片机在每个榌器周期采样一次输入波形。因此单片机至少需要两个机器周期才能椧到一次跳变。这就要求被采样电平至少维特一个完整的机器周期。以保证电平在变化之前即被采样。同时这就决定了输入波形的率不能超过机器周期。三.实验仪器微机、WAVE6000编程环境,伟福6000实验箱注意:P3.4接单次脉冲实验连线如图:大实验箱单次脉冲程序流程:9程序movTMOD,#00000101b;方式1,记数器movTH0,#0movTL0,#0setbTR0;开始记数Loop:movP1,TL0;将记数结果送P1口ljmpLoopend实验心得:对于程序的过程我没有太多的疑问,能够更好地理解书中概念性的知识。实验六外部中断实验一.实验目的1熟悉外部中断的硬件电路,中断技术的基本使用方法。102熟悉外部中断的软件设计。二.实验内容注意:硬件实验小实验箱的仿真器设置:选择仿真器选择仿真头选择CPUG6WPOD518031利用实验箱上的单脉冲按键和发光二极管实现:用单次脉冲申请中断,在中断服务程序中对输出信号进行翻转(对每当输出一个单次脉冲时(产生低电平一个脉冲),发光二极管(L0)亮灭变化)。三.实验仪器微机、WAVE6000编程环境,实验箱连线:P1.0连接L0INT0连接低电平单次脉冲。实验电路及连线如下:小实验箱低电平脉冲见上页图示。注意中断服务程序(ISR)关键:1保护进入中断时的现场,并在退出中断之前恢复现场;中断重入的设置中断相关寄存器的设置:中断寄存器IE,中断触发罚方式的设置。本例中保护CPU状态寄存器PSW等。2中断程序和子程序的区别。中断程序不是程序调用的,中断发生时,CPU就执行相应中断服务程序。程序流程图:11参考程序:LEDequP1.0LEDBufequ0ljmpStartorg3Interrupt0:pushPSW;保护现场cplLEDBuf;取反LEDmovc,LEDBufmovLED,cpopPSW;恢复现场retiStart:clrLEDBufclrLEDmovTCON,#01h;外部中断0下降沿触发movIE,#81h;打开外部中断允许位(EX0)及总中断允许位(EA)ljmp$end实验心得:刚开始一直在疑惑单片机进入中断是怎样进行的,是通过主函数调用还是怎样执行的,以前一直不明白为什么主函数没有调用但是函数执行了,通过实验知道对于中断服务子函数是不需要通过主函数调用的。

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功