单片机原理与接口技术实验课程题目MCS-51及开发环境的认识学院物理与光电信息工程专业班级光电信息科学与工程学号姓名任课教师吴艳杰2015年5月10日广东工业大学实验报告物理与光电工程学院光电信息专业班成绩评定_______学号姓名教师签名_______预习情况操作情况考勤情况数据处理情况实验一题目MCS-51单片机及其开发环境的认识一、实验目的1)了解MCS-51单片机开发工具;2)了解MCS-51开发软件的功能、运行环境;3)理解汇编语言指令与机器语言指令之间的对应关系;4)掌握在特定仿真开发系统下浏览、修改特殊功能寄存器、RAM单元的方法。二、实验设备与器材电脑、仿真开发软件keiluvision4三、实验内容、过程及要求1.PC机—仿真器—目标板(用户板)的连接认真阅读仿真器使用说明,了解仿真器、仿真头上插座与插头的用途及外形,跳线含义及设置,完成“PC机—仿真器—目标板(用户板)”的连接。不论何种型号的仿真器,一般均提供下列插座(或接口):1)联机通信口目前多数仿真器不带键盘、LED数码显示器,需与PC机配套使用。单片机仿真开发设备联机通信口与PC机串行口(COM1或COM2)相连。2)仿真插座通过仿真电缆将仿真器与仿真头连在一起(有些仿真器、仿真头插座没有防反插设计,连接时务必注意插座、插头方向)。仿真电缆一端与仿真器相连,另一端与仿真头相连。仿真头直接插入用户板上的CPU插座内。3)电源插座通过仿真器上的电源插座给仿真器提供电源,与仿真器电源(作为仿真器附件之一)相连。由于目标板上功耗不确定,因此仿真头一般不给用户提供电源,使用时必须给用户外接工作电源(一般为+5V,具体数值与目标板上元器件工作电压有关,但外接电源电压不得超过5×(1+5%)V,否则可能会损坏单片机应用系统中74系列逻辑电路芯片)。2.仿真软件的安装及操作仿真软件也称为汇编器。仿真器只有在仿真软件的支持下才能完成源程序的编辑(目前多数仿真软件均具有源程序编辑功能)、汇编(编译)、运行及调试。仿真软件功能强弱直接关系到单片机应用系统的开发效率。一套功能齐全、性能良好、符合用户操作习惯的单片机开发系统,会使单片机开发项目由难变易、由繁变简、由不可能变可能,收到事半功倍的效果。不同仿真开发软件的功能、操作方式不尽相同,用户只能依据开发商提供的《使用说明书》或《用户指南》来安装和使用仿真开发软件。3.汇编源程序编辑、运行及调试输入、编辑、汇编、运行(连续、单步执行)如下程序段:;变量定义区XVARDATA30HYVARDATA38HP10BITP1.0ORG0000HLJMPMAINORG0100HMAIN:MOVSP,#9FHMOVA,#55HMOVXVAR,AMOVR0,#XVARMOV@R0,#01HINCR0MOV@R0,#02HMOVR1,#YVARMOVA,@R0MOV@R1,APUSHACC;在此处设置断点PUSHPSWMOVA,#0AAHSETBRS0CLRRS1MOVR0,#5AHMOVR1,#0A5HPOPPSWPOPACCINCR1DECR0MOVA,@R0MOV@R1,ACLRP10SETBP1.0CLRP10MOV90H,#00HMOV90H,#55HMOV90H,#0FFMOVP1,#00HMOVP1,#55HMOVP1,#0FFHSJMP$END找出每条指令的机器码,并与教材第3章指令码表对照,指出每一指令的功能、寻址方式、操作书书写形式。在单步执行过程中,每执行一条指令后,观察并记录有关寄存器、内部RAM单元内容变化情况。设置断点后,在连续执行程序,记录30H、31H、38H单元内容;然后执行复位操作,并与复位后的内容进行比较,看复位后内部RAM单元内容是否变化。修改ORG100H指令后的地址,重新汇编,观察程序代码在程序储存器中存放位置是否变化。4.复位期间及复位后有关的引脚电平状态和寄存器初值1)实验前跳线设置复位试验仅使用实验板上的U101、U202、U103、U106、复位电路和时钟电路,与其他元件无关。板上跳线除了JP203设为2-3引脚短路外,其他跳线如JP101~JP107、JP201、JP202、JP204、JP205等一律置为开路状态。2)实验内容及步骤按下复位按钮不放,用逻辑笔或万用表测量并记录各I/O引脚的电平;复位后,再用逻辑笔或万用表测量各I/O引脚的电平;观察复位后各特殊功能寄存器的初值,并与教材第2章表2-5比较。修改特殊功能寄存器、内部RAM及外部RAM单元内容,然后执行复位操作,观察复位后相应单元内容有无变化,以了解复位操作对特殊功能寄存器、内部RAM及外部RAM的影响。注意:由于8XC5X芯片P1~P3口引脚输出级采用准双向输入/输出结构,上拉电阻大,对地短路电流很小,即I/O引脚具有“线与”功能,而P0漏极开路,也具有“线与”功能。因此,在测量I/O引脚电平的操作过程中,即使逻辑笔、万用表的表笔将两根I/O引脚短路也不会损坏I/O口(但不能将I/O引脚与电源VCC短路,因为读者自己分析)。单片机原理与接口技术实验课程题目MCS-51指令系统学院物理与光电信息工程专业班级学号姓名任课教师吴艳杰2015年5月10日广东工业大学实验报告物理与光电工程学院光电信息专业班成绩评定_______学号姓名教师签名_______预习情况操作情况考勤情况数据处理情况实验二题目MCS-51指令系统一、实验目的1)理解MCS-51指令系统中常用指令功能、操作数寻址方式;2)掌握仿真开发软件的使用(包括源程序编辑、编译、执行、调试);3)编辑、编译跑马灯程序二、实验设备与器材电脑、单片机开发板、仿真开发软件keiluvision4三、实验内容、过程及要求1.编译、汇编、执行实现下列程序1)寻址方式MOVR0,#4FH;立即数寻址MOVA,#55H;立即数寻址MOV@R0,A;寄存器寻址MOVR1,4FH;直接寻址MOVA,,@R1;寄存器间接寻址MOVCA,@A+DPTR;变址寻址SETBP1.1;位寻址2)高128字节内部RAM与低字节内部RAM之间的数据传送MOVR0,#80HMOV@R0,#5AHMOV30H,@R0MOV30H,#55HMOV@R0,30H3)外部RAM与内部RAM的数据传送;将内部RAM单元信息送外部RAM单元MOVA,30HMOVDPTR,#0010HMOVX@DPTR,A;将外部RAM单元信息送内部RAM单元MOVDPTR,#0010HMOVXA,@DPTRMOV31H,A4)把存放在储存器中的数表读到内部RAM中MOVDPTR,#TABMOVR0,#30HMOVR1,#00HLOOP:MOVA,R1MOVCA,@A+DPTRMOV@R0,AINCR1INCR0CJNER1,#0AH,LOOPORG1000HTAB:DB:0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H2.掌握在KeilµVision4集成开发环境下汇编程序的调试步骤1调试步骤:1)新建源程序2)将源程序加入项目3)汇编程序,根据提示修改源程序直至汇编通过4)连接程序5)运行程序调试运行:2具体操作:1)单步运行(不跟踪子程序)2)单步运行(跟踪子程序)3)设置断点4)连续运行到断点5)暂停6)连续运行7)处理器复位8)修改寄存器、存储器的数值3.在使用的微机上建立工作目录,将实验的源程序存放在该目录下。注意,目录名和文件名均不要使用中文名。1)在工作目录下输入源程序2)调试程序,掌握用Keil软件调试程序的一般方法和各种窗口的使用。3)若单片机工作频率为12MHz,记录延迟子程序DELAY的执行时间。4)记录程序的前5条指令在程序存储器空间的存储地址和相应的机器码3.编辑、编译跑马灯程序1)将单片机对应管脚连接到流水灯接口2)在keil中建立新工程3)建立新asm汇编文本并写入下列程序ORG0000HLJMPSTARTORG30HSTART:MOVA,#0FEHLOOP:MOVP1,ARLALCALLDELAYLJMPLOOPDELAY:MOVR7,#250D1:MOVR6,#250D2:DJNZR6,D2DJNZR7,D1RETEND4)将以上asm添加进工程并编译生成hex文件5)通过烧录软件将hex文件烧录进入芯片附图:单片机原理与接口技术实验课程题目LED显示实验与定时中断学院物理与光电信息工程专业班级学号姓名任课教师吴艳杰2015年5月10日广东工业大学实验报告物理与光电工程学院光电信息专业班成绩评定_______学号姓名教师签名_______预习情况操作情况考勤情况数据处理情况实验三题目LED显示实验与定时中断一、实验目的(1)理解LED数码管静态显示驱动电路的组成、工作原理及LED限流电阻R的取值依据。(2)掌握中断初始化的方法与定时中断服务程序的编写规则。(3)理解LED动态显示驱动电路的组成、工作原理及其驱动程序的编写方法。(4)初步理解事件驱动程序的设计方法。二、实验设备与器材仿真器及其附件、数字万用表、实验电路板三、实验内容、过程及要求1.测试实验电路在特殊功能寄存器窗口内,将P0口寄存器置为00,如果LED200、LED201数码显示器显示‘8’,说明电路连接正确。用数字万用表分别测出限流电阻R200~R207之一两端的压降V、T201集电极与LED数码管任一笔段之间的电压,然后计算计算出LED工作电流I,并与实际值(V/R)比较。2.利用定时中断功能循环显示利用定时中断功能循环显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F等16个数码,接通电源,先将JP205置为1-2、2-3引脚开路状态,SWDIP置为OFF,即只在LED200H数码管上显示。假设晶振频率为11.0592MHz,则“12时钟/机器周期”,机器周期约为1.085μs,即使定时器工作在方式1状态,最长定时时间为71111μs,对于1s以上超长定时,需结合软件计数和定时中断方式实现。例如:利用定时器T0每隔20ms中断一次,对中断进行计数,即可获得所需定时时间,即定时器初值为47104(计算所得)即B800H,因此TH0=0B8H,TL0=00H3.建立工程,输入以下代码TCOCONDATA40H;定时器溢出计数单元DISPCDATA41H;显示数码记数单位TIME1EQU50;溢出次数ORG0000HLJMPMAINORG000BHLJMPCTC0;定时/计数器T0中断服务程序入口地址ORG0050H;主程序开始PROCMAINMAIN:MOVSP,#5HMOVSP,#ODFHMOVDPTR,#8000HMOVA,#0FFFHMOVX@DPTR,A;复位后,将08H~0FF内部RAM单元清零MOVR0,#08HLOOP1:MOV@R0,#0INCR0CJNER0,#0LOOP1;初始化定时器MOVTH0,#0B8HMOVTL0,#00H;初值0B800H送入定时器T0ANLTMOD,#0F0HORLTMOD,#00000001B;定时器T0工作在方式一:C/T位为0,定时状态:软件启动;初始化触发器SETBET0;允许定时器T0中断SETBEA;开中断SETBTR0;启动T0MOVTCOCON,#TIME1CLRAMOVDPTR,#LEDTABMOVCA,@A+DPTR;取显示数码对应字模MOVP0,A;字模送入P0口SJMP$;虚拟主程序,等待中断END;定时/计数器T0服务中断程序PR0CCTC0CTC0:MOVTL0,#00H;由于T0工作在方式一,需重新装初值MOVTH0,#0B08H;减少定时误差,进行立即重装PUSSPSWPUSHACCCLRRS0SETBRS1;切换工作寄存器DJNZTCOCON,EXIT;溢出次数减一,不为零跳转MOVTCOCON,#TIME1INCDISPC;数码计数器加1,显示下一个数码MOVA,DISPCJNEA,#10,NEXT1NEXT1:JCNEXT2;显示数码已经大于F,再从0开始显示MOVD