




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,MCS-51系列单片机指令学习,一、实验目的MCS-51系列单片机指令系统共有111条汇编语言指令,这些指令按功能的不同可分为五类:29条数据传送类指令,24条算术运算类指令,24条逻辑运算类指令,17条控制转移类指令和17条位操作类指令。本实验通过单步执行程序中各类指令,来进一步学习和理解各类主要指令的功能,掌握指令的用法。通过实验掌握Keil软件的使用方法。,二、实验准备1、启动稳压电源,确认输出电压正常。2、将微机实验开发系统与直流稳压电源连接好。三、实验内容将以下各部分实验中所给出的程序的指令机器代码查出,并输入到单片机系统中,然后从程序给定地址开始单步执行,观察并记录程序所指定的内容。,(一)、数据传送与算术运算1、体会MOVRn,direct指令的功能和用法,取n=0,direct=40H。程序如下:ORG1000HSUBROUT:MOV40H,#0FH;0FH送入RAM40H单元中MOVR0,40H;40H单元内容送R0MOVA,R0;R0内容送累加器AHERE:SJMPHERE;ENDA=(),40H=(),R0=(),2、体会MOVRi,#DATA指令的功能和用法,选择DATA=0FH,i=0。程序如下:ORG1010HSUBR:MOVR0,#50H;R050HMOVR0,#0FH;(R0)0FHMOVA,50H;A(50H)HERE:SJMPHERE;ENDR0=(),50H=(),A=(),3、体会查表指令MOVCA,A+DPTR,MOVCA,A+PC的功能和用法。设定40H单元中的内容为09之间的一个整数,用查表的方法求出它的平方值(BCD码),结果存入41H单元。(1)、利用MOVCA,A+DPTR指令查表程序如下:ORG1020HSTART:MOVDPTR,#SQR;MOVA,40H;MOVCA,A+DPTR;MOV41H,A;HERE:SJMPHERE;SQR:DB00H,01H,04H,09H,16HDB25H,36H,49H,64H,81HEND,(2)、利用MOVCA,A+PC指令查表程序如下:ORG1050HSTART:MOVA,40H;ADDA,#04H;MOVCA,A+PC;MOV41H,A;HERE:SJMPHERE;SQR:DB00H,01H,04H,09H,16HDB25H,36H,49H,64H,81HEND,步骤:1)、仔细阅读程序并进行手工汇编。2)、将程序输入单片机实验开发系统。3)、建立平方值表。4)、在40H单元键入0009之间的随机整数,分别执行上述两个程序,检查41H单元的值。41H=(),41H=()4、用加法指令ADDA,R0实现两数相加,如52H+FCH。程序如下:ORG1100HSUBROUT:MOVA,#52H;A52HMOVR0,#0FCH;R00FCHADDA,R0;A(A)+(R0),HERE:SJMPHERE;ENDA=(),PSW=()用带进位加法指令ADDCA,R0实现52H与0CH之和。程序如下:ORG1150HSUBROUT:MOVA,#52H;MOVR0,#0CH;SETBC;ADDCA,R0;HERE:SJMPHERE;END,执行后A=(),PSW=()若将SETBC指令改为CLRC执行后A=(),PSW=()5、体会十进制调整指令DAA的功能和用法程序如下:ORG1200HSUBROUT:MOVA,#65H;ADDA,#58H;DAA;HERE:SJMPHERE;END,执行后A=(),PSW=()若将DAA指令用NOP代替,则执行后A=(),PSW=()6、用乘法指令MULAB进行0FFH*03H程序如下:ORG1250HSUBROUT:MOVA,#0FFH;MOVB,#03H;MULAB;NOP;NOP;HERE:SJMPHEREEND,执行后A=(),B=(),将2个空操作指令换成MOVA,B执行后A=(),B=(),最后0FFH*03H=(),是否等于B与A的内容的积()。(二)、逻辑运算和循环指令1、逻辑“与”指令实验。程序如下:ORG1300HSUBROUT:MOVA,#0FBH;ANLA,#0FH;HERE:SJMPHERE;END执行后A=0BH,实验结果是否正确?“与”指令有何作用?,2、逻辑“或”指令实验。程序如下:ORG1400HSUBROUT:MOVR1,#0FH;MOVA,#33H;ORLA,R1;HERE:SJMPHERE;END执行后A=(),“或”指令有何作用?,3、逻辑“异或”指令实验。程序如下:ORG1500HSUBROUT:MOVA,#55H;MOV40H,#00H;XRLA,40H;HERE:SJMPHERE;END执行后A=(),将MOV40H,#00H改为MOV40H,#55H,执行后A=()。,4、利用左移指令实现乘2运算。程序如下:ORG1600HSUBROUT:MOVA,#29H;RLCA;HERE:SJMPHERE;END执行后A=(),5、利用循环移位指令实现累加器A中内容高半字节与低半字节互换。程序如下:ORG1700HSUBROUT:MOVA,#38H;RLA;RLA;RLA;RLA;HERE:SJMPHERE;END执行后A=(),改用RRA指令重新实验,执行后A=(),改用SWAPA指令重新执行,则A=()。,(三)、位操作指令的功能和用法。利用位条件转移指令实现两个无符号数比较大小。程序如下:ORG1800HSUBROUT:MOV30H,#80H;MOV31H,#7FH;MOVA,30H;CJNEA,31H,BIG;MOVA,#0DDH;SJMPHERE;BIG:JCSMALL;,MOVA,#0F0H;SJMPHERE;SMALL:MOVA,#0FH;HERE:SJMPHERE;END执行后A=(),修改(30H)=7FH,(31H)=80H,执行后A=(),再修改(30H)=80H,(31H)=80H,执行后A=()。,四、实验报告要求1、整理好记录的数据,与理论分析的结果相比较。2、归纳MCS-51系列单片机各类主要指令的功能,熟悉指令寻址方式。3、位操作指令JC是根据什么条件实现转换的。4、实验报告格式参照实验报告说明五、预习报告要求1、认真阅读实验要求。2、汇编所有实验程序。,数据传送,一、实验目的1、进一步熟悉Keil软件的使用方法。2、练习设计简单的程序。3、掌握MCS-51系列单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送方法,从而了解这两部分数据存贮器的特点。4、掌握MCS-51系列单片机堆栈的使用方法。,二、设计要求1、先将MCS-51系列单片机内部RAM30H3FH单元分别置初值,初值为00H0FH,然后将片内RAM30H3FH的内容传送至片内RAM404FH单元中,再将片内RAM40H4FH单元中的内容传送到外部RAM4800H480FH单元中,之后又将4800H480FH单元内容送到外部RAM5800H580FH单元中,最后将片外RAM5800H580FH单元内容传送回片内RAM50H5FH单元中。2、设置五个断点,断点地址分别为404AH,4056H,4063H,408CH,4099H,每运行到断点时,检查相应的CPU现场及存贮器单元的内容。,3、另设置七个断点,断点地址分别为4063H,4066H,406DH,406FH,4072H,4078H,407AH,每运行到断点时检查相应的SP,(SP),DPH,DPL的内容。三、设计提示1、在微机上编辑数据传送汇编语言程序源文件,然后进行机器汇编,将实验机器代码程序下载至实验装置。2、实验步骤:(1)设置五个断点,断点地址分别为404AH,4056H,4063H,408CH,4099H。(2)运行程序到第一个断点404AH,检查30H3FH单元内容及累加器A的内容。,(3)运行程序到第二个断点4056H,检查40H4FH单元内容及累加器A的内容。(4)运行程序到第三个断点4063H,检查4800H480FH单元内容及累加器A,数据指针DPTR的内容。(5)运行程序到第四个断点408CH,检查5800H580FH单元内容及累加器A,数据指针DPTR的内容。(6)运行程序到第五个断点4099H,检查50H5FH单元内容及累加器A,数据指针DPTR的内容。(7)清除以上所设断点,另设七个断点,断点地址分别为4063H,4066H,406DH,406FH,4072H,4078H,407AH。(8)每运行到一个断点,分别检查SP,(SP),DPH,DPL内容。,3、实验测量数据表格如下。表格(一),表格(二),四、实验报告要求1、写出实验程序清单。2、将测得的数据填入表格,并和理论分析的结果相比较。3、实验报告格式参照实验报告说明。五、实验思考与总结1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?传送指令中的助记符MOV,MOVX,MOVC各适用于访问哪个存储器空间?3、根据实验结果,说明MCS-51系列单片机堆栈操作规则。,五、实验参考程序ORG4000H4000:0140AJMPMAINORG4040H4040:7830MAIN:MOVR0,#30H;4042:7A10MOVR2,#10H;4044:E4CLRA;4045:F6A1:MOVR0,A;4046:08INCR0;4047:04INCA;4048:DAFBDJNZR2,A1;,404A:7830MOVR0,#30H;把片内RAM303FH404C:7940MOVR1,#40H;内容传送到片内RAM404E:7A10MOVR2,#10H;40H4FH单元中4050:E6A2:MOVA,R0;4051:F7MOVR1,A;4052:08INCR0;4053:09INCR1;4054:DAFADJNZR2,A2;,MOVR1,#40H;把片内RAM404FH4058:904800MOVDPTR,#4800H;内容传送到片外RAM405B:7A10MOVR2,#10H;4800480FH单元中405D:E7A3:MOVA,R1;405E:F0MOVXDPTR,A;405F:09INCR1;4060:A3INCDPTR;4061:DAFADJNZR2,A3;,MOVSP,#60H;把片外RAM48004066:7A10MOVR2,#10H;480FH内容传送到片4068:904800MOVDPTR,#4800H;外RAM5800580FH406B:C082PUSHDPL;单元中406D:C083PUSHDPH;406F:905800MOVDPTR,#5800H;4072:AB82MOVR3,DPL;4074:AC83MOVR4,DPH;,A4:POPDPH;4078:D082POPDPL;407A:E0MOVXA,DPTR;407B:A3INCDPTR;407C:C082PUSHDPL;407E:C083PUSHDPH;4080:8B82MOVDPL,R3;4082:8C83MOVDPH,R4;4084:F0MOVXDPTR,A;4085:A3INCDPTR;4086:AB82MOVR3,DPL;4088:AC83MOVR4,DPH;408A:DAEADJNZR2,A4;,MOVR0,#50H;把片外RAM5800408E:905800MOVDPTR,#5800H;580FH内容传送回片4091:7A10MOVR2,#10H;内RAM505FH单元4093:E0A5:MOVXA,DPTR;4094:F6MOVR0,A;4095:08INCR0;4096:A3INCDPTR;4097:DAFADJNZR2,A5;4099:80FEHERE:SJMPHERE;END,定时器/计数器及中断系统的应用,一、实验目的掌握定时器/计数器及中断系统的使用方法。掌握Proteus软件与Keil软件的使用方法。二、设计要求1、在P1.0口线上产生周期为500微秒的连续方波。,2、连续方波产生的时刻由按键K控制。三、设计提示1、用Proteus软件画出电路原理图。2、按键K作为外部中断源使用。3、定时器/计数器可采用查询或中断方式工作。4、在P1.0口线上接示波器观察波形。,四、实验报告要求1、列出实验程序清单。2、实验报告格式参照实验报告说明。五、实验思考与总结1、如何产生周期为500微秒,占空比为2:5的连续矩形波。2、总结本实验用到的知识点。,MCS-51系列单片机P1口、P3口的应用,一、实验目的1、学习MCS-51系列单片机的P1口和P3口的使用方法。2、学习延时子程序的编写。3、学习汇编语言编程方法与调试技巧。4、掌握Proteus软件与Keil软件的使用方法。二、设计要求1、P1口灯亮实验P1口作输出口,接八只发光二极管,使发光二极管循环点亮。,2、P1口转弯灯实验P1.0接+5V时,右转弯灯闪亮;P1.1接+5V时,左转弯灯闪亮;P1.0,P1.1同时接+5V或接地时,转弯灯均不闪亮。3、P3口输入,P1口输出实验从P3.3口线输入一脉冲,P1口按十六进制加一方式点亮发光二极管。三、设计提示1、P1口灯亮实验程序流程框图如图所示。将P1.0P1.7用扦针连至L1L8,运行程序,注意观察发光二极管闪亮移位情况。,2、P1口转弯灯实验程序流程框图如图所示。将P1.0接K1,P1.1接K2,P1.4P1.7接L1,L5,L9,L13,运行程序,观察转弯灯闪亮情况。3、P3口输入,P1口输出实验程序流程框图如图所示。将P3.3用扦针连至K1,P1.0P1.7扦针连至L1L8,运行程序,K1拨动一次,注意观察L1L8发光二极管点亮变化情况。四、实验报告要求1、列出各实验程序清单。2、实验报告格式参照实验报告说明。,五、实验思考与总结1、对于P1口亮灯实验,如何修改程序,使发光二极管闪亮时间改变以及使发光二极管闪亮移位方向改变。2、对于P1口转弯灯实验,如何使用单步方式调试本程序(提示:如何修改延时子程序)。3、对于P3口输入,P1口输出实验,如何修改程序,使发光二极管以左移方式点亮。4、总结本实验用到的知识点。,六、实验参考程序1、P1口灯亮实验ORG0790HSE18:MOVP1,#0FFH;送P1口LO34:MOVA,#0FEH;L1发光二极管点亮LO33:MOVP1,A;LCALLSE19;延时RLA;左移位SJMPLO33;循环,ORG07A0HSE19:MOVR6,#0A0H;延时LO36:MOVR7,#0FFH;LO35:DJNZR7,LO35;DJNZR6,LO36;RETEND,2、P1口转弯灯实验ORG0C30HPX00:MOVP1,#0FFH;初始化PX03:MOVA,P1;MOVB,A;ANLA,#03H;CJNEA,#01H,PX01;满足只是P1.0为高条件吗?JB00H,PX04;闪烁标志位CLRP1.4;CLRP1.5;开右灯SETBP1.6;SETBP1.7;关左灯,MOVR2,#20H;LCALLDELY;延时SETB00H;置标志位LJMPPX03;继续查状态PX04:SETBP1.4;SETBP1.5;SETBP1.6;关灯SETBP1.7;MOVR2,#20H;LCALLDELY;延时CLR00H;清标志位AJMPPX03;继续查状态,PX01:CJNEA,#02H,PX02;满足只是P1.1为高条件吗?JB01H,PX05;判标志位SETBP1.4;SETBP1.5;开左灯CLRP1.6;CLRP1.7;关右灯MOVR2,#20H;延时LCALLDELY;SETB01H;置标志位LJMPPX03;继续查状态PX05:SETBP1.4;SETBP1.5;,SETBP1.6;关灯SETBP1.7;MOVR2,#20H;LCALLDELY;延时CLR01H;清标志位LJMPPX03;继续查状态PX02:SETBP1.4;SETBP1.5;SETBP1.6;关灯SETBP1.7;LJMPPX03;继续,ORG0213H0213:C002DELY:PUSH02H;延时0215:C002DEL2:PUSH02H;0217:C002DEL3:PUSH02H;0219:DAFEDEL4:DJNZR2,DEL4;021B:D002POP02H;021D:DAF8DJNZR2,DEL3;021F:D002POP02H;0221:DAF2DJNZR2,DEL2;0223:D002POP02H;0225:DAECDJNZR2,DELY;0227:22RET,3、P3口输入,P1口输出实验ORG0810HJ100:MOVA,#00HJ101:JBP3.3,J101;MOVR2,#20H;LCALLDELY;JBP3.3,J101;P3.3电平为低吗?J102:JNBP3.3,J102;MOVR2,#20H;LCALLDELY;JNBP3.3,J102;P3.3电平高吗?INCA;加1PUSHACC;CPLA;取反MOVP1,A;驱动发光二极管POPACC;AJMPJ101;循环,ORG0213H0213:C002DELY:PUSH02H;延时0215:C002DEL2:PUSH02H;0217:C002DEL3:PUSH02H;0219:DAFEDEL4:DJNZR2,DEL4;021B:D002POP02H;021D:DAF8DJNZR2,DEL3;021F:D002POP02H;0221:DAF2DJNZR2,DEL2;0223:D002POP02H;0225:DAECDJNZR2,DELY;0227:22RET,8255的应用,一、实验目的1、掌握MCS-51系列单片机与8255的接口设计方法。2、熟悉8255芯片初始化程序的设计方法。3、掌握Proteus软件与Keil软件的使用方法。,二、设计要求1、在8255的PA口上接八个发光二极管,使之轮流循环点亮。2、在8255的PB口上接八个发光二极管,按特定模式点亮。3、利用8255做输出口,控制十二个发光二极管的亮灭,模拟交通灯管理。要求:执行程序,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后,东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。,三、设计提示1、利用Proteus软件绘制电路原理图;2、利用Keil软件编制并调试好实验程序;3、在Proteus上仿真实验结果。四、实验报告要求1、列出实验程序清单;2、实验报告格式参照实验报告说明。五、实验思考与总结1、总结本实验用到的知识点。,多分支及数据排序,一、实验目的1、进一步掌握MCS-51系列单片机汇编语言程序设计的方法。2、学会编写多分支应用程序、显示、延时程序。3、学会采用冒泡法编写数据排序程序。4、掌握Proteus软件与Keil软件的使用方法。二、设计要求1、多分支程序的应用(1)将00H,01H,02H,03H分别送入20H单元中,每次运行程序后,应观察到0,1,2,3从右向左循环移动。,(2)修改程序,再次将00H,01H,02H,03H分次送入20H单元中,每次运行程序后使0,1,2,3从左向右循环移动。(3)修改程序,将00H,01H,02H,03H分次送入20H单元中,每次运行程序后,使4,5,6,7,8从右向左循环移动。2、数据排序(1)将片内RAM50H5AH单元中的内容分别置为1AH,06H,3DH,4FH,10H,25H,7FH,05H,5BH,19H,60H。(2)运行排序程序,将50H5AH中的十一个无符号数从小到大的次序排列。(3)运行排序程序,将50H5AH中的十一个无符号数从大到小的次序排列。,三、设计提示1、多分支程序流程框图如图所示。(1)向系统输入多分支应用程序。(2)将00H,01H,02H,03H分次送入20H单元中,调试运行程序,观察LED显示器显示结果。(3)修改程序,使0,1,2,3从左向右循环移动,重新运行,注意观察LED显示器显示结果。(4)修改程序,使4,5,6,7,8从右向左循环移动,重新运行,注意观察LED显示器显示结果。2、数据排序程序流程框图如图所示。(1)向系统输入数据排序程序。(2)将给定的十一个无符号数依次置入50H5AH单元之中。,(3)调试运行程序,记录50H5AH单元的内容。(4)修改程序,使数据按从大到小的次序排列。(5)重新运行程序,记录50H5AH单元的内容。四、实验报告要求1、列出实验程序清单。2、将每次程序的运行结果与理论分析结果相比较。3、实验报告格式参照实验报告说明。五、实验思考与总结1、分析程序,如果要求改变字符显示的速度,应如何修改程序。2、分析程序,如果要求显示字符从LED显示器上任一位置开始显示,如何修改程序。,3、分析程序,如果要求对MCS-51系列单片机外部RAM单元中的11个字节数据排序,应如何编写程序。4、总结本实验用到的知识点。,六、实验参考程序1、多分支程序ORGOA10H0A10:E520MEMS:MOVA,20H0A12:900A17MOVDPTR,#KKKK;散转首址0A15:23RLA;(20)*20A16:73JMPA+DPTR;转到(20)*2+DPTR0A17:411FKKKK:AJMPMEMSP0;0A19:4125AJMPMEMSP1;0A1B:412BAJMPMEMSP2;0A1D:8012SJMPMEMSP3;,0A1F:7520C0MEMSP0:MOV20H,#0C0H;0字循环0A22:020DA0LJMPSOX0;0A25:7520F9MEMSP1:MOV20H,#0F9H;1字循环0A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外卖合同协议骗局
- 商品房漏水合同解除协议
- 孩子抚养合同协议书范本
- 轮拖拉机租车协议合同
- 设计公司协议合同
- 道路通行合同协议
- 煤炭供应合同协议
- 旅游包车合同协议书范本
- 饭店加盟协议合同范本
- 服务合同保密协议违约金
- 《机上医疗救护》课件-5.1 止血
- 安徽省芜湖市2024-2025期中考试八年级数学试卷
- 读书分享《非暴力沟通》课件(图文)
- 基于单片机控制的人体健康监测系统设计
- 中国戏曲 昆曲学习通超星期末考试答案章节答案2024年
- 托育服务中心项目可行性研究报告
- 春检工作安全措施(标准版)
- 2025版《南方凤凰台·5A教案·基础版·化学》导学案
- TPX6111B数显卧式铣镗床使用手册3
- 【采购管理优化探究文献综述3000字】
- (高清版)WST 830-2024 外照射放射防护剂量转换系数标准
评论
0/150
提交评论