1、嵌入式小系统实验指导书汇编单片机原理及应用(一)过程性实验报告班级: 学号: 姓名: 教师: 实验一 单片机认识实验组别:同组人:成绩:日期:一、 实验目的:1、掌握WAVE6000软件的使用 2、熟悉MCS-51系列单片机的指令系统。二、实验仪器: PC机(WAVE6000软件)三、实验内容:在PC机上使用WAVE6000软件,分别输入下面两段程序并调试执行 程序1 MOV 30H,#40H MOV R0,#30HMOV A,R0MOV R1,AMOV DPTR,#1000HMOVX DPTR,A程序2 MOV A,60H XCH A,70H MOV 60H,A四、实验步骤1、启动WAVE6
2、000软件2、输入练习程序3、保存程序4、汇编源程序5、程序执行前的检查6、运行,调试程序 单步法运行程序断点法运行程序连续法运行程序8、检查运行结果五、实验结果程序1地址运行前内容运行后内容30H1000H程序2地址运行前内容运行后内容60H70H实验二 顺序结构程序的调试组别:同组人:成绩:日期:一、 实验目的:1、掌握顺序结构程序设计2、掌握WAVE软件调试程序的方法、实验内容:编写下列程序并调试:1、将片内RAM的70H单元的内容拆开,高4位送71H单元低4位,低4位送72H单元的低4位,71H、72H单元高4位清零。2、将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该
3、数存入30H单元。三、实验程序框图 程序1流程图 程序2流程图三、 实验步骤:程序1启动WAVE软件,新建一个文件,保存并取名为LX1.ASM。输入源程序1,正确进行机器汇编打开窗口菜单,选择数据窗口,检查70H、7lH和72H单元中的内容,并记录在下表左半边用全速执行命令开始执行程序检查7lH和72H单元中的内容,并记录在表1的右半边修改执行前70H、7lH和72H单元中的内容,重复执行-步骤,并记录程序执行后表格中的数据。程序2新建一个文件,保存并取名为LX2.ASM。输入源程序2,正确进行机器汇编打开窗口菜单,选择数据窗口,检查R2、R3和30H单元中的内容,并记录在下表左半边的格子中用
4、全速执行命令开始执行程序检查30H单元中的内容,并记录在表2的右半边格子中修改执行前R2、R3、30H单元中的内容,重复执行-步骤,并记录程序执行后的数据。四、实验结果1源程序程序1 程序22实验数据表1:拆字程序实验调试数据执行前的单元内容执行后的单元内容70H71H72H71H72H表2:合字程序实验调试数据执行前单元内容执行后单元内容R2R330H30H(3)思考:如何用断点方法调试本程序。实验三 分支和循环结构程序的调试组别:同组人:成绩:日期:一、 实验目的:1、掌握分支和循环结构程序的设计2、进一步掌握WAVE软件调试程序的方法、实验内容:编写下列程序并调试:1、 设a数已存放在累
5、加器A中, b数已存放在寄存器B中,计算下式,并将结果y送入片内RAM的30H单元。 a+b (b0) Y= a-b (b0)2、将片内30H-3FH单元的内容清零。3、从片内RAM的20H单元开始,有30个带符号数据,统计出正数的个数,并将结果存到40H单元中。三、实验程序框图 程序1流程图 程序2流程图四、实验步骤:程序1启动WAVE软件,新建一个文件,保存并取名为LX3.ASM。输入源程序1,正确进行机器汇编打开窗口菜单,选择数据窗口,检查A、B和30H单元中的内容,并记录在下表左半边用全速执行命令开始执行程序检查30H单元中的内容,并记录在表1的右半边修改执行前A、B中的内容,重复执行
6、-步骤,并记录表格中执行后的数据。程序2新建一个文件,保存并取名为LX4.ASM。输入源程序2,正确进行机器汇编打开窗口菜单,选择数据窗口,检查30H-3FH单元中的内容,如果是零值,将它们修改为非零值。 用全速执行命令开始执行程序检查30H-3F单元中的内容,是否全为零。修改执行前30H-3F单元中的内容,重复执行-步骤,重新检查30H-3F单元中的内容。程序3启动WAVE软件,新建一个文件,保存并取名为LX5.ASM。输入源程序3,正确进行机器汇编打开窗口菜单,选择数据窗口,检查35H、20H-3DH单元中的内容,并记录在下表左半边用全速执行命令开始执行程序检查35H单元中的内容,并记录在
7、表2的右半边修改执行前20H-3DH中的内容,重复执行-步骤,并记录执行后的数据。五、实验结果1实验源程序程序1 程序2程序3 2实验数据表1:程序1实验调试数据执行前的单元内容执行后的单元内容AB30H30H表2:程序3实验调试数据执行前的内容执行后的内容20H-3DH40H40H实验四 并行IO口的应用组别:同组人:成绩:日期:一、 实验目的:1、掌握并行IO口的应用技术2、掌握软硬联调的方法、实验内容:用单片机的P1口控制8个按键,P2口控制8个发光二极管,当检测到P1.0上的键按下时,P2.0上的灯亮; 当检测到P1.1上的键按下时, P2.0P2.1上的灯亮; 当检测到P1.2上的键
8、按下时, P2.0P2.1上的灯亮;以此类推。当检测到P1.7上的键按下时,8个灯全亮。并可反复循环检测按键与点亮相应的灯。三、画出硬件原理四、实验程序框图 五、 实验源程序实验五 外部中断(急救车与交通灯)组别:同组人:成绩:日期:一、实验要求本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒,急救车通过后,交通恢复正常,本实验用单次脉冲申请外部中断,表示有急救车通过。二、实验目的1、学习外部中断技术的基本使用方法。2、学习中断处理程序的编程方法。三、实验电路及连线四、实验框图五、程序清单 STOP equ 0
9、1h 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 setb STOP ; 南北, 东西均红灯 retiStart: mov SP, #70h mov TCON, #01h ; down edge IT0 mov IE, #81h ; enable EA, EX0 setb SR ; 南北, 东西均红灯 clr SY clr SG setb ER clr
10、 EY clr EG clr STOPLoop: jb STOP, AllRed setb SR ; 南北红灯, 东西绿灯 clr SY clr SG clr ER clr EY setb EG mov a, #20 lcall Delay jb STOP, AllRed setb SR ; 南北红灯, 东西黄灯闪 clr SY clr SG clr ER clr EY clr EG clr c mov r7, #9Loop1: mov EY, c mov a, #1 lcall Delay cpl c djnz r7, Loop1 jb STOP, AllRed clr SR ; 南北绿灯,
11、 东西红灯 clr SY setb SG setb ER clr EY clr EG mov a, #20 Lcall Delay jb STOP, AllRed clr SR ; 东西红灯, 南北黄灯闪 clr SY clr SG setb ER clr EY clr EG clr c mov r7, #9Loop2: mov SY, c mov a, #1 lcall Delay cpl c djnz r7, Loop2 ljmp LoopAllRed: ljmp LoopDelay: ; 延时0.25秒 子程序 .DelayLoop: jb STOP, ExitDelay ExitDel
12、ay: ret end六、实验结果源程序1ALLRED: 2.DELAY:实验六 定时器/计数器组别:同组人:成绩:日期:一、 实验目的:1、掌握Lab6000实验仪联机调试操作2、掌握单片机定时器/计数器的使用和编程方法3、进一步掌握中断处理过程的编程,对发光二极管实现定时顺序控制二、 实验仪器:Lab6000实验仪,PC机(WAVE6000软件),通讯电缆,导线三、实验内容:利用单片机内部的定时器/计数器,产生5秒中断一次。P1口分别接8个发光二极管。要求编写程序模拟一时序控制装置,开机后第5秒L1、L2亮;第10秒L3、L4亮;第15秒L5、L6亮;第20秒L7、L8亮;第25秒L1、L
13、2、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延时。五、实验步骤:
14、1.画硬件原理图2.编写程序,并在WAVE6000软件环境中输入程序并编译3.调试并运行程序,观察灯亮的次序是否符合实习内容的要求六、实验程序框图七、参考程序ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 001BH RETI ORG 0030HMAIN: MOV P1,#0FFH MOV R3,#00H MOV SP,#53HSTART: 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,#00HLOOP: LJMP STARTTAB: DB 03H,0CH,30H,0C0H,0FH DB 0F0H,00H,0FFHT0INT: QUIT: RETI END 八、实验结果START: T0INT:HERE: JNB 00H,HERE QUIT:RETI