注意:程序编译成功只说明程序语法正确,不能说明程序功能已经达到了设计目标。(4)对流水灯电路程序进行仿真。当程序编译正常,程序设计正确时,实现流水灯电路的正常仿真运行。如果程序不正常、或出现语法错误要根据编译器的提示进行修改程序,也可以进行仿真调试。仿真调试需要重点查看的对象是:Code区程序代码存储区间、PC值及其变化量、指令周期长度、P1口输出值、工作寄存器和及其它有关的SFR之值。通过它们分别可以看到程序段的存储空间、指令的存储地址和字长、指令的执行时间长度、有关指令和程序段的运行结果等等,这些都是调试者评估程序段功能、修改和完善程序代码的基本依据。更详细步骤请参照教材相关部分介绍。3.烧录程序和硬件运行YZ200实验板单片机烧入程序的方法有两种,一种是本实验板的专用方法JRISP(采用ISP接口),一种是采用STC-ISP软件(采用RS232口),在此我们采用ISP接口。(1)用ISP下载线将单片机实验板与计算机USB口连接在一起。(2)利用JRISP软件,将“流水灯HEX”文件烧入单片机中。如果电路上电后不能运行则需要检查单片机的基本工作条件是否正常;如果只是运行现象不符合设计目标,则需要分析现象进而修改程序代码,重复上述编译、仿真调试、烧写和试运行的过程。如此反复调试,直至成功为止。4.参考程序123456789101112131415ORG0000HLJMPMAINORG0100HMAIN:MOVA0FEHLOOP:MOVP0ALCALLDELDJNZR5LOOP1RLALJMPLOOPDEL:MOVR020DL3:MOVR250DL2:MOVR3250DJNZR2DL2DJNZR0DL3DEL1DJNZR3DEL1循环20次循环100次循环250次此指令2us循环250次2250500us50500us25ms25ms401s循环左移一次初值11111110送P0口,低电平点亮LED程序开始地址
f1617
RETEND
子程序返回程序结束
5.深入实验问题
在参考程序中,单片机使用12MHz晶体,每一个LED点亮时间为1s。根据下表中的问题,修改程序、用Proteus软件仿真验证,并将回答的问题填入表1中,交指导教师检查。1.流水灯每次点亮2个LED,赋给累加器A的初值为多少?2.每次点亮两个,每次跳两个LED,程序如何修改?3.将延时程序修改为600ms,程序如何修改?4.如果单片机石英晶体从12MHz改为6MHz,流水灯移动速度仍为1s,程序如何修改?5.LED连接到P2口,其它功能不变,程序如何修改?6.子程序返回后,单片机执行哪条指令?7.如何实现LED各闪烁5次再移位功能?表2实现功能的程序(参数)修改问题问题1问题2问题3问题4问题5问题6累加器A初值为:r