单片机软件实验报告Word文档格式.docx
- 文档编号:17660490
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:54
- 大小:1.67MB
单片机软件实验报告Word文档格式.docx
《单片机软件实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机软件实验报告Word文档格式.docx(54页珍藏版)》请在冰豆网上搜索。
MOVA,#01H
MOVR5,#0H
LOOP:
MOVX@DPTR,A
INCDPTR
DJNZR5,LOOP
MOVR0,#30H
MOVR1,#00H
MOVR2,#40H
MOVR3,#00H
MOVR7,#0H
LOOP1:
MOVDPH,R0
MOVDPL,R1
MOVXA,@DPTR
MOVDPH,R2
MOVDPL,R3
INCR1
INCR3
DJNZR7,LOOP1
SJMP$
END
实现了将3000H开始的256个单元的内容复制到以4000H开头的外部RAM存储单元中。
R0的值为30H;
R2的值变为40H;
寄存器A中赋值为1H,对栈指针sp初始化为07H,其最大值亦为07H,DPTR中最后递增到40ffH,psw中只有奇偶校验位p是1H
3在Keil环境运行如下程序,观察寄存器及内存单元的变化,将变化结果注释于右侧,并说明程序完成什么功能?
将程序中MOVA,@R0改成MOVXA,@R0,将MOV@R1,A改成MOVX@R1,A,运行如下程序,观察寄存器及相应地址RAM、XRAM地址单元存储内容的变化。
1.
ORG0000H;
程序从000H开始
MOVR0,#30H;
MOVR1,#50H
MOVR2,#20H
L1:
MOVA,@R0
MOV@R1,A
INCR0
INCR1
DJNZR2,L1
SJMP$
END
R0的值递增到50H,R1的值递增到70H,A中的值是4FH中的值,即FFH(程序运行前自己设定的)
该程序将内部RAM30H开始的连续20H个存储单元中的内容复制到内部RAM50H开始的连续20H个存储单元中。
其中30H到4FH中的值在程序运行前自定义。
2.将程序中MOVA,@R0改成MOVXA,@R0,将MOV@R1,A改成MOVX@R1,A
ORG0000H
MOVR0,#30H
MOVXA,@R0
MOVX@R1,A
寄存器A中的数值没有发生过任何变化,R0和R1同未改变前一样,一直递增到50H和70H
虽然设定了外部RAM30H到4FH中的值,但是并没有复制到50H到6FH存储单元中。
原因是初始化后P口都为#FFH,而使用MOVXA,@Ri要求P2口为#00H,所以只要在程序前加MOVP2,#00H就能实现和原来一样的功能了
5.设计型实验
1在keil环境下,修改内部RAM30H~3FH的内容分别为#00H~#0FH,设计程序实现将内部RAM30H-3FH单元的内容复制到40H-4FH中。
ORG000H;
MOVR2,#10H;
MOVA,#0H;
MOVR1,#30H;
MOVR0,#40H;
MOV@R1,A;
INCR1;
INCA;
DJNZR2,LOOP;
LOOP2:
MOVA,@R1;
MOV@R0,A;
INCR0;
DJNZR2,LOOP2;
SJMP$;
2在keil环境下,修改内部RAM30H~3FH的内容分别为#00H~#0FH,设计程序实现将内部RAM30H~3FH单元的内容复制到片外1030H~103FH中。
MOVDPTR,#1030H;
MOVX@DPTR,A;
INCDPTR;
3设计程序将外部64KB的XRAM高低地址存储内容互换;
如0000H与0FFFFH,0001H与0FFFEH,0002H与0FFFDH,…….互换;
互换数据个数为256。
MOVDPTR,#0FFFFH;
MOVR1,DPL;
保存当然DPTR低位
loop:
MOVDPL,R1;
MOVXA,@DPTR;
MOVR3,A;
保存当前DPTR的内容
MOVR0,DPH;
保存当然DPTR高位
MOVA,DPH;
CPLA;
求得当前DPTR高位的反码
MOVDPH,A;
MOVA,R1;
求得当前DPTR低位的反码
MOVDPL,A;
求得当前DPTR反码
MOVR4,A;
保存当前DPTR对称码(反码)的内容
MOVA,R3;
MOVX@DPTR,A;
将当前DPTR(原码)的内容存入对称码中
MOVDPH,R0;
MOVDPL,R1;
还原DPTR
MOVA,R4;
将对称码的内容存入当前DPTR(原码)
DECR1;
CJNER1,#0FFH,LOOP;
SJMP$;
运行前:
运行后:
6.综合型实验
a)设计程序实现将外部XRAM0000H起始的512个字节数据传送到外部XRAM2000H起始的512个存储单元中。
ORG0000H;
MOVR3,#0H;
MOVDPTR,#0000H;
MOVR0,DPL;
MOVDPH,#20H;
MOVDPL,R0;
MOVDPH,#0H;
DJNZR3,LOOP;
X:
0H至X:
0FFH的值是自定义的;
运行程序后复制到X:
2000H至X:
20FFH;
b)若源块地址和目标块地址有重叠,程序该如何设计(用地址减1方法移动块)?
假设源块地址2000H,目标块地址2050H,移动块长度80H;
试设计程序实现该功能。
思路:
先将由源块地址起始的数据块保存到非目标块地址中(防止覆盖目标地址),然后再复制到目标块地址;
MOVDPTR,#2000H;
MOVR3,#80H;
MOVR0,DPH;
MOVR1,DPL;
MOVDPH,#30H;
本循环实现将x:
2000H开始的80个单元中的内容复制到x:
3000H开始的80个单元中去
MOVDPTR,#3000H;
MOVR4,#50H;
MOVR2,A;
MOVDPL,A;
MOVA,R2;
INCR4;
DJNZR3,LOOP2;
3000H开始的80个单元中的内容复制到x:
2050H开始的80个单元中去
1了解微机系统中的数制与代码表示方法;
2掌握计算机中使用的各种代码转换方法;
3掌握实现分支、循环的指令及其程序的编写方法;
1理解十进制数、十六进制数的数制表示方法;
2理解BCD码、ASCII码编码方式;
3如何实现十六进制数与BCD码之间的转换;
4如何实现ASCII码与BCD码之间的转换。
计算机1台。
4.基础型实验内容
1以下程序完成单字节的ASCII码到十六进制数转换,完成空白处程序填写,并在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
RESULTEQU30H
ORG0000H
MOVA,#41H;
“A”的ASCII码
CLRC
SUBBA,#37H;
转换为十六进制值A
MOVRESULT,A
LJMP$
END
2以下程序完成单字节的BCD码到十六进制数转换,,在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
MOVA,#23H
MOVR0,A
ANLA,#0F0H
SWAPA
MOVB,#0AH
MULAB
MOVRESULT,A;
转换高位
MOVA,R0
MOVB,#0FH
ANLA,B;
ADDA,RESULT
MOVRESULT,A;
转换低位
3以下程序将单字节十六进制数A的值转换为十进制数,存放在30H~32H中,完成空白处程序填写,并在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
MOVA,#7BH
MOVB,#100
DIVAB
除以100得百位数
MOVA,B
MOVB,#10
DIVAB
MOVRESULT+1,A;
除以10得十位数
MOVRESULT+2,B;
余数为个位数
5.设计型实验内容
1将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中。
MOVR2,30H;
MOVR3,31H;
ANLA,#0F0H;
SWAPA;
ADDA,#90H;
DAA;
ADDCA,#40H;
MOV@R0,A;
将31H中的高位转化成ASCII码
ANLA,#0FH;
将30H中的低位转化成ASCII码
将30H中的高位转化成ASCII码
将31H中的低位转化成ASCII码
2单字节十六进制数转换为十进制数的程序设计。
设单字节十六进制数存放在内部RAM30H中,结果要求存放到内部RAM40H-41H中。
本题应该是40H-42H,因为该十六进制数完全有可能超过100
RESULTEQU40H;
MOVR0,#30H;
MOVA,@R0;
MOVB,#100
DIVAB
MOVRESULT,A;
MOVA,B
MOVB,#10
DIVAB
MOVRESULT+1H,A;
MOVRESULT+2H,B;
3单字节压缩BCD码数转换成十六进制数的程序设计。
设压缩BCD码数存放在内部RAM30H中,结果要求存放在内部RAM40H中。
;
设置存放地址
ORG0000H;
MOVR1,#30H;
MOVA,@R1;
ANLA,#0F0H;
取高4位
SWAPA;
MOVB,#0AH;
MULAB;
高位乘以10
MOVRESULT,A;
MOVB,#0FH;
取低4位
ADDA,RESULT;
MOVRESULT,A;
6.综合实验
1多字节十六进制数转换为十进制数的程序设计。
设多字节十六进制数存放在内部RAM30H开始的单元中,要求结果存放在内部RAM40H开始的单元中。
MOVR1,#40H;
存放单元
MOVR0,#30H;
起始存储单元
MOVR2,#9H;
设置要转化的单元数,即循环次数
MOVA,@R0;
MOVB,#100;
DIVAB;
MOV@R1,A;
INCR1;
MOVA,B
MOVB,#10;
DIVAB
MOV@R1,A;
MOV@R1,B;
余数为个位
INCR0;
DJNZR2,LOOP;
注:
由于内部RAM30H与内部RAM40H之间只有16个单元,即循环的次数最好不要超过16次,否则数据块发生重叠,如果非要进行16次以上操作,那么可以先将转化好的十进制数存放到其他内存中,最后再统一复制到40H开始的内存中,此处不再列出程序。
2多字节压缩BCD码数转换成十六进制数的程序设计。
设压缩BCD码数存放在内部RAM30H开始的单元中,要求结果存放在内部RAM40H开始的单元中。
;
MOVR2,#9H;
MOVA,@R1;
ANLA,#0F0H;
MOVB,#0AH;
MULAB;
MOV@R0,A;
MOVB,#0FH;
ADDA,@R0;
MOV@R0,A;
1掌握算术运算类、逻辑运算类指令的使用方法;
2掌握BCD码、补码数制表示方法;
3掌握运算程序及循环程序的编写和调试方法。
1理解8051单片机的算术运算指令;
2理解补码表示数值的方法;
3理解压缩、非压缩BCD码表示数值的方法;
4如何实现多位数的BCD码加、乘、除运算;
5如何实现多位数的BCD码减法运算;
6预习本实验内容,以及相关课程内容。
1以下程序完成单字节的BCD码加法功能,完成空白处程序填写,并在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
MOVA,#99H
MOVB,#99H
ADDA,B
DAA;
BCD码相加并得到BCD码结果
MOVRESULT,A
MOVA,#00H
ADDCA,#00H
MOVRESULT+1,A;
高位处理
2下列程序完成多字节BCD码加法运算。
内部RAM30H开始的4字节长的BCD码和外部XRAM1000H开始的4字节长的BCD码相加,结果放在外部XRAM1100H开始的单元中(从低字节到高字节),在Keil环境运行程序,观察寄存器及相应地址内存单元内容的变化。
MOVR5,#04H
MOVR1,#10H
MOVR2,#00H
MOVR3,#11H
MOVR4,#00H
MOVDPH,R1
MOVDPL,R2
ADDCA,@R0
DAA;
十进制调整
MOVDPH,R3
MOVDPL,R4
INCR2
INCR4
INCR0
L2:
DJNZR5,L1
JNCL3
MOVDPTR,#1104H;
有进位则结果的第五个字节置1
MOVA,#01H
L3:
NOP
1设计程序,实现任意字节(设字节数为n)压缩BCD码的相加。
加数分别存放在外部RAM1000H和内部RAM30H开始的单元中,结果保存到内部RAM40H开始的单元中。
因为是任意字节,所以相加的结果不能直接放在内部40H开始的单元中,因为字节数可能超过10H个;
所以需要设置临时存放和的地址
CLRC;
MOVR5,#04H;
自定义需要参加运算的字节数
MOVA,R5;
MOVR6,A;
保存参加运算的字节数
MOVR0,#30H;
存放加数的片内RAM起始地址30H
MOVR1,#10H;
MOVR2,#00H;
存放加数的片外RAM起始地址1000H
MOVR3,#21H;
MOVR4,#00H;
临时保存和的片外RAM起始地址2100H
MOVDPH,R1;
MOVDPL,R2;
ADDCA,@R0;
DAA;
MOVDPH,R3;
MOVDPL,R4;
INCR2;
DJNZR5,L1;
JNCL3;
MOVDPL,R4;
有进位则结果的下一个字节置1
MOVA,#01H;
NOP;
CJNEA,#01H,L4;
判断是否做加法后有进位,有则使R6加1
INCR6;
MOVR0,#40H;
本语句块实现将临时存放单元中的和复制到内部RAM中以40H起始的存储单元中
MOVR1,#00H;
MOVR2,#21H;
L4:
MOVDPH,R2;
CJNER1,#00H,L5;
INCR2;
R1变成00H之后,R2加1
L5:
DJNZR6,L4;
2设计程序,实现多字节(设字节数为n)十六进制无符号数的减法。
被减数和减数分别存放在外部RAM1000H和内部RAM30H开始的单元中,结果保存到内部RAM40H开始的单元中。
MOVR4,#00H;
被减数低位地址
MOVR2,#10H;
被减数高位地址
MOVR1,#30H;
减数地址
MOVR3,#4H;
设置字节数
MOVR0,#40H;
MOVDPL,R4;
本循环实现字节的逐个相减的过程
SUBBA,@R1;
CJNER4,#0H,L;
如果R4增加到0H,则高位加1
L:
3在内部RAM30H单元开始,存放着一串带符号数据(负数用补码表示),数据长度在10H中(设数据长度小于等于16);
编程分别求其中正数之和与负数之和,并存入内部RAM的2CH与2EH开始的2个单元中,记录程序运行结果。
例如:
内部RAM的30H-35H存放-1,5,-2,19,-8,对应的补码分别为0FFH,5H,0FEH,13H,0F8H,则正、负数的和分别为24、-11,对应的补码分别为18H,0F5H。
OR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 软件 实验 报告