|
文件: |
流水灯16.rar |
大小: |
32KB |
下载: |
下载 | |
16个发光二极管流水灯程序
作者:流水落花
-
ORG 0100H
LOOP0: MOV A, #0FEH
MOV P2, #0FEH
MOV R2, #8; R2用于计数
LOOP1: MOV P1, A
LCALL DEL200
RL A
DJNZ R2, LOOP1
MOV P1, #0FFH; 使P1复位
-
LOOP2: MOV A, #0FEH
MOV P2, #0FDH
MOV R2, #8
LOOP3: MOV P1, A
LCALL DEL200
RL A
DJNZ R2, LOOP3
MOV P2, #0FFH; 使P2复位
LCALL LOOP0; 返回LOOP0
-
DEL200: MOV R7, #200
DEL1: MOV R6, #250
DJNZ R6, $
DJNZ R7, DEL1
RET
END
下面是我编写这个程序的心得吧!:
一、编写程序时我遇到了许多的麻烦,开始时我把程序编了出来,但是我用Proteus仿真就和我想要的结果不一致,然后我又通过认真的分析,发现我的逻辑思维出错了,用汇编语言编写时要求我们要有很好的逻辑思维能力,我也是在我们老师的指导下才发现,这个习惯是很管用的,那就是在你编写程序时,每一个独立的子程序最好用回车把它与其它的语句分开,这样就是为了在你查找程序错误时能够很清楚的找到错误。也可以说这是一种好习惯吧!也就像学C语言一样,一个好的编程习惯对我们的编程是很有帮助的。
二、在我编写这个程序是时我改了好多次才得到了我想要的结果,我发现我最容易出错的就是在调用子程序时我搞不懂子程序的标号应该设在哪里,还有就是在我对程序做认真分析时我发现我有时很难分清哪一句程序在前哪一句程序在后,这也是要求我有很好的逻辑思维能力,在这方面我会在我以后的编程中慢慢练习提高这方面的能力。
三、在我编写这个程序时,我还发现,我的程序在理论上看似没错,但是用PROTEUS仿真时,你只要仔细观察就会发现程序还是有一个小小的问题,这个问题对于我一个初学汇编语言的人来说真的很难找到问题的所在,仿真是我发现,当流水灯从上到下到最底的时候上面的第8个发光二极管会闪一下,这不是我想要的结果,后来我就请我们的老师给我指点,我老师很快就帮我找到了问题是所在,那就是当二极管从上到下时要把P2口清零,我才明白这一点,后来我回到宿舍又用PROTEUS仿真了一下老师给我改后的程序,我发现在我电脑上还是那样的现象,我又继续改这个程序,我没有怀疑老师结我的指点,而我觉得老师说的很正确,也正是老师给我的指点,让我对P1口是否也要清零产生了怀疑,接下来我就对我的想法做了实验,实验的结果证明的是正确的,呵呵就这样我的程序才算做成功了!!觉得很有成就感!!!!!!!!!
阅读(4599) | 评论(0) | 转发(0) |