单片机实验报告Word文档格式.docx
- 文档编号:20303573
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:16
- 大小:1.23MB
单片机实验报告Word文档格式.docx
《单片机实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机实验报告Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
低四位相加
个位数据放入R0
进位位与高四位相加
十位数据放入R1
进位位即百位数据放入R2
结束
上机调试程序:
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVR0,#34H
MOVR1,#78H
MOVR2,#12H
MOVR3,#56H
MOVA,R0
ADDA,R2
DAA
MOVR2,A
ANLA,#0FH
MOVR0,A
MOVA,R2
ANLA,#0F0H
SWAPA
ADDA,R1
ADDA,R3
MOVR3,A
MOVR1,A
MOVA,R3
MOVR3,#0H
MOVR2,A
RET
END
程序单步运行:
查看结果:
五、实验总结:
通过对双字节BCD加法编程的练习,掌握了WAVE6000软件的使用,进一步理解并掌握了MCS-51单片机的指令系统,学会了双字节BCD加法的程序设计,对汇编语言的程序设计基本方法与基本思路有了感性的认识。
实验二冒泡排序实验
一、实验目的和要求:
1.熟悉MCS-51指令系统,掌握程序设计方法。
2.掌握排序程序算法。
3.掌握用循环程序实现数据排序的基本方法。
4.根据实验内容,编写C51源程序。
5.上机调试程序,记录相关调试信息。
二、实验内容和原理:
编写并调试一个通用排序子程序,其功能为将RAM的40H~4FH单元16字节无符号二进制整数按从小到大顺序排序,将排序后数据存储于RAM的50H~5FH单元中。
从40H单元的第一个数开始依次和相邻单元的另一个数比较,如果顺序对,则不作任何操作;
如果顺序不对,则将这两个数交换位置。
这样,在完成第1遍n-1次比较后,最大的数到最后,所以第2遍比较只需要比较n-2次,最多作n-1遍比较就可完成排序。
在比较中设立一个标志位flag,每次进入外循环时把flag清零,在内循环结束时若flag=1,说明排序未完成,进入外循环;
若flag=0.说明排序完成,程序结束。
三、主要仪器设备:
计算机一台;
WAVE6000软件
四、上机源程序:
源程序:
LJMPMAIN
ORG40H
MOVR5,#10H
MOVR0,#40H
MOVA,#0H
MOVR1,#0H
MOVR2,#10H
LOOP0:
ACALLLOOP
INCR0
INCR1
DJNZR5,LOOP0
LOOP1:
MOVB,#0FH
LOOP2:
MOVA,@R0
MOV10H,A
MOV11H,@R0
LOOP3:
CJNEA,11H,LOOP4
LOOP4:
JCLOOP5
MOV@R0,10H
DECR0
MOV@R0,A
LOOP5:
DJNZB,LOOP2
DJNZR2,LOOP1
SJMP$
LOOP:
MOVDPTR,#TAB
MOVA,R1
MOVCA,@A+DPTR
TAB:
DB3,5,4,1,7,9,3,4,6,1,12,45,23,17,34,12
END
五、实验结果与分析:
仿真:
仿真结果:
执行后可见实现了数据由小到大的排序
六、讨论、心得:
这次通过冒泡排序法对一组数据进行了排序,再一次复习了排序的算法,并且利用了查表,以及多层次循环,提高了对程序设计的敏感程度,以及设计能力。
实验3彩灯闪烁控制软硬件设计
∙实验目的
∙掌握MCS51单片机I∕O口的基本输入∕输出功能。
∙学习延时子程序的编写和使用。
二、实验设备
计算机一台,单片机实验仪一台,WAVE6000
∙实验内容和原理
1、实验内容
∙P0作为输出口,接8只发光二极管,编写程序使发光二极管实现“单灯左移”。
P0作为输出口,接8只发光二极管,P2作为输入口,P2.0和P2.1接两个按键PB0和PB1;
当按下PB0时P0口上连接的8只发光二极管全亮;
当按下PB1时P0口上连接的8只发光二极管全灭。
2、实验原理
∙P0口为双向I∕O口,具有较大的负载能力,作为地址、数据复用口外,还可以用作通用I∕O口。
P2口为标准双向口,常作为通用I∕O使用。
当某一口线作为输入口线时,必须向锁存器相应位写入“1”,该位才能作
为输入。
∙常用延时方法
常用循环指令来实现延时,设晶振为12MHZ,因此1个机器周期为1vs.
DELAY:
MOVR5,#250
D1:
MOVR6,#200
DJNZR6,$
DJNZR5,D1
共延时100753×
1vs=100753vs=0.1s
∙实验源程序
输入:
MOVP2,0FFH;
初始化P2口为输入口
START:
JBP2.0,LP0;
判断P2.0是否为0
MOVP0,#00H;
P2.0为0则点亮LED
LP0:
JBP2.1,START;
判断P2.1是否为0
MOVP0,#0FFH;
P2.1为0则灭掉LED
AJMPSTART;
返回
输出:
MOVP0,0FFH;
LED全部灭掉
MOVA,0FEH;
初始化A
MOVP0,A;
点亮LED
ACALLDELAY;
调用子程序,延时0.1s
RLA;
循环左移A
;
延时子程序
DELAY:
MOVR5,#250;
设定外循环次数
D1:
MOVR6,#200;
设定内循环次数
DJNZR6,$;
内循环,在此循环200次
DJNZR5,D1;
外循环,在此循环250次
RET;
返回子程序
∙讨论、心得
通过对彩灯闪烁软硬件编程的练习,掌握了WAVE6000软件的使用,进一步理解并掌握了MCS-51单片机的指令系统,学会了彩灯闪烁软硬件的程序设计,对汇编语言的程序设计基本方法与基本思路有了感性的认识。
实验四定时计数器
∙实验目的和要求:
∙加深对MCS-51单片机定时/计数器内部结构、工作原理和工作方式的理解。
∙掌握定时计数器工作在定时和计数两种状态下的变成方法。
3、掌握中断服务程序的设计方法。
4、定时器实验要求
∙画出实验程序流程图,编写汇编语言和C51程序。
∙上机调试程序,用示波器检验结果。
5、计数器实验要求
∙画出实验程序流程图,编写汇编程序。
∙上机调试该程序。
二、主要仪器设备:
单片试验仪一台;
∙实验内容和原理:
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种工作i方式。
在定时工作状态下,输入的时钟脉冲是由晶体荡器的输出经12分频取得的,因此,定时器看作是对单片机及其周期的计数器。
若晶振频率为12MHz,贼定时器的加1计数器每隔1us加1。
加1计数器计满溢出时才申请中断,所以在给加1计数器赋予计数初值时,输入的是加1计数器计数的最大值与这一计数值的差值。
定时器初始化程序
定时器包括两个控制寄存器TMOD和TCON,向TMOD和TCON写入相应的值来设置各个定时器的操作模式和控制功能。
启动定时器的步骤如下:
∙设定TMOD的值:
TMOD=10H,设置T1工作于定时方式1。
∙设定IE的值:
启动中断SETBET1。
(3)设定TL1和TH1的值:
TL1=0B0H,TH1=3CH。
(4)启动T1定时:
SETBTR1。
3计数器计数初值的确定
T0采用计数方式2,计数初值Count=2*8-5=FBH。
4计数器初始化程序
(1)设定TMOD的值:
TMOD=06H,设置T0工作于计数方式2。
(2)设定TL0和TH0的值:
TL0=0FBH,TH0=0FBH。
(3)启动T0计数:
SETBTR0。
四、实验源程序
ORG0000H
ORG0030H
MOVSP,#70H
MOVR6,#04H
MOVR0,#20H
LJMPDJF
ORG0200H
DJF:
MOVA,R6
CLRC
DJF1:
MOVA,@R0
ADDCA,@R1
MOV@R0,A
DJNZR2,DJF1
CLRA
ADDCA,#00H
五、讨论、心得
通过对定时器编程的练习,掌握了WAVE6000软件的使用,进一步理解并掌握了MCS-51单片机的指令系统,学会了定时器的程序设计,对汇编语言的程序设计基本方法与基本思路有了感性的认识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告