单片机实验指导书(汇编)

更新时间:2023-03-18 08:28:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 单片机认识实验

一、 实验目的:1、掌握WAVE6000软件的使用

2、熟悉MCS-51系列单片机的指令系统。 二、实验仪器:

PC机(WAVE6000软件) 三、实验内容:

在PC机上使用WAVE6000软件,分别输入下面两段程序并调试执行

程序1 MOV 30H,#40H MOV R0,#30H

MOV A,@R0 MOV R1,A

MOV DPTR,#1000H MOVX @DPTR,A

程序2

MOV A,60H

XCH A,70H MOV 60H,A 四、实验步骤

1、启动WAVE6000软件

2、输入练习程序 3、保存程序 4、汇编源程序

5、程序执行前的检查 6、运行,调试程序

单步法运行程序

断点法运行程序 连续法运行程序 8、检查运行结果

五、实验结果

程序1 地址 运行前内容 运行后内容 30H 1000H 程序2 地址 运行前内容 运行后内容 60H 70H 第1页

实验二 顺序结构程序的调试

一、 实验目的:1、掌握顺序结构程序设计

2、掌握WAVE软件调试程序的方法.

二、实验内容:

编写下列程序并调试: 1、将片内RAM的70H单元的内容拆开,高4位送71H单元低4位,低4位送72H单元的低4位,71H、72H单元高4位清零。

2、将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入30H单元。

三、实验程序框图

结束 70H单元内容送A (A) 中高低4位交换 屏蔽高4位后送71H 截取R3中的低4位 70H单元内容送A 开始 开始 截取R2中的高4位 合并数据 屏蔽高4位后送72H 结束 程序1流程图 程序2流程图 三、 实验步骤:

程序1

①启动WAVE软件,新建一个文件,保存并取名为LX1.ASM。 ②输入源程序1,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查70H、7lH和72H单元中的内容,并记录在下表左半边

④用全速执行命令开始执行程序

⑤检查7lH和72H单元中的内容,并记录在下表的右半边 70H 执行前的单元内容 71H 72H 执行后的单元内容 71H 72H 第2页

⑥修改执行前70H、7lH和72H单元中的内容,重复执行④-⑤步骤,并记录程序执行后表格中的数据。 程序2

①新建一个文件,保存并取名为LX2.ASM。 ②输入源程序2,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查R2、R3和30H单元中的内容,并记录在下表左半边的格子中 ④用全速执行命令开始执行程序

⑤检查30H单元中的内容,并记录在下表的右半边格子中 R2 执行前单元内容 R3 30H 执行后单元内容 30H ⑥修改执行前R2、R3、30H单元中的内容,重复执行④-⑤步骤,并记录程序执行后的数据。

(3)思考:如何用断点方法调试本程序。

第3页

实验三 分支和循环结构程序的调试

一、实验目的:1、掌握分支和循环结构程序的设计

2、进一步掌握WAVE软件调试程序的方法.

二、实验内容:

编写下列程序并调试:

1、 设a数已存放在累加器A中, b数已存放在寄存器B中,计算下式,并

将结果y送入片内RAM的30H单元。 a+b (b≥0) Y=

a-b (b<0)

2、将片内30H-3FH单元的内容清零。

3、从片内RAM的20H单元开始,有30个带符号数据,统计出正数的个数,并将结果存到35H单元中。

三、实验程序框图

b≥0? 开始 开始 Y R0←#30H R2←#30 N a-b a+b 30H←结果 ((R0))←0 R0+1 Y R2-1=0?

N 结束 结束 程序1流程图 程序2流程图

四、实验步骤:

程序1

①启动WAVE软件,新建一个文件,保存并取名为LX3.ASM。 ②输入源程序1,正确进行机器汇编

第4页

③打开窗口菜单,选择数据窗口,检查A、B和30H单元中的内容,并记录在下表左半边

④用全速执行命令开始执行程序

⑤检查30H单元中的内容,并记录在下表的右半边 A 执行前的单元内容 B 30H 执行后的单元内容 30H ⑥修改执行前A、B中的内容,重复执行④-⑤步骤,并记录表格中执行后的数据。 程序2

①新建一个文件,保存并取名为LX4.ASM。 ②输入源程序2,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查30H-3FH单元中的内容,如果是零值,将它们修改为非零值。 ④用全速执行命令开始执行程序

⑤检查30H-3F单元中的内容,是否全为零。 ⑥修改执行前30H-3F单元中的内容,重复执行④-⑤步骤,重新检查30H-3F单元中的内容。 程序3

①启动WAVE软件,新建一个文件,保存并取名为LX5.ASM。 ②输入源程序3,正确进行机器汇编

③打开窗口菜单,选择数据窗口,检查35H、20H-3DH单元中的内容,并记录在下表左半边

④用全速执行命令开始执行程序

⑤检查35H单元中的内容,并记录在下表的右半边 执行前的内容 执行后的内容 20H-3DH 35H 35H ⑥修改执行前20H-3DH中的内容,重复执行④-⑤步骤,并记录执行后的数据。

第5页

实验四 并行IO口的应用

一、实验目的:1、掌握并行IO口的应用技术

2、掌握软硬联调的方法.

二、实验内容:

用单片机的P1口控制8个按键,P2口控制8个发光二极管,当检测到P1.0上的键按下时,P2.0上的灯亮; 当检测到P1.1上的键按下时, P2.0~P2.1上的灯亮; 当检测到P1.2上的键按下时,P2.0~P2.2上的灯亮;以此类推。当检测到P1.7上的键按下时,8个灯全亮。并可反复循环检测按键与点亮相应的灯。 三、画出硬件原理

四、实验程序框图

第6页

五、实验源程序

第7页

实验五 外部中断(急救车与交通灯)

一、实验要求

本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒,急救车通过后,交通恢复正常,本实验用单次脉冲申请外部中断,表示有急救车通过。 南北方向 东西方向 红灯 绿灯5S 黄灯闪烁9次 绿灯5S 红灯 黄灯闪烁9次 二、实验目的

1、学习外部中断技术的基本使用方法。 2、学习中断处理程序的编程方法。

三、实验电路及连线

+5V

10K

K 12INT0

GND 20P19XTAL118 XTAL2 GND 20P+5V 4.7u9RESET

1k

GND

+5VP1.01oSR470ΩP1.12oSY470ΩP1.23oSG470ΩP1.34oER470ΩP1.45oEY470ΩP1.56oEG470ΩP1.67P1.78MCS-51

四、实验框图

第8页

开始 外部中断入口 开外中断 保护现场 初始状态东西 南北都是红灯 东西,南北都亮红灯 状态1南北红 灯,东西绿灯 延时10秒 状态 东 2南北红灯,恢复现场 西绿灯闪转黄 中断返回 状态3南北绿 灯,东西红灯 状态 转黄灯,东西红灯 4南北绿灯闪

五、程序清单

SR EQU P1.0 ; 南北红灯 SY EQU P1.1 ; 南北黄灯 SG EQU P1.2 ; 南北绿灯 ER EQU P1.3 ; 东西红灯 EY EQU P1.4 ; 东西黄灯 EG EQU P1.5 ; 东西绿灯 ORG 0000H

LJMP START ORG 0003H LJMP JTDINT0 START: MOV SP, #70H

MOV TCON, #01H ; DOWN EDGE IT0 MOV IE, #81H ; ENABLE EA, EX0 SETB SR ; 南北, 东西均红灯

第9页

CLR SY CLR SG SETB ER CLR EY CLR EG

LOOP: SETB SR ; 南北红灯, 东西绿灯 CLR SY CLR SG CLR ER CLR EY SETB EG MOV A, #20 LCALL DELAY

SETB SR CLR SY CLR SG CLR ER CLR EY CLR EG CLR C MOV R7, #9 LOOP1: MOV EY, C MOV A, #1 LCALL DELAY CPL C

DJNZ R7, LOOP1

CLR SR CLR SY SETB SG SETB ER CLR EY CLR EG MOV A, #20 LCALL DELAY

CLR SR CLR SY

; 南北红灯, 东西黄灯闪; 南北绿灯, 东西红灯 ; 东西红灯, 南北黄灯闪 第10页

CLR SG SETB ER CLR EY CLR EG CLR C MOV R7, #9 LOOP2: MOV SY, C MOV A, #1 LCALL DELAY CPL C

DJNZ R7, LOOP2

LJMP LOOP

JTDINT0:CLR EA MOV B,P1

PUSH ACC SETB EA …………………

自己补充

CLR EA POP ACC

MOV P1,B SETB EA

RETI

DELAY: ; 延时0.25秒子程序,晶振6MHZ ………………….. …自己补充

…………………

RET END

第11页

实验六 定时器/计数器

一、实验目的:1、掌握Lab6000实验仪联机调试操作或PROTEUS软件

2、掌握单片机定时器/计数器的使用和编程方法

3、进一步掌握中断处理过程的编程,对发光二极管实现定时顺序控制

二、 实验仪器:

Lab6000实验仪或PROTEUS,PC机(WAVE6000软件),通讯电缆,导线

三、实验内容:

利用单片机内部的定时器/计数器,产生5秒中断一次。P1口分别接8个发光二极管。要求编写程序模拟一时序控制装置,开机后第5秒L1、L2亮;第10秒L3、L4亮;第15秒L5、L6亮;第20秒L7、L8亮;第25秒L1、L2、L3、L4亮;第30秒L5、L6、L7、L8亮;第35秒8个发光二极管全灭;第40秒8个发光二极管全亮。以后又从头开始,一直循环下去。

四、实验原理

单片机内部定时器/计数器用作定时器时,是对机器周期的计

数,每个机器周期的长度是12个振荡周期,因为实验仪晶振是12MHZ,所以最长延时时间为65ms左右。下列程序用定时器/计数器0工作于方式1的定时器方式,达到0.05溢出中断一次;定时器/计数器1工作于方式1的计数器方式,它设定为计数100次,而每次定时器/计数器0时间到、溢出时,将发给它一个计数脉冲。这样,两个定时器/计数器串接使用的结果0.05*100=5s,可得到5s延时。 五、实验步骤: 1.画硬件原理图

2.编写程序,并在WAVE6000软件环境中输入程序并编译

3.调试并运行程序,观察灯亮的次序是否符合实习内容的要求

第12页

六、实验程序框图

主程序框图

开始

初始化 端口、堆栈、查表指针

5秒定时标志 清零 设置T0定时方式1 设置T1计数方式1 置T0 定时50毫秒初值 置T1计数100次初值 启动T0、T1 开中断

判5秒定时N

Y 关中断 查表、点灯 修改查表指针 N 判满8次? Y 表指针归零

T0中断程序框图

开始 重置T0 50毫秒定时初P3.0输出计数脉冲 N 判T1计满? Y 重置T1 计数100次初5秒定时标志置1 清TF1 中断返回 第13页

七、参考程序

ORG 0000H

AJMP MAIN ORG 000BH AJMP T0INT ORG 001BH RETI

ORG 0030H MAIN: MOV P1,#0FFH MOV R3,#00H MOV SP,#53H START: CLR 00H

…自己补充………………

HERE: JNB 00H,HERE CLR EA MOV A,R3 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,A INC R3 CJNE R3,#8,LOOP MOV R3,#00H LOOP: LJMP START

TAB: DB 03H,0CH,30H,0C0H,0FH

第14页

DB 0F0H,00H,0FFH T0INT:

…自己补充………………

JNB TF1,QUIT

MOV TH1,#0FFH MOV TL1,#9CH SETB 00H CLR TF1 QUIT: RETI

END

第15页

本文来源:https://www.bwwdw.com/article/2czd.html

Top