第1页实验一单片机认识实验一、实验目的:1、掌握WAVE6000软件的使用2、熟悉MCS-51系列单片机的指令系统。二、实验仪器:PC机(WAVE6000软件)三、实验内容:在PC机上使用WAVE6000软件,分别输入下面两段程序并调试执行程序1MOV30H,#40HMOVR0,#30HMOVA,@R0MOVR1,AMOVDPTR,#1000HMOVX@DPTR,A程序2MOVA,60HXCHA,70HMOV60H,A四、实验步骤1、启动WAVE6000软件2、输入练习程序3、保存程序4、汇编源程序5、程序执行前的检查6、运行,调试程序单步法运行程序断点法运行程序连续法运行程序8、检查运行结果五、实验结果程序1地址运行前内容运行后内容30H1000H程序2地址运行前内容运行后内容60H70H第2页实验二顺序结构程序的调试一、实验目的:1、掌握顺序结构程序设计2、掌握WAVE软件调试程序的方法.二、实验内容:编写下列程序并调试:1、将片内RAM的70H单元的内容拆开,高4位送71H单元低4位,低4位送72H单元的低4位,71H、72H单元高4位清零。2、将工作寄存器R2中数据的高4位和R3中的低4位拼成一个数,并将该数存入30H单元。三、实验程序框图程序1流程图程序2流程图三、实验步骤:程序1①启动WAVE软件,新建一个文件,保存并取名为LX1.ASM。②输入源程序1,正确进行机器汇编③打开窗口菜单,选择数据窗口,检查70H、7lH和72H单元中的内容,并记录在下表左半边④用全速执行命令开始执行程序⑤检查7lH和72H单元中的内容,并记录在下表的右半边执行前的单元内容执行后的单元内容70H71H72H71H72H开始70H单元内容送A(A)中高低4位交换屏蔽高4位后送71H70H单元内容送A屏蔽高4位后送72H结束开始截取R2中的高4位截取R3中的低4位合并数据结束第3页⑥修改执行前70H、7lH和72H单元中的内容,重复执行④-⑤步骤,并记录程序执行后表格中的数据。程序2①新建一个文件,保存并取名为LX2.ASM。②输入源程序2,正确进行机器汇编③打开窗口菜单,选择数据窗口,检查R2、R3和30H单元中的内容,并记录在下表左半边的格子中④用全速执行命令开始执行程序⑤检查30H单元中的内容,并记录在下表的右半边格子中⑥修改执行前R2、R3、30H单元中的内容,重复执行④-⑤步骤,并记录程序执行后的数据。(3)思考:如何用断点方法调试本程序。执行前单元内容执行后单元内容R2R330H30H第4页实验三分支和循环结构程序的调试一、实验目的:1、掌握分支和循环结构程序的设计2、进一步掌握WAVE软件调试程序的方法.二、实验内容:编写下列程序并调试:1、设a数已存放在累加器A中,b数已存放在寄存器B中,计算下式,并将结果y送入片内RAM的30H单元。a+b(b≥0)Y=a-b(b0)2、将片内30H-3FH单元的内容清零。3、从片内RAM的20H单元开始,有30个带符号数据,统计出正数的个数,并将结果存到35H单元中。三、实验程序框图程序1流程图程序2流程图四、实验步骤:程序1①启动WAVE软件,新建一个文件,保存并取名为LX3.ASM。②输入源程序1,正确进行机器汇编开始a-ba+b结束b≥0?30H←结果YN开始R0←#30HR2←#30结束R2-1=0?((R0))←0R0+1NY第5页③打开窗口菜单,选择数据窗口,检查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-3DH35H35H⑥修改执行前20H-3DH中的内容,重复执行④-⑤步骤,并记录执行后的数据。执行前的单元内容执行后的单元内容AB30H30H第6页实验四并行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个灯全亮。并可反复循环检测按键与点亮相应的灯。三、画出硬件原理四、实验程序框图第7页五、实验源程序第8页实验五外部中断(急救车与交通灯)一、实验要求本实验模拟交通信号灯控制,一般情况下正常显示,有急救车到达时,两个方向交通信号灯全红,以便让急救车通过。设急救车通过路口时间为10秒,急救车通过后,交通恢复正常,本实验用单次脉冲申请外部中断,表示有急救车通过。南北方向红灯绿灯5S黄灯闪烁9次东西方向绿灯5S黄灯闪烁9次红灯二、实验目的1、学习外部中断技术的基本使用方法。2、学习中断处理程序的编程方法。三、实验电路及连线四、实验框图1k470Ω470Ω20P20PGND4.7uGND+5VXTAL119XTAL218RESET9INT012P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78MCS-51SRSGEREYEGSY470Ω470Ω470Ω470Ω+5V10K+5VKGNDoooooo第9页五、程序清单SREQUP1.0;南北红灯SYEQUP1.1;南北黄灯SGEQUP1.2;南北绿灯EREQUP1.3;东西红灯EYEQUP1.4;东西黄灯EGEQUP1.5;东西绿灯ORG0000HLJMPSTARTORG0003HLJMPJTDINT0START:MOVSP,#70HMOVTCON,#01H;DOWNEDGEIT0MOVIE,#81H;ENABLEEA,EX0SETBSR;南北,东西均红灯开始开外中断初始状态东西南北都是红灯状态1南北红灯,东西绿灯状态2南北红灯,东西绿灯闪转黄灯,状态3南北绿灯,东西红灯状态4南北绿灯闪转黄灯,东西红灯外部中断入口保护现场东西,南北都亮红灯延时10秒恢复现场中断返回第10页CLRSYCLRSGSETBERCLREYCLREGLOOP:SETBSR;南北红灯,东西绿灯CLRSYCLRSGCLRERCLREYSETBEGMOVA,#20LCALLDELAYSETBSR;南北红灯,东西黄灯闪CLRSYCLRSGCLRERCLREYCLREGCLRCMOVR7,#9LOOP1:MOVEY,CMOVA,#1LCALLDELAYCPLCDJNZR7,LOOP1CLRSR;南北绿灯,东西红灯CLRSYSETBSGSETBERCLREYCLREGMOVA,#20LCALLDELAYCLRSR;东西红灯,南北黄灯闪CLRSY第11页CLRSGSETBERCLREYCLREGCLRCMOVR7,#9LOOP2:MOVSY,CMOVA,#1LCALLDELAYCPLCDJNZR7,LOOP2LJMPLOOPJTDINT0:CLREAMOVB,P1PUSHACCSETBEA…………………自己补充CLREAPOPACCMOVP1,BSETBEARETIDELAY:;延时0.25秒子程序,晶振6MHZ…………………..…自己补充…………………RETEND第12页实验六定时器/计数器一、实验目的: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.调试并运行程序,观察灯亮的次序是否符合实习内容的要求第13页六、实验程序框图开始初始化端口、堆栈、查表指针5秒定时标志清零设置T0定时方式1设置T1计数方式1置T0定时50毫秒初值置T1计数100次初值启动T0、T1开中断判5秒定时到?关中断查表、点灯修改查表指针判满8次?表指针归零NYYN主程序框图T0中断程序框图开始重置T050毫秒定时初值中断返回判T1计满?NYP3.0输出计数脉冲重置T1计数100次初值5秒定时标志置1清TF1第14页七、参考程序ORG0000HAJMPMAINORG000BHAJMPT0INTORG001BHRETIORG0030HMAIN:MOVP1,#0FFHMOVR3,#00HMOVSP,#53HSTART:CLR00H…自己补充………………HERE:JNB00H,HERECLREAMOVA,R3MOVDPTR,#TABMOVCA,@A+DPTRMOVP1,AINCR3CJNER3,#8,LOOPMOVR3,#00HLOOP:LJMPSTARTTAB:DB03H,0CH,30H,0C0H,0FH第15页DB0F0H,00H,0FFHT0INT:…自己补充………………JNBTF1,QUITMOVTH1,#0FFHMOVTL1,#9CHSETB00HCLRTF1QUIT:RETIEND