单片机4个实验报告 下载本文

班级:12数控2班 姓名: 学号:

实验一 查表实验

一、实验目的

1.掌握汇编语言编程软件的使用及调试方法 2.掌握查表指令MOVC的使用 3.熟悉整个实验流程实验步骤 二、实验内容

编写并调试一个查表程序,根据输入值不同查表得到不同值,比如求1-9的平方 三、实验设备

单片机仿真软件,单片机实验箱 四、实验步骤

1、编写程序

2、接通实验箱电源,接数据线 3、导入程序 4、运行程序 五、实验数据及结果

输入3,在查表程序运行完后,得到a的最终值为9。改变输入,使得a的值不断变化,但依然为输入值得平方。输入值得范围为1—9 六、实验源程序

Org 0000h Ljmp main org 0030h

main:mov a,#03

mov dptr,#tab movc a,@a+dptr ajmp $

tab: DB 00, 01, 04, 09, 16 DB 25, 36, 49, 64, 81 end

七、问题分析

程序不能运行:可能是指令拼写错误,或者程序位置放置不对。 思考题:

MOVC指令有几种格式?并写出来

MOVC A,@A+PC MOVC A,@A+DPTR

实验二 数据传送实验

一、实验目的

1.掌握MCS51单片机数据传送指令;

2.掌握MCS51单片机内部和外部数据存储空间的编程和调试方法 二、实验内容

编程实现单片机不同存储空间的数据传输

三、实验设备

电脑

五、实验步骤(过程)

1.查看仿真器的串口号 2.在Keil中创建项目 3.项目设置,选择STC仿真驱动

六、实验数据及结果(或者现象)

把长度为8H的字符串传送到内部RAM以20H为首的存储空间。进行模拟时,使用step over 程序单个运行,每循环一次,memory window里的就会取一次值,这些值分别是:00、3、08、9、87、67、99、25。

七、实验源程序

org 0000h mov r0,#20h ljmp main mov r7,#8 org 0030h mov dptr,#0100h main: loop1:mov a,@r0 mov dptr,#tab movx @dptr,a mov r0,#20h inc r0 mov r7,#8 inc dptr loop2:clr a djnz r7,loop1 movc a,@a+dptr mov @r0,a HERE: AJMP HERE inc r0 tab:db 00,3,08,9,87,67,99,25 inc dptr end djnz r7,loop2 八、问题分析

没什么问题

思考题:

单片机从物理空间来说,有几个存储空间?从使用角度来讲,有几个空间?分别使用什么指令?

答:单片机从物理空间来说有四个存储空间,分别是:内部数据存储器、外部数据存储器、内部程序存储器、外部程序存储器

从使用角度来讲,有三个存储空间,分别是:内部数据存储器(MOV)、外部数据(MOVX)、程序存储器(MOVC)

实验三 求极值实验

一、实验目的

1.掌握MCS51单片机跳转指令的使用

2. 掌握MCS51单片机循环程序的结构 二、实验内容

编程实现从N个数据里面找出最大值或者最小值

三、实验设备

电脑

五、实验步骤(过程)

六、1.查看仿真器的串口号 2.在Keil中创建项目 3.项目设置,选择STC仿真驱动 七、实验数据及结果(或者现象)

从n个数据中选取任意两个数进行对比,较大数保留,循环八次结束,然后将最大数送到2Bh单元中。最后结果显示2bh为99。 八、实验源程序org 0000h MOV R7,#08H ljmp main MOV A,@R0 org 0030h DEC R7 main: LOOP:INC R0 mov dptr,#tab MOV 2AH,@R0 mov r0,#20h CJNE A,2AH,CHK mov r7,#8 CHK: JNC LOOP1 loop2:clr a MOV A,@R0 movc a,@a+dptr LOOP1:DJNZ R7,LOOP mov @r0,a MOV 2BH,A inc r0 HERE: AJMP HERE inc dptr tab:db 00,3,08,9,87,67,99,25 djnz r7,loop2 endMOV R0,#20H 九、问题分析

没有问题

思考题:

利用DJNZ R1,LOOP指令实现循环,R1取几时循环次数最多?最多循环多少

答:当R1=0时,循环次数最多,最多次数为256。