
实验三、跑马灯的程序设计.doc
4页实验三、跑马灯程序设计实验实验三、跑马灯程序设计实验(2 学时)一、实验目的 1、熟悉 89C51 单片机系列指令系统; 2、掌握软件定时程序的编写方法和子程序的调用方法; 3、掌握使用汇编语言来实现跑马灯设计 二、实验内容 参照如下原理图设计一个跑马灯控制程序,让 8 个 led 按照自己的设想发光,显示的样式 尽可能的丰富,灯的变化延时通过调用软件延时子程序来实现,要求延时时间为 0.5SLED 灯样式参考:1、让 8 个灯闪烁完后,1 个灯向左(RL)或向右(RR)移动(流水灯) 2、8 个灯通过取表格“TAB:: DB 81H,0C3H,0E7H,0FFH,18H,3CH,7EH,0FFH””值进行变化值进行变化 三、实验设备 微机 1 台,单片机实验板 1 块 四、实验报告要求 1、写出实验目的、实验内容、实验设备、程序流程图和源程序清单(加注释) ;2、写出运行结果,并分析其是否正确; 3、说明实验中遇到的问题及解决的方法; 4、用实验报告纸手写实验报告程序:ORG 0000HSJMP MAINORG 0030H;LCALL MAINMAIN:MOV P1,#00HMOV DPTR,#LIGHTCHU:MOV R3,#06HMOV A,#00HTURN:MOV 20H,AMOVC A,@A+DPTRMOV P1,AMOV A,20HINC ALCALL DELAYDJNZ R3,TURNSJMP CHUDELAY:MOV R0,#05HD1:MOV R1,#250D2:MOV R2,#200D3:DJNZ R2,D3D4:DJNZ R1,D2DJNZ R0,D1RETLIGHT:DB 81H,42H,24H,18H,24H,42HSJMP $END总结:本实验,使我受益良多。
在实验未开始之前,老师给了我们讲解了什么是跑马灯,让我们知道这跑马灯是怎么一回事;后来老师还讲了一两个例子,这让我们在设计程序的时候,有了头绪本实验,我的程序是 P1 两边同时来灯,当两灯相碰撞时,就反弹;反弹到顶/底时,再向内聚;然后再反弹……这是实验最终的程序,但在程序未出炉之前,遇到了一些问题1.如何让表内的数据来回的取出2.程序如何无数次的运作下去后来,经过老师与同学们的帮助下,这些也不是问题了1.先取表首地址,后用 20H 暂存 A(想让 A 为 0.1.2...来取表内数据)的数;然后把表内的数据赋值给A,再把暂存在 20H 的数据赋值给 A 后 A+1;最后循环2.一开始此问题,我想了很久,以为最后的循环也是用 DJNZ 来实现,但这相对于直接用跳转指令(SJMP),要麻烦得多后来采取的方式是用 SJMP CHU(CHU 这要循环的标记)。












