微机原理与应用实验报告文档格式.docx
《微机原理与应用实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理与应用实验报告文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
MOVR0,#030H;
断点,观察并记录!
A3:
MOVXA,DPTR
MOVXR0,A
DJNZR2,A3
DO:
LJMPDO
END;
部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。
五、附加题
1.将光标移到想要暂停的地方,MOVR0,#20H所在行,选择“执行到光标处”功能,程序快速执行到光标所在行。
观察运行情况,并记录下表。
R0
R2
A
20H
21H
22H
23H
24H
25H
0x2f
0x00
0x0f
00H
01H
02H
03H
04H
05H
26H
27H
28H
29H
2AH
2BH
2CH
2DH
2EH
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
2.在MOVR0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容
DPL
7000H
7001H
7002H
7003H
7004H
7005H
7006H
0X2F
0FH
7007H
7008H
7009H
700AH
700BH
700CH
700DH
700EH
3.画出程序流程图
N
Y
Y
结束
4.修改程序,实现新功能
实现倒序数据转移程序
AJMP
MAIN
MOVR0,#40H
DECR0
MOVR0,#30H
MOVR0,#030H
END
实验二程序设计
一、实验目的
1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;
2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。
二、实验容及步骤(完成分值:
30分/单个程序)
题目1、编写排序程序并上机调试通过。
已知8031部RAM60H~69H单元中,依次存放了0FH,09H,07H,0CH,03H,0DH,08H,0BH,04H,01H共10个字节无符号数,编程将它们规律排序,最大数放在60H中,最小数放在69H中。
结果应该是0FH,0DH,0CH,0BH,09H,08H,07H,04H,03H,01H。
题目2、编写多字节加法程序并上机调试通过。
8031部RAM22H、21H、20H单元中,分别存放了3字节无符号被加数0FFH、0FFH、0FFH(低字节在低地址),在32H、31H、30H单元中分别存放3字节无符号加数22H、22H、22H(低字节在低地址),求两数之和,并将结果存入部RAM23H、22H、21H、20H单元中(低字节在低地址)。
结果应该是01H、22H、22H、21H。
四、参考实验程序
题目1
ORG0000H
LJMPmain
ORG0100H
main:
...将10个随机数送入部RAM的50~59H单元
NOP;
可在此处设置断点
ACALLSELSORT;
调用排序子程序
HERE:
AJMPHERE;
可在此处设置断点,观察每次排序结果
NOP
;
排序子程序
DATEQU60H;
排序数据首地址
NEQU10;
排序个数
SELSORT:
MOVR0,#DAT
MOVR2,#N-1
LOOP:
MOVB,R0
MOVR3,A
INCA
MOVR1,A
MOVA,R2
MOVR4,A
LOOP1:
MOVA,R1
CLRC
SUBBA,B
JCLOOP2;
改为JNC即可逆序排列
MOVB,R1
LOOP2:
INCR1
DJNZR4,LOOP1
MOVA,R3
XCHA,R0
XCHA,R1
DJNZR2,LOOP
RET
END
题目2
MOVR0,#20H
MOVR0,#0FFH
MOVR0,#30H
MOVR0,#22H
ACALLMULTADD;
调用多字节加法子程序
可在此处设置断点,观察结果
N字节无符号数加法子程序([R0]+[R1])=([R0])
入口:
R0,R1,R2
占用资源:
ACC,B
堆栈需求:
2字节
出口:
R0存放结果高地址
MULTADD:
MOVR0,#20H;
地址1
MOVR1,#30H;
地址2
MOVR2,#03H;
加法字节数
NSUB:
NSUB1:
ADDCA,R1
MOVR0,A
DJNZR2,NSUB1
CLRA
ADDCA,#00H;
把进位位C加到高8位去
MOVR0,A
1.画出题目1的程序流程图。
N
2.将题目1的排序算法进行改变,采用另一种排序算法进行排序。
ORG0000H
MAIN:
...;
将10个随机数送入
MOV50H,R1
CJNEA,50H,BIG;
做减法。
BIG:
JNCLESS;
是0则跳转
LJMPLOOP3
LESS:
XCHA,R1;
交换60与61中的容
LOOP3:
CJNER1,#6AH,LOOP2;
MOV51H,R0
MOVR1,51H
INCR1
CJNER0,#69H,LOOP2;
以此类推,直到剩最后两个数比较完。
SJMP$
END
3.画出题目2的程序流程图。
4.改为编写多字节减法程序。
实验三定时/计数器实验
1、掌握MCS-51单片机部定时/计数器的功能与特点,工作方式选择和编程方法,中断功能的使用和中断服务程序的设计;
2、了解和熟悉MCS-51单片机实验板的功能。
60分/单个程序)
本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。
用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
三、参考流程图、电路图、参考程序
程序:
Tickequ5000;
100us记数次数,5000x100us=0.5s,十六进制#1388H
T100usequ156;
100us时间常数(12MHz)
C100usequ5h;
100us记数单元,05H、06H
org0000H
ljmpStart
org000BH
LJMPT0Int
----------------------------------------
ORG0100H
Start:
movTMOD,#02h;
方式2,定时器
movTH0,#T100us;
movTL0,#T100us;
movIE,#10000010b;
EA=1,IT0=1
setbTR0;
开始定时
movp1,#0FEH;
由于电路原因,输出高电平为灭灯。
movC100us,#HIGH(Tick);
05H<
-#13H,初始化100us记数单元
movC100us+1,#LOW(Tick);
06H<
-#88H,初始化100us记数单元
Loop:
ljmpLoop
ORG0300H
T0Int:
pushPSW
mova,C100us+1;
100us高位记数单元06H
jnzGoon
decC100us;
100us低位记数单元05H
Goon:
decC100us+1
mova,C100us;
orla,C100us+1
jnzExit;
100us记数单元不为0,返回
-#13H,100us记数单元为0则初始化100us记数单元
-#88H,100us记数单元为0则初始化100us记数单元
MOVA,P1;
100us记数单元为0,位移!
RLA
MOVP1,A
Exit:
popPSW
reti
End
1.修改程序,实现新功能
奇数偶数交换点亮
Tickequ5000
T100usequ156
C100usequ5h
movTMOD,#02h
movTH0,#T100us
movTL0,#T100us
movIE,#10000010b
setbTR0
movp1,#0AAH
movC100us
movC100us+1
mova,C100us+1
decC100us
mova,C100us
jnzExit
movC100us,#HIGH(Tick)
movC100us+1,#LOW(Tick)
MOVA,P1
2.用MCS-51单片机的部定时器定时中断,编写一段电子秒表程序,在静态数码管上实现显示。
TCNTAEQU30H;
TCNTBEQU31H
SECEQU32H
KEYCNTEQU33H
SP1BITP3.5
ORG00H
LJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVKEYCNT,#00H
MOVSEC,#00H
MOVA,SEC
MOVB,#10
DIVAB
MOVDPTR,#TABLE
MOVCA,A+DPTR
MOVP0,A
MOVA,B
MOVP2,A
MOVTMOD,#02H;
SETBET0
SETBEA
WT:
JBSP1,WT
LCALLDELY10MS
INCKEYCNT
MOVA,KEYCNT
CJNEA,#01H,KN1
SETBTR0
MOVTH0,#06H
MOVTL0,#06H
MOVTCNTA,#00H
MOVTCNTB,#00H
LJMPDKN
KN1:
CJNEA,#02H,KN2
CLRTR0
KN2:
CJNEA,#03H
DIVAB
MOVDPTR,#TABLE
MOVKEYCNT,#00H
DKN:
JNBSP1,$
LJMPWT
DELY10MS:
MOVR6,#20
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
INT_T0:
INCTCNTA
MOVA,TCNTA
CJNEA,#100,NEXT
INCTCNTB
MOVA,TCNTB
CJNEA,#4,NEXT
INCSEC
CJNEA,#100,DONE
DONE:
MOVDPTR,#TABLEMOVCA,A+DPTR
NEXT:
RETI
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
实验四动态显示实验
1、掌握七段LED数码管显示器工作原理,以及用动态扫描方法编程实现8位LED数码管显示的方法;
2、进一步了解和熟悉MCS-51单片机实验板的功能。
本实验需要用到单片机最小应用系统(F1区)和动态扫描显示模块(I2区)。
1.用8P排线将单片机最小应用系统(F1区)的P2口和动态扫描显示的位选JD1I相连,用8P排线将单片机最小应用系统(F1区)的P0口和动态扫描显示模块的段码JD0I相连。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4.全速运行程序,直至显示效果为稳定的“123456”。
四、参考流程图、电路图、实验程序
电路接线图
程序:
AJMPMAIN
ORG0080H
MOVP2,#0FFH
MOVP0,#7DH;
显示6
CLRP2.0;
选中第一个数码管
LCALLDELAY;
调用延时
MOVP0,#0FFH;
关显示
SETBP2.0
MOVP0,#6DH;
显示5
CLRP2.1;
选中第二个数码管
LCALLDELAY
MOVP0,#0FFH
SETBP2.1
MOVP0,#066H;
显示4
CLRP2.2;
选中第三个数码管
SETBP2.2
MOVP0,#4FH;
显示3
CLRP2.3;
选中第四个数码管
SETBP2.3
MOVP0,#5BH;
显示2
CLRP2.4;
选中第五个数码管
SETBP2.4
MOVP0,#06H;
显示1
CLRP2.5;
选中第六个数码管
SETBP2.5
CLRP2.6;
选中第七个数码管
MOVP0,#21H;
显示6
SETBP2.6
CLRP2.7;
选中第八个数码管
MOVP0,#7AH;
显示7
SETBP2.7
AJMPMAIN;
重新开始
DELAY:
;
延时子程序
MOVR7,#20H
MOVR6,#30H
D2:
DJNZR6,D2
DJNZR7,D1
RET
DISTAB:
DB3FH,06H,5BH,4FH
DB66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH
DB39H,5EH,79H,71H
五、附加题(完成分值:
20分/单个附加题,附加题要求当场给指导老师检查结果,否则无效。
)
1.修改程序,稳定循环显示“GOOD”、“HELLO”、“CSU”、“D510”,程序如何修改?
MOVR1,#7FH
MOVR2,#7FH
MOVR3,#7FH
MOVR4,#7FH
MOVP2,#0FFH
MOVP0,#3FH
CLRP2.0
LCALLDELAY
MOVP0,#0FFH
MOVP0,#03FH
MOVP0,#7DH
DJNZR1,LOOP1
LOOP2:
MOVP0,#38H
MOVP0,#038H
CLRP2.2