太原理工大学单片机实验Word格式.docx
《太原理工大学单片机实验Word格式.docx》由会员分享,可在线阅读,更多相关《太原理工大学单片机实验Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
(3)学习汇编语言的基本设计方法
三、实验要求
(1)掌握双字节BCD加法程序的编写方法
(2)根据实验任务和要求,编制源程序
(3)上机调试程序,记录相关调试信息
(4)写出实验报告
四、实验内容
将两个双字节十进制数相加,得出结果并存放在40H单元中。
五、实验原理
两个BCD双字节带进位相加,得出结果用da指令完成累加器a中的运算结果自动修正。
六、主要仪器设备
1、计算机一台
2、操作系统:
Windows98/2000/XP
3、应用软件:
WAVE6000
七、操作方法与实验步骤
org0000h
mov20h,#92h
mov30h,#39h
mova,20h
addca,30h
daa
mov40h,a
clra
addca,psw.7
mov41h,a
八、实验数据记录和处理
九、实验结果与分析
由实验结果可以看出,双字节BCD码:
92和39相加得到131;
72和23相加得95。
此源程序完成了带进位的双字节BCD的加法运算。
十、实验总结
这是本门课程的第一次上机实验,我深深地发现,能看懂程序跟会编写程序完全是两码事,整个程序的流程以及程序的思想,都需要系统全面的规划与编写,细节之处要相当注意,细心编写仔细检查。
…………………………………装……………………………………订………………………………………线……………………………………………
实验名称冒泡排序实验同组人
专业班级学号姓名成绩
一、实验名称
冒泡排序实验
二、实验目的
(1)熟悉MCS-51指令系统,掌握程序设计方法
(2)掌握排序程序算法
(3)掌握用循环程序实现数据排列的基本方法
三、实验要求
(1)根据试验任务要求,编制C51源程序
(2)上机调试程序,记录相关调制信息
(3)写出实验报告
编写并调试一个通用排序子程序,其功能为将RAM的40H~4FH单元16个字符无符号二进制整数按从小到大顺序排列,将排序后数据存储于RAM的50H~5FH单元中。
从40H单元的第一个开始依次和相邻单元的另一个数比较,如果顺序对,则不作任何操作;
如果顺序不对,则将这两个数交换位置。
这样在完成第一遍1n次比较后,最大的数到了最后,所以第二遍比较只需要比较2n次,最多作1n遍比较就可完成排序。
在比较中设立一个标志位flag,每次进入外循环时把flag清零,在内循环结束时若flag=1说明排序未完成,进入外循环;
若flag=0,说明排序完成,程序结束。
WAVE6000
七、操作方法与实验步骤
ORG0000h
MOVr7,#10h
movr0,#40h
movr1,#20h
start:
mova,r1
mov@r0,a
incr0
DECr1
djnzr7,start
movr7,0FH
LP0:
MOVR0,#40H
MOVA,R7
MOVR6,#2H
CLR7FH
LP1:
MOVA,@R0
MOV20H,@R0
INCR0
MOV21H,@R0
CLRC
SUBBA,21H
JCLP2
SETB7FH
MOV@R0,20H
DECR0
MOV@R0,21H
LP2:
DJNZR6,LP1
JNB7FH,LP3
MOVR7,#2H
DJNZR7,LP0
LP3:
MOVR7,#10H
MOVR0,#40H
MOVR1,#50H
LP4:
MOVA,@R0
MOV@R1,A
INCR0
INCR1
DJNZR7,LP4
MOV60H,R0
MOV80H,R1
SJMP$
END
八、实验数据记录和处理
九、实验结果与分析
由实验结果可以看出,数据排序已变成由小到大排序,不论输入是从大到小排序,从小到大排序还是混乱排序,都可以得出通过冒泡排序的排序程序实现由小到大的排序。
十、实验总结
这次的上机编写程序,发现自己好多语句都忘记了,还有几个指令不太了解,需要跟同学交流,讨论,才能完整系统的理解整个流程,才能更准确的编写出符合题目要求的程序,而且更加节省时间,所以平时对课本上的知识的理解更是重要。
实验名称子程序调用同组人
一、实验名称
子程序调用
1、通过编辑练习常用指令,理解并掌握MCS-51单片机的指令系统。
2、掌握子程序调用的程序设计。
3、掌握子程序调用过程中保护现场与恢复现场以及调用程序与被调用程序之间的参数传递。
4、学习汇编语言的程序设计方法
三、实验要求
(1)编写相应程序
(2)上级调试通过程序
(3)写出实验报告
编写程序,计算Y=,a1,a2,&
#8230;
&
,a10存放在内部RAM的20H开始的存储区内,计算所得结果放入R2和R3中。
五、主要仪器设备
(1)计算机一台
(2)操作系统:
(3)应用软件:
六、操作方法与实验步骤
ORG0000H
MAIN:
MOVR0,#20H
MOVR7,#10
MOVR3,#0
MOVR2,#0
LOOP:
MOVA,@R0
ACALLSORT
ADDA,R2
MOVR2,A
CLRA
ADDCA,R3
MOVR3,A
INCR0
DJNZR7,LOOP
SJMP$
SORT:
MOVDPTR,#TAB
MOVCA,@A+DPTR
RET
TAB:
DB0,1,4,9,16
DB25,36,49,64,81
EN:
NOP
END
七、实验结果与分析
子程序调用不必重复编写同样的程序,有利于提高编码效率,缩短源程序与目标程序的长度,节省程序存储的空间,使程序模块化、通用化,便于阅读、交流。
八、实验总结
这次实验与以前学过的知识有联系,相结合,让我意识到前后知识的关联,实验是我们可以将知识学以致用的一个平台,所学知识的实践性得到了充分体现,让我对实践跟理论有了更深的理解,也对往后学习与生活有了更大的动力。
实验名称定时/计数器应用设计同组人
定时/计数器应用设计
二、实验目的
(1)加强对MCS-51单片机定时/计数器内部结构、工作原理和工作方式的理解
(2)掌握定时/计数器工作在定时和计数两种状态下的编程方法
(3)掌握中断服务程序的设计方法
(2)上级调试通过程序
(3)写出实验报告
(1)定时实验
在使用12MHz晶振的条件下,用T1产生50ms定时,两个7段LED数码管从“00”开始显示,每1s加1,达到“59”后,再从“00”开始,完成60s功能。
(2)计数器实验
用T0对外部输入脉冲进行计数。
P0口上接8只发光二级管,开始时8只发光二级管全灭,然后由T0输入脉冲,5个脉冲后,8只发光二级管全亮,持续5个脉冲后全灭,再等5个脉冲输入后全亮,如此循环。
五、实验原理
定时/计数器实际上是加1计数器,当它具有对固定时间间隔的MCS-51单片机包括T0和T1两个定时/计数器。
每个定时/计数器有4种工作方式。
(1)定时器计数初值的确定
在定时工作状态下,输入的时钟脉冲是由晶体振荡器的输出经12分频取得的,因此,定时器
可以看做是对单片机机器周期的计数器。
若晶振频率为12MHz,则定时器的加1计数器每
1μs加1。
加1计数器计满溢出是才申请中断,所以在给加1计数器赋计数初值时,输入的加1计数器计数的最大值与这一计数值的差值。
设加1计数器计数的最大值为M,计数值为N,计数初值为Count,则Count的计算方法如下:
计数状态:
Count=M-N
定时状态:
Count=M-定时时间/T,T=12/oscf
若单片机的时钟频率为12MHz,T1工作在定时方式1定时时间为50ms,则其计数初值Count为:
Count=M-定时时间/T=162-50000/1=3CB0H所以,定时计数器的初值为TH1=3CH,TL1=0B0H。
(2)定时器初始化程序
定时器包括两个控制寄存器TMOD和TCOD,向TMOD和TCOD写入相应的值来设置各个定时器的操作模式和控制