当前位置:文档之家› 单片机实验报告

单片机实验报告

实验项目名称MCS-51系列单片机指令学习实验实验项目类型验证性实验时间2013、5、10、星期五、一二节课一、实验目的MCS-51系列单片机指令系统共有111条汇编语言指令,这些指令按功能的不同可分为五类:29条数据传送类指令,24条算术运算类指令,24条逻辑运算类指令,17条控制转移类指令和17条位操作类指令。

本实验通过单步执行程序中各类指令,来进一步学习和理解各类主要指令的功能,掌握指令的用法。

通过实验掌握Keil软件的使用方法。

二、实验内容(一)、数据传送与算术运算1、体会MOV Rn,direct指令的功能和用法,取n=0,direct=40H。

程序如下:ORG 0000HSUBROUT:MOV 40H ,#0FH;MOV R0 ,40H;MOV A ,R0;HERE:LJMP HERE;ENDA=(OFH ),40H=(OFH ),R0=(OFH )2、体会MOV @Ri,#DATA指令的功能和用法,选择DATA=0FH,i=0。

程序如下:ORG 0000HSUBR:MOV R0,#50H;R0←50HMOV @R0,#0FH;(R0)←0FHMOV A,50H;A←(50H)HERE:LJMP HERE;ENDR0=(50H ),50H=(OFH ),A=(OFH )3、体会查表指令MOVC A,@A+DPTR的功能和用法。

设定40H单元中的内容为0~9之间的一个整数,用查表的方法求出它的平方值(BCD码),结果存入41H单元。

利用MOVC A,@A+DPTR指令查表程序如下:ORG 0000HSTART:MOV DPTR,#SQR;MOV A ,40H;MOVC A ,@A+DPTR;MOV 41H , A;HERE:LJMP HERE;SQR:DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81HEND41H=(25 )4、用加法指令ADD A,R0实现两数相加,如52H+FCH。

程序如下:ORG 0000HSUBROUT:MOV A ,#52H ;MOV R0 ,#0FCH;ADD A ,R0;HERE:LJMP HEREENDA=(4EH ),PSW=(80H )用带进位加法指令ADDC A,R0实现52H与0CH之和。

程序如下:ORG 0000HSUBROUT:MOV A ,#52H;MOV R0 ,#0CH;SETB C;ADDC A ,R0;HERE:LJMP HERE;END执行后A=(5FH ),PSW=(00H )若将SETB C 指令改为CLR C执行后A=(5EH ),PSW=(01H )5、体会十进制调整指令DA A 的功能和用法程序如下:ORG 0000HSUBROUT:MOV A ,#65H;ADD A ,#58H;DA A;HERE:LJMP HERE;END执行后A=(23H ),PSW=(85H )若将DA A 指令用NOP代替,则执行后A=(BDH ),PSW=(04H )6、用乘法指令MUL AB 进行0FFH*03H程序如下:ORG 0000HSUBROUT:MOV A ,#0FFH;MOV B ,#03H;MUL AB;NOP;NOP;HERE:LJMP HEREEND执行后A=(FDH ),B=(02H )。

(二)、逻辑运算和循环指令1、逻辑“与”指令实验。

程序如下:ORG 0000HSUBROUT:MOV A,#0FBH;ANL A,#0FH;HERE:LJMP HERE;END执行后A=( 0BH ),“与”指令有何作用?2、逻辑“或”指令实验。

程序如下:ORG 0000HSUBROUT:MOV R1,#0FH;MOV A ,#33H;ORL A,R1;HERE:LJMP HERE;END执行后A=(3FH ),“或”指令有何作用?3、逻辑“异或”指令实验。

程序如下:ORG 0000HSUBROUT:MOV A,#55H;MOV 40H,#00H;XRL A,40H;HERE:LJMP HERE;END执行后A=(55H ),将MOV 40H,#00H 改为MOV 40H,#55H,执行后A=(OOH )。

4、利用左移指令实现乘2运算。

程序如下:ORG 0000HSUBROUT:MOV A,#29H;RLC A;HERE:LJMP HERE;END执行后A=(52H )5、利用循环移位指令实现累加器A中内容高半字节与低半字节互换。

程序如下:ORG 0000HSUBROUT:MOV A,#38H;RL A;RL A;RL A;RL A;HERE:LJMP HERE;END执行后A=(83H ),改用RR A指令重新实验,执行后A=(83H ),改用SWAP A指令重新执行,则A=(83H )。

(三)、位操作指令的功能和用法。

利用位条件转移指令实现两个无符号数比较大小。

程序如下:ORG 0000HSUBROUT:MOV 30H,#80H;MOV 31H,#7FH;MOV A,30H;CJNE A,31H,BIG;MOV A,#0DDH;LJMP HERE;BIG:JC SMALL;MOV A,#0F0H;LJMP HERE;SMALL:MOV A,#0FH;HERE:LJMP HERE;END执行后A=(OFOH ),修改(30H)=7FH,(31H)=80H,执行后A=(0FH ),再修改(30H)=80H,(31H)=80H,执行后A=(ODDH )。

三、实验总结1、单片机指令是供用户使用的单片机的软件资源,是单片机所能接受的软件工作者的命令的最小工作单位。

2、实验过程学会了如何检查程序错误,并熟悉了各指令所执行的相应功能3、通过老师的提问也指出了自己不足,并得到了改正四、思考题JC是判断C进位标志是否为1,为1则跳转到指定位置。

批阅实验项目名称数据传送实验实验项目类型设计性实验时间2013、5、17、星期五、一二节课一、实验目的和要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。

2、掌握单片机的存储器体系结构。

3、熟悉Keil软件的功能和使用方法。

4、掌握单片机应用程序的调试方法。

二、设计要求1、编写程序将00H~0FH 16个数据分别送到单片机内部RAM 30H~3FH单元中。

2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM40~4FH单元中。

3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。

4、编写程序将4800H~480FH单元内容送到外部RAM5800H~580FH单元中。

5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH单元中。

三、程序清单1、ORG 0000HSTART1: MOV A , #00HMOV R0 , #30HMOV R1 , #10HLOOP1: MOV @R0 , AINC AINC R0DJNZ R1 , LOOP12、START2: MOV R0 , #30HMOV R1 , #40HMOV R2 , #10HLOOP2: MOV A , @R0MOV @R1 , AINC R0INC R1DJNZ R2 , LOOP23、START3: MOV R0 , #40HMOV DPTR , #4800HMOV R1 , #10HLOOP3: MOV A , @R0MOVX @DPTR, AINC DPTRINC R0DJNZ R1 , LOOP34、START4: MOV DPTR , #4800HMOV R0 , #10HLOOP4: MOV DPH , #48HMOVX A , @DPTRMOV DPH , #58HMOVX @DPTR , AINC DPTRDEC R0MOV A , R0JNZ LOOP45、START5: MOV DPTR , #5800HMOV R0 , #50HMOV R1 , #10HLOOP5: MOVX A , @DPTRMOV @R0 , AINC DPTRINC R0DJNZ R1 , LOOP5END四、实验总结1、数据传输是单片机编程的基础,使用指令是注意指令的使用范围,还要注意指令的可执行性2、编程过程学会了如何真确检查程序的错误,熟悉了各项指令并初步掌握了程序的调试和编写五、思考题1、片内寻址方式:直接寻址、寄存器寻址、寄存器间接寻址和位寻址片外寻址方式:间接寻址2、MOV A ,20H是将20H中的内容送给A,MOV C , 20H是将位地址为20H的位状态送给累加器CMOV访问片内数据,MOVX访问片外数据,MOVC主要访问程序空间批阅实验项目名称单片机并行I/O口的应用实验实验项目类型设计性实验时间2013、5、24、星期五、一二节课一、实验目的和要求1、熟悉Proteus软件和Keil软件的使用方法。

2、熟悉单片机应用电路的设计方法。

3、掌握单片机并行I/O口的直接应用方法。

4、掌握单片机应用程序的设计和调试方法。

二、设计要求1、用Proteus软件画出电路原理图。

要求在P3.0至P3.7口线上分别接LED0至LED7八个发光二极管,在P1.0口线上接一蜂鸣器。

2、编写程序:蜂鸣器以秒速率报警。

3、编写程序:要求LED0至LED7以秒速率循环右移。

4、编写程序:要求LED0至LED7以秒速率循环左移。

三、电路原理图四、程序清单1、ORG 0000HSTART: LJMP MAINORG 000BHLJMP LOOP1MAIN: MOV SP , #60HMOV TMOD , #01HCLR 10HSETB EASETB ET0MOV TH0 , #3CHMOV TL0 , #0B0HMOV R1 , #14HSETB TR0MOV A , #01HMOV P3 , ALOOP: JNB 10H , LOOPRR AMOV P3 , ACLR 10HLJMP LOOPLOOP1: MOV TH0 , #3CHMOV TL0 , #0B0HDJNZ R1 , LOOP2MOV R1 , #14HSETB 10HLOOP2: RETIEND2、将第一个程序中的RR A改为RL A就可以了3、ORG 0000HLJMP MAINORG 000BHLJMP IPTOMAIN: MOV SP , #60HMOV TMOD , #01HCLR 10HSETB EASETB ET0MOV TH0 , #3CHMOV TL0 , #0B0HMOV R2 , #0AHMOV R1 , #02HSETB TR0MOV A , #0FEHMOV P3 , ANT: SETB P1.0NT0: JNB 01H , NT0CLR P1.0CLR 01HNT1: JNB 10H , NT1CLR 01HRL AMOV P3 , ACLR 10HLJMP NTIPTO: MOV TH0 , #3CHMOV TL0 , #0B0HDJNZ R2 , TIOMOV R2 , #0AHSETB 01HDJNZ R1 , TIOMOV R1 , #02HSETB 10HTIO: RETIEND五、实验总结1、流水灯是单片机中的一个简单的应用,程序简单可移植性强,外接电路简单,外接电路可以是流水灯也可以是数码管2、调试时,加入的断点位置应包含整个循环,否则就会进入死循环或直接跳过该断点进入下一个断点六、思考题实现LED0至LED7以十六进制计数规律亮灯ORG 0000HLJMP MAINMAIN: MOV A , #00HCPL AMOV R7 , #00HC1: MOV P3 , ADEC ALCALL SJDJNZ R 7 , C1SJMP MAINSJ: MOV R0 , #06HMOV R1 , #18HMOV R2 , #02HSJ1: NOPSJ2: NOPSJ3: NOPDJNZ R2 , SJ3DJNZ R1 , SJ2DJNZ R0 , SJ1RETEND批阅实验项目名称定时器/计数器应用实验一实验项目类型设计性实验时间2013、5、31、星期五、一二节课一、实验目的和要求1、掌握定时器/计数器定时功能的使用方法。

相关主题