单片机实验讲义Word文档下载推荐.docx
- 文档编号:20884603
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:48
- 大小:344.49KB
单片机实验讲义Word文档下载推荐.docx
《单片机实验讲义Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机实验讲义Word文档下载推荐.docx(48页珍藏版)》请在冰豆网上搜索。
请用户修改程序,完成此操作。
实验二二进制BCD码转换
1.掌握简单的数值转换算法
2.基本了解数值的各种表达方法
单片机中的数值有各种表达方式,这是单片机的基础。
掌握各种数制之间的转换是一种基本功。
我们将给定的一字节二进制数,转换成二十进制(BCD)码。
将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。
2.启动PC机,打开KEIL软件,软件设置为模拟调试状态。
在所建的Project文件中添加TH2.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA)(在MEMORY#1中输入D:
30H回车),点击暂停按钮,观察地址30H、31H、32H的数据变化,30H更新为01,31H更新为02,32H更新为03。
用键盘输入改变地址30H、31H、32H的值,点击复位按钮后,可再次运行程序,观察其实验效果。
修改源程序中给累加器A的赋值,重复实验,观察实验效果。
RESULTEQU30H
ORG0000H
LJMPSTART
BINTOBCD:
MOVB,#100
DIVAB
MOVRESULT,A;
除以100得百位数
MOVA,B
MOVB,#10
MOVRESULT+1,A;
余数除以10得十位数
MOVRESULT+2,B;
余数为个位数
RET
START:
MOVSP,#40H
MOVA,#123
CALLBINTOBCD
END
实验三二进制ASCII码转换
1.了解BCD值和ASCII值的区别
2.掌握用查表的方法将BCD值转换成ASCII值
此实验主要让学生了解数值的BCD码和ASCII码的区别,利用查表方法可以快速地进行数值转换。
进一步掌握数值的各种表达方式。
现在我们给出一个BCD数,将其转换成ASCII值。
如下:
将累加器A的值拆为二个ASCII码,并存入Result开始的二个单元,例程A赋值#1AH。
在所建的Project文件中添加TH3.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA)(在MEMORY#1中输入D:
30H回车),点击暂停按钮,观察地址30H、31H的数据变化,30H更新为31,31H更新为41。
用键盘输入改变地址30H、31H的值,点击复位按钮后,可再次运行程序,观察其实验效果。
ORG0
ASCIITAB:
DB‘0123456789ABCDEF'
;
定义数字对应的ASCII表
BINTOHEX:
MOVDPTR,#ASCIITAB
MOVB,A;
暂存A
SWAPA
ANLA,#0FH;
取高四位
MOVCA,@A+DPTR;
查ASCII表
MOVRESULT,A
MOVA,B;
恢复A
取低四位
MOVRESULT+1,A
MOVA,#1AH
CALLBINTOHEX
实验四程序跳转表
1.了解程序的多分支结构
2.掌握多分支结构程序的编程方法
多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。
若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序。
在所建的Project文件中添加TH4.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA)(在MEMORY#1中输入D:
30H回车),点击暂停按钮,观察地址30H、31H、32H、33H的数据变化,30H更新为0,31H更新为1,32H更新为2,33H更新为3。
用键盘输入改变地址30H、31H、32H、33H的值,点击复位按钮后,可再次运行程序,观察其实验效果。
修改源程序中给30H~33H的赋值,重复实验,观察实验效果。
1.流程图
2.源程序
ORG0
LJMPSTART
FUNC0:
MOV30H,#0
FUNC1:
MOV31H,#1
FUNC2:
MOV32H,#2
FUNC3:
MOV33H,#3
FUNCENTER:
ADDA,ACC;
AJMP为二字节指令,调用号×
2
MOVDPTR,#FUNCTAB
JMP@A+DPTR
FUNCTAB:
AJMPFUNC0
AJMPFUNC1
AJMPFUNC2
AJMPFUNC3
MOVA,#0
CALLFUNCENTER
MOVA,#1
MOVA,#2
MOVA,#3
实验五内存块移动
1.了解内存块的移动方法
2.加深对存储器读写的认识
块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。
本程序是给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。
移动3000H-->
4000H,256字节。
在所建的Project文件中添加“TH5.ASM”源程序进行编译,编译无误后,打开数据窗口(XDATA),观察地址3000H(MEMORY#2窗口输入X:
3000H难后回车),起始256个字节存储块和4000H(MEMORY#2窗口输入X:
4000H难后回车),起始的256个字节存储块,若各单元内数据对应相同,则用键盘输入改变其中一块的数据,全速运行程序。
点击暂停按钮,观察两个存储块的数据,可以看到两块数据已相同,说明存储块已移动。
ORG0
MOVR0,#30H
MOVR1,#00H
MOVR2,#40H
MOVR3,#00H
MOVR7,#0
LOOP:
MOVDPH,R0
MOVDPL,R1
MOVXA,@DPTR
MOVDPH,R2
MOVDPL,R3
INCR1
INCR3
DJNZR7,LOOP
否
是
1.若源块地址和目标块地址有重叠,该如何避免?
2.请思考给出块结束地址,用地址减一方法移动块的算法。
实验六数据排序
掌握排序程序的设计方法。
二、实验内容
本例程采用交换排序法将内部RAM中的50~59H单元中的10个单字节无符号二进制数按从小到大的次序排列,并将这一列排序后的数据从小到大依次存贮到外部RAM1000H开始处。
三、实验步骤
1.启动PC机,打开KEIL软件,软件设置为模拟调试状态。
在所建的Project文件中添加TH6.ASM文件,打开TH6.ASM文件,阅读、分析、理解程序,编译程序进行调试。
2.在VIEW菜单中打开MEMORYWINDOW数据窗口,分别观察50H(在MEMORY#1中输入D:
50H)、1000H(MEMORY#2窗口输入X:
1000H)。
3.可在程序指令NOP处设置断点,在第一个断点处可观察50~59H单元内容是否为10个任意排列原始数据。
4.在第二个断点处可观察每次排序的结果。
5.可单步执行程序观察排序过程。
四、实验参考程序(见光盘中的程序文件夹)
JMPMAIN
ORG0100H
MAIN:
MOVR0,#50H
MOV@R0,#5FH
INCR0
MOV@R0,#56H
INCR0
MOV@R0,#5AH
MOV@R0,#5EH
MOV@R0,#51H
INCR0
MOV@R0,#5BH
MOV@R0,#53H
MOV@R0,#58H
MOV@R0,#57H
MOV@R0,#55H;
将10个随机数送入内部RAM的50~59H单元
NOP;
可在此处设置断点
ACALLQUE;
调用排序子程序
OUT:
MOVDPTR,#1000H
MOVR7,#10
OUT1:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR7,OUT1
HERE:
AJMPHERE
可在此处设置断点,观察每次排序结果
QUE:
CLR00H;
清交换标志
MOVR1,#50H
MOVR6,#09H
I3:
MOVA,R6
MOVR7,A
MOVA,R1
MOVR0,A
MOVA,@R0
I2:
INCR0
MOVR2,A
SUBBA,@R0
MOVA,R2
JCI1
SETB00H
XCHA,@R0
I1:
DJNZR7,I2
JNB00H,STOP
MOV@R1,A
INCR1
DJNZR6,I3
RET
END
实验七拆字/拼字实验
一、实验目的:
掌握汇编语言设计和调试方法。
二、实验内容:
1、将片外RAM中地址为7000H中的内容拆开,高位送7001H低位,低位送7002H低位。
2、将片外RAM中地址为7000H、7001H中的内容拼入7002H(7000H低位送7002H高位,7001H低位送7002H低位)。
三、实验程序流程图及参考程序:
org0000h
ajmpstart
org0040h
start:
movdptr,#7000h
movxa,@dptr
anla,#0fh
swapa
movr2,a
incdptr
movxa,@dptr
adda,r2
movx@dptr,a
sjmp$
end
4、拆字
movdptr,#7000h
anla,#0f0h
mova,r2
四、实验步骤:
在所建的Project文件中添加TH7.ASM文件,打开TH7.ASM文件,阅读、分析、理解程序,编译程序进行调试。
2.在VIEW菜单中打开MEMORYWINDOW数据窗口,分别观察7000H、7001H、7002H(在MEMORY#1中输入X:
7000H)。
3.察看拼字/拆字结果。
4.可单步执行程序观察每个过程。
实验八数据排序
熟悉80C51单片机的指令系统和程序设计方法。
编写并调试一个排序程序,其功能为用起泡排序将内部RAM中首地址为30H中的10个无符号数,按从小到大的顺序排列。
三、实验程序流程图:
在所建的Project文件中添加TH8.ASM文件,打开TH8.ASM文件,阅读、分析、理解程序,编译程序进行调试。
2.在VIEW菜单中打开MEMORYWINDOW数据窗口,分别观察30H~3FH(在MEMORY#1中输入D:
30H)。
3.察看排序结果。
4.可单步执行程序观察排序过程。
排序
acallchushi
movr6,#09h
ss0:
mova,r6
movr7,a
setbf0
movr0,#30h
movr1,#31h
ss1:
mova,@r0
clrc
subba,@r1
jcnext
clrf0
mova,@r0
xcha,@r1
mov@r0,a
next:
incr0
incr1
djnzr7,ss1
jbf0,exit
djnzr6,ss0
exit:
sjmp$
chushi:
movr0,#30h
movdptr,#array
movr7,#0ah
ss2:
clra
movca,@a+dptr
incr0
djnzr7,ss2
ret
array:
db2,8,4,7,5,1,0,9,3,6
实验九数据查找
熟悉汇编程序设计。
在7000H~700FH中查出有几个字节为零,并统计零的个数放到内部RAM的30H单元中。
在所建的Project文件中添加TH9.ASM文件,打开TH9.ASM文件,阅读、分析、理解程序,编译程序进行调试。
2.在VIEW菜单中打开MEMORYWINDOW数据窗口,分别观察30H(在MEMORY#1中输入D:
3.察看“0”的个数。
4.可单步执行程序观察查找过程。
数据查找
ajmpmain
main:
mov30h,#00h
movr7,#10h
movxa,@dptr
jnzss2
inc30h
incdptr
clra
movx@dptr,a
cpla
djnzr7,next
实验十无符号双字节乘法
掌握80C51单片机汇编程序设计方法。
编写程序利用单字节乘法指令,实现双字节乘法运算(R2R3)*(R6R7)—〉(30H~33H)。
在所建的Project文件中添加TH10.ASM文件,打开TH10.ASM文件,阅读、分析、理解程序,编译程序进行调试。
2.在VIEW菜单中打开MEMORYWINDOW数据窗口,分别观察30H~33H(在MEMORY#1中输入D:
16位无符号乘法:
mov31h,#00h
mov32h,#00h
mov33h,#00h
mova,r3
movb,r7
mulab
mov33h,a
mov32h,b
adda,32h
mov32h,a
mova,b
addca,31h
mov31h,a
movb,r6
addca,30h
mov30h,a
adda,31h
movr2,#12h
movr3,#34h
movr6,#56h
movr7,#78h
第二章单片机基础实验
实验一P1口输入、输出实验
1.学习P1口的使用方法
2.学习延时子程序的编写和使用
P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
实验
(一):
本实验需要用到单片机最小应用系统(F1区)和十六位逻辑电平显示模块(I4区)。
用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1.使用单片机最小应用系统。
用扁平数据线连接单片机P1口JD1F与十六位逻辑电平显示模块JD2I,打开相关模块电源。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:
缺口朝上。
3.打开KeiluVision2仿真软件,首先建立本实验的项目文件,接着添加“TH7_P1A.ASM”源程序,进行编译,直到编译无误。
4.进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序,观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验
(二):
本实验需要用到单片机最小应用系统(F1区)、十六位逻辑电平显示模块(I4区)以及八位逻辑电平输出模块(B1区)。
用P1.0、P1.1作输入接两个拨断开关,P1.2、P1.3作输出接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1.用导线分别把单片机最小应用系统的P1.0、P1.1连接到两个拨断开关(B1区)K0、K1,P1.2、P1.3连接到两个发光二极管(I4区)L0、L1。
2.打开“TH7_P1B.ASM”源程序,编译无误后,全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为熄灭,向下拨为点亮。
3.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)
注:
在做完实验时记得养成一个好习惯:
把相应单元的短路帽和电源开关还原到原来的位置!
以下将不再重述。
四、流程图及源程序
1.流程图
(B)P1口输入输出程序框图
(A)P1口循环点灯程序框图
2.实验参考程序(见光盘中的程序文件夹)
(1)对于本实验延时子程序
Delay:
MOVR6,0
MOVR7,0
DelayLoop:
DJNZR6,DelayLoop
DJNZR7,DelayLoop
本模块使用12MHz晶振,粗略计算此程序的执行时间为多少?
六、电路图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 讲义