第1页共65页实验一扩展存储器读写实验一.实验要求编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。二.实验目的1.学习片外存储器扩展方法。2.学习数据存储器不同的读写方法。三.实验电路及连线将P1.0接至L1。CS256连GND孔。四.实验说明第2页共65页1.单片机系统中,对片外存贮器的读写操作是最基本的操作。用户藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。用户编程可以参考示例程序和流程框图。本示例程序中对片外存贮器中一固定地址单元进行读写操作,并比较读写结果是否一致。不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。用户调试该程序时,可以灵活使用单步、断点和变量观察等方法,来观察程序执行的流程和各中间变量的值。2.在I状态下执行MEM1程序,对实验机数据进行读写,若L1灯亮说明RAM读写正常。3.也可进入LCA51的调试工具菜单中的对话窗口,用监控命令方式读写RAM,在I状态执行SX0000↓55,SPACE,屏幕上应显示55,再键入AA,SPACE,屏幕上也应显示AA,以上过程执行效果与编程执行效果完全相同。注:SX是实验机对外部数据空间读写命令。4.本例中,62256片选接地时,存储器空间为0000~7FFFH。五.实验程序框图六.实验程序:第3页共65页ORG0000HLJMPSTARTORG0040HSTART:MOVSP,#60HMOVDPTR,#0000H;置外部RAM读写地址MOVA,#55H;测试的数据一MOVB,AMOVX@DPTR,A;写外部RAMMOVXA,@DPTR;读外部RAMXRLA,B;比较读回的数据JNZERRORMOVA,#0AAH;测试的数据二MOVB,AMOVX@DPTR,AMOVXA,@DPTRXRLA,BJZPASS;测试通过ERROR:SETBP1.0;测试失败,点亮LEDSJMP$PASS:CPLP1.0;LED状态(亮/灭)转换MOVR1,#00H;延时DELAY:MOVR2,#00HDJNZR2,$DJNZR1,DELAYLJMPSTART;循环测试END_实验二P1口输入、输出实验第4页共65页一.实验要求1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。2.P1口做输入口,接八个扭子开关,以实验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。二.实验目的1.学习P1口的使用方法。2.学习延时子程序的编写和使用。三.实验电路及连线实验一时,P1.0-P1.7接L0-L7。实验二时,P1.0-P1.7接K0-K7,PO0-PO7接L0-L7。CS273接8300H。四.实验说明1.P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。2.延时子程序的延时计算问题对于程序DELAY:第5页共65页MOVR0,#00H;1个周期DELAY1:MOVR1,#0B3H;256×1个周期DJNZR1,$;0B3×256×2个周期DJNZR0,DELAY1;256×2个周期查指令表可知MOVRn,#data指令需用一个机器周期,DJNZ指令需用两个机器周期,而一个机器周期时间长度为12/11.0592MHz,所以该段程序执行时间为:(0B3×256×2+256×2+256×1+1)×12÷11059200=100.278mS五.程序框图:主程序框图(一)主程序框图(二)六.实验程序(一)ORG0000HLJMPSTARTORG0040HSTART:MOVSP,#60HMOVA,#0FEHROTATE:MOVP1,A;写P1口第6页共65页RLA;循环左移LCALLDELAY;延时NOPSJMPROTATEDELAY:;延时子程序(1秒)MOVR0,#0AHDELAY1:MOVR1,#00HDELAY2:MOVR2,#0B2HDJNZR2,$DJNZR1,DELAY2DJNZR0,DELAY1RETEND实验程序(二):ORG0000HLJMPSTARTORG0040HSTART:MOVDPTR,#8300H;并行输出口地址MOVP1,#0FFH;因P1口是准双向口,所以把P1口作为;输入口时,应先置高电平.READ:MOVA,P1;读开关状态MOVX@DPTR,A;把读入的数据输出AJMPREADEND实验三P3口输出控制继电器实验第7页共65页一.实验要求利用P3.5输出高低,控制继电器的开合,实现对外部装置的控制。二.实验目的掌握继电器控制的基本方法和经验。三.实验电路及连线P3.5接JD。R-MID接L1灯,R-CLOSE接GND。四.实验说明现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。电子继电器便能完成这一桥梁作用。继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势,防止干扰。本电路的控制端为JD,当JD为高电平时,继电器不工作,当JD为低电平时,继电器工作,常开触点吸合。执行时,对应的LED将随继电器的开关而亮灭。五.实验程序框图主程序框图六.实验程序:ORG0000H第8页共65页LJMPSTARTORG0040HSTART:MOVSP,#60HJD:CPLP3.5;P3.5取反LCALLDELAY;延时NOPSJMPJDDELAY:;延时子程序(1秒)MOVR0,#0AHDELAY1:MOVR1,#00HDELAY2:MOVR2,#0B2HDJNZR2,$DJNZR1,DELAY2DJNZR0,DELAY1RETEND实验四简单I/O实验(交通灯控制)第9页共65页一.实验要求以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。二.实验目的1.学习在单片机系统中扩展简单I/O接口的方法。2.学习数据输出程序的设计方法。3.学习模拟交通灯控制的方法。4.学习双色灯的使用。三.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。CS273接8300H。四.实验说明1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北第10页共65页仍然红灯。最后循环至状态1。2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。五.实验程序框图:主程序框图六.实验程序ORG0000HLJMPSTARTORG0040HSTART:MOVSP,#60HLCALLSTATUS0;初始状态(都是红灯)CIRCLE:LCALLSTATUS1;南北绿灯,东西红灯LCALLSTATUS2;南北绿灯闪转黄灯,东西红灯第11页共65页LCALLSTATUS3;南北红灯,东西绿灯LCALLSTATUS4;南北红灯,东西绿灯闪转黄灯LJMPCIRCLESTATUS0:;南北红灯,东西红灯MOVDPTR,#8300HMOVA,#0FHMOVX@DPTR,AMOVR2,#10;延时1秒LCALLDELAYRETSTATUS1:;南北绿灯,东西红灯MOVDPTR,#08300HMOVA,#5AH;南北绿灯,东西红灯MOVX@DPTR,AMOVR2,#50;延时5秒LCALLDELAYRETSTATUS2:;南北绿灯闪转黄灯,东西红灯MOVDPTR,#8300HMOVR3,#03H;绿灯闪3次FLASH:MOVA,#5FHMOVX@DPTR,AMOVR2,#03HLCALLDELAYMOVA,#5AHMOVX@DPTR,AMOVR2,#03HLCALLDELAYDJNZR3,FLASHMOVA,#0AH;南北黄灯,东西红灯MOVX@DPTR,AMOVR2,#10;延时1秒LCALLDELAYRETSTATUS3:;南北红灯,东西绿灯MOVDPTR,#8300HMOVA,#0A5HMOVX@DPTR,AMOVR2,#50;延时5秒LCALLDELAYRETSTATUS4:;南北红灯,东西绿灯闪转黄灯MOVDPTR,#8300HMOVR3,#03H;绿灯闪3次第12页共65页FLASH1:MOVA,#0AFHMOVX@DPTR,AMOVR2,#03HLCALLDELAYMOVA,#0A5HMOVX@DPTR,AMOVR2,#03HLCALLDELAYDJNZR3,FLASH1MOVA,#05H;南北红灯,东西黄灯MOVX@DPTR,AMOVR2,#10;延时1秒LCALLDELAYNOPRETDELAY:;延时子程序PUSH2PUSH1PUSH0DELAY1:MOV1,#00HDELAY2:MOV0,#0B2HDJNZ0,$DJNZ1,DELAY2;延时100mSDJNZ2,DELAY1POP0POP1POP2RETEND实验五外部中断实验(急救车与交通灯)第13页共65页一.实验要求在实验四内容的基础上增加允许急救车优先通过的要求。有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。本实验以按键为中断申请,表示有急救车通过。二.实验目的1.学习外部中断技术的基本使用方法。2.学习中断处理程序的编程方法。三.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。CS273接8300H。K7接P3.2。四.实验说明中断服务程序的关键是:1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。2.必须在中断程序中设定是否允许中断重入,即设置EX0位。本例中使用了INT0中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的INT0程序保护了PSW,ACC,2等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。实验开始时K7应在H(高电平)端,要产生中断时先拨向L(低电平)端再拨回H端。五.实验程序框图第14页共65页主程序框图六.实验程序ORG0000HLJMPSTARTORG0003H;INT0中断入口地址LJMPINT0ORG0040HSTART:MOVSP,#60HSETBEX0;INT0中断有效SETBIT0SETBEALCALLSTATUS0;初始状态(都是红灯)CIRCLE:LCALLSTATUS1;南北绿灯,东西红灯LCALLSTATUS2;南北绿灯闪转黄灯,东西红灯LCALLSTATUS3;南北红灯,东西绿灯LCALLSTATUS4;南北红灯,东西绿灯闪转黄灯第15页共65页LJMPCIRCLEINT0:PUSHPSW;保护现场PUSH2PUSHACCMOVDPTR,#8300HMOVA,#0FH;南北,东西都亮红灯MOVX@DPTR,AMOVR2,#100;延时10秒LCALLDELAYPOPACC;恢复现场MOVX@DPTR,A