内容发布更新时间 : 2024/12/29 14:09:25星期一 下面是文章的全部内容请认真阅读。
班级: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。