萬用電路板

个人兴趣爱好交流空间

« 简易循环小彩灯51单片机流水灯硬件系统【图】 »

51单片机经典流水灯程序(汇编)

        51单片机经典流水灯程序,在51单片机的P2口接上8个发光二极管,产生流水灯的移动效果。

                    ORG        0                   ;程序从0地址开始
START:      MOV      A,#0FEH     ;让ACC的内容为11111110
LOOP:         MOV      P2,A            ;让P2口输出ACC的内容
                     RR          A                  ;让ACC的内容左移
                     CALL     DELAY       ;调用延时子程序
                     LJMP     LOOP          ;跳到LOOP处执行
;0.1秒延时子程序(12MHz晶振)===================
DELAY:      MOV      R7,#200      ;R7寄存器加载200次数
D1:               MOV      R6,#250      ;R6寄存器加载250次数
                     DJNZ     R6,$             ;本行执行R6次
                     DJNZ     R7,D1          ;D1循环执行R7次
                     RET                            ;返回主程序
                     END                           ;结束程序

原创文章如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]

  • quote 1.卫尔
  • 如果是12盏的跑马灯怎么控制?我想把8盏接P1口,四盏接P3口,可是由于是刚学,不太会.想用汇编语言编写,如果你会,你指点以下哦!125580956@163.com
    jiangx 于 2008-6-10 20:27:45 回复
    这个相当于是有两段流水灯的程序,首先是针对P1口,然后再是P3口。程序流程我给你描述一下:首先是P1口左移8次、清空,然后是P3口左移4次、清空,再跳回START死循环。我写了一个你作参考:

    ORG 0000H
    JMP START
    START:
    MOV R5,#8 ;设置P1口左移次数
    MOV A,#0FEH ;设定P1口的初始值
    LOOP: ;P1口流水灯程序
    MOV P1,A;
    RL A
    CALL DELAY
    DJNZ R5,LOOP
    MOV P1,#0FFH ;关闭P1口的所有灯
    MOV R4,#4 ;设置P3口左移次数
    MOV A,#0FEH ;设定P3口的初始值
    LOOP1: ;P3口流水灯程序
    MOV P3,A
    RL A
    CALL DELAY
    DJNZ R4,LOOP1
    MOV P3,#0FFH ;关闭P3口的所有灯
    LJMP START ;跳至START处执行,死循环
    DELAY: ;延时子程序
    MOV R7,#200
    D1: MOV R6,#250
    DJNZ R6,$
    DJNZ R7,D1
    RET
    END
  • 2008-6-10 19:16:17 回复该留言
  • quote 2.
  • 那十六盏的怎么办,AT89S51的,可以帮帮忙吗?
    jiangx 于 2008-6-12 22:29:43 回复
    16盏跟12盏大同小异。只需将P3口左移次数设置为8就行了。也就是将上述“MOV R4,#4”语句改为“MOV R4,#8”
  • 2008-6-12 21:36:59 回复该留言
  • quote 3.光明
  • 十六盏灯大跑马灯程序怎么写?可以帮我写下吗?8盏接p1,8盏接p2,有全灭,全亮的,我刚学的,请你帮忙给我写个程序.可以吗?
    jiangx 于 2008-6-13 11:44:59 回复
    请参考:基于51单片机的超级流水灯http://www.jiangx.net/post/46.html
  • 2008-6-13 11:26:22 回复该留言
  • quote 4.卫尔
  • 实在是太谢谢你了!楼主很好很强大!我以后一定多多来学习!
    jiangx 于 2008-6-14 18:08:10 回复
    过奖,多交流,我把它当作一种学习。
  • 2008-6-13 17:03:09 回复该留言
  • quote 5.单片机初学爱好者
  • 楼主能不能帮忙下:

    如果用51单片机控制595输出接上8个发光二极管

    比如要指定其中一个灯亮几次汇编要怎么写?
    jiangx 于 2008-8-25 20:08:35 回复
    你参考一下这里:http://www.jiangx.net/post/152.html
    看对你有启发不
  • 2008-8-25 11:46:19 回复该留言
  • quote 6.小菜
  • 你好啊!楼主,我是单片机初学者,请指点一二.....怎么样才可以很好的记住那些难懂的指令?
    jiangx 于 2008-10-19 21:43:19 回复
    这个啊,我还真没啥经验。要真正记住、掌握用法,关键还是要用,光靠记是很难有很深的印象的,这个就像记单词一样,要结合句子和文章来记。当然,指令的意思可以结合各个指令的英文全称来记,比方说MOV是单词move的简写,大概就是这个意思吧,呵呵
  • 2008-10-18 22:44:46 回复该留言
  • quote 7.小菜
  • 谢谢楼主的金言.....我还想请教一个问题,运行这些单片机程序要用什么软件更可靠?
    jiangx 于 2008-11-2 17:43:13 回复
    Keil C
  • 2008-10-31 22:15:40 回复该留言
  • quote 8.邓君
  • 主人真是好人,让我们初学者受益匪浅!!!谢谢。
  • 2008-11-3 13:01:30 回复该留言

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

赞助商广告

最近发表

热文排行

最新评论及回复

图标汇集

  • 留言板
  • 订阅本站的 ATOM 1.0 新闻聚合
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-Blog 1.8

Copyright 2008 JiangX.net 萬用電路板 All Rights Reserved.
鄂ICP备08003060号 [login]