单片机实验总汇(2)

2020-04-14 02:09

Mcs51系列单片机实训指导书

实验三 冒泡排序

一、实验目的

熟悉使用MCS51指令,掌握汇编语言的设计和调试方法,了解如何使用高效方法对数据排序。

二、实验内容

编写并调试一个排序程序,要求使用冒泡法将一组数据从小到大重新排列。

三、程序框图

开始初始化堆栈将待排序数组转移到内部30H开始的RAM中数据数-1→R7,数据交换标志bSort=0 PUSH 07H被比较数地址R0=30H比较数地址R1=R0+1NDEC R7@R0>@R1?Y@R0与@R1互换1→bSortINCINCNR0R1NR7=R7-1 R7=0?YPOPR7bSort=0?Y结束冒泡排序程序框图

四、实验步骤

使用断点方式调试程序,检查内部RAM 30H~3FH中数据是否按从小到大的顺序排列。

五、程序清单 bSort BIT F0 ORG 0000H LJMP STAR ORG 0100H STAR: MOV SP,#60H ;堆栈 MOV R0,#30H ;存放待排序数据的首地址 MOV R7,#16 ;数据个数 MOV DPTR,#TAB_1 STAR1: CLR A MOVC A,@A+DPTR MOV @R0,A ;将数据移入内部RAM中 INC R0

6

Mcs51系列单片机实训指导书

INC DPTR DJNZ R7,STAR1 MOV R7,#16-1 ;存放比较次数 STAR2: PUSH 07H MOV R0,#30H ;存放启始地址 CLR bSort MOV R1,00H INC R1 MOV A,@R0 STAR3: MOV B,A MOV A,@R1 CJNE A,B,$+3 JNC STAR5 XCH A,@R0 MOV @R1,A SETB bSort STAR5: INC R0 INC R1 DJNZ R7,STAR3 POP 07H JNB bSort,Exit DEC R7 SJMP STAR2 Exit: SJMP $ TAB_1: DB 0H,5H,6H,3H,8H,92H,04H,57H,46H,01H,0FFH,0A0H,45H,99H,55H,66H END 六、思考题

你还知道哪些排序方法?另外编写一个排序子程序。(数据结构方面的教材上有十几种排序方法)。

7

Mcs51系列单片机实训指导书

实验四 电子钟(定时器、中断综合实验)

一、实验目的

熟悉MCS51类CPU的定时器、中断系统编程方法,了解定时器的应用、实时程序的设计和调试技巧。

二、实验内容

编写一个时钟程序,产生一个50ms的定时中断,对定时中断计数,将时、分、秒显示在数码管上。

三、程序框图

开始初始化堆栈给时钟单元赋初值使用定时器方式一,相关寄存器赋初值开中断,开定时器调显示刷新标志=1?Y清0刷新标志中断处理主程序电子钟程序框图N中断开始恢复定时器初值50ms单元+150ms单元=20?Y50ms单元复位0 秒单元+1秒单元=60?Y秒单元复位0 分单元+1NNN时单元=24?Y时单元复位01→刷新显示标志中断返回N分单元=60?Y分单元复位0 时单元+1

四、实验步骤

1、连线说明:

D3区 :CLK D3区 :CS D3区 :A0 —— B2区:2M —— A3区:CS5 —— A3区:A0 2、时间显示在数码管上

五、程序清单 ms50 DATA sec DATA min DATA hour DATA buffer DATA EXTRN CODE(Display8) ORG

31H

32H 33H 34H 35H 0000H

8

;存放多少个50ms ;秒 ;分 ;时

;显示缓冲区

Mcs51系列单片机实训指导书

LJMP ORG LJMP ORG STAR: MOV MOV MOV MOV MOV MOV MOV MOV MOV SETB STAR1: LCALL JNB CLR SJMP ;中断服务程序 INT_Timer0: MOV MOV PUSH MOV INC CJNE MOV INC INC CJNE MOV INC INC CJNE MOV INC INC CJNE MOV ExitInt1: SETB ExitInt: POP RETI HexToBCD: MOV DIV MOV

STAR

000BH

INT_Timer0 0100H SP,#60H ms50,A hour,#12 min,#59 sec,#50 TH0,#60 TL0,#176 TMOD,#1 IE,#82H TR0 Display F0,$ F0 STAR1

TL0,#176-5 TH0,#60 01H

R1,#ms50 @R1

@R1,#20,ExitInt @R1,#0 R1 @R1

@R1,#60,ExitInt1 @R1,#0 R1 @R1

@R1,#60,ExitInt1 @R1,#0 R1 @R1

@R1,#24,ExitInt1 @R1,#0 F0 01H

B,#10 AB @R0,B

9

;定时器T0中断处理入口地址

;堆栈

;清零ms50

;设定初值: 12:59:50

;定时中断计数器初值 ;定时50ms

;定时器0:方式一 ;允许定时器0中断 ;开定时器T0 ;调用显示

;需要重新显示时间

;50ms单元加1

;恢复初值

;秒加1

;分加1

;时加1

Mcs51系列单片机实训指导书

Display: INC MOV INC RET MOV MOV ACALL MOV INC MOV ACALL MOV INC MOV ACALL MOV LCALL RET END R0 @R0,A R0

R0,#buffer A,sec HexToBCD @R0,#10H R0 A,min HexToBCD @R0,#10H R0 A,hour HexToBCD R0,#buffer Display8

;第三位不显示

;第六位不显示

六、思考题

1、电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?

2、使用定时器方式二,重新编写程序。

10


单片机实验总汇(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:离退休人员--劳动关系和劳务关系的区别

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: