技术热线: 4007-888-234

LED流水灯的另一种实现方法

更新时间: 2019-03-25
阅读量:619

LED流水灯的另一种实现方法
;使用资源
 ;1、PORTC口,8个流水灯LED

;功能说明
;1、该程序首先把C口输出全0,然后通过改变输入输出方向来电亮流水灯。
;2、先从最低位电亮,点亮到最高位后,又从最高位开始点亮到最低位,如此循环。
;3、通过改变DELAY延时时间的长短可改变流水等点亮的速度。

;硬件连接
;1、DEMO实验板作以下设置  s1拔到ON。
;2、S4,S5全部拔到OFF    LCD不要插在演示板上

;源程序如下:
;LIST   P=16F877A    R=DEC
;OST    4MHZ
;DATE   2006.04.27
;***********************************
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SPECIAL REGISTER
STATUS      EQU      83H
RC          EQU      07H
TRISC       EQU      87H
AB0         EQU      20H
AB1         EQU      21H
AB2         EQU      22H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STATUS   BIT
C           EQU      0
DC          EQU      1
Z           EQU      2
RP0         EQU      5
RP1         EQU      6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PROGRAM ST
            ORG      0000H                 ;复位地址
            NOP                            ;放置一条MCD所需的空指令
ST
            CLRF      RC                   ;所有C口输出为低,关闭所有显示
            BSF       STATUS,5             ;选体1
LOOP        MOVLW     B'11111110'          ;先点亮RC0
            MOVWF     TRISC
            BCF       STATUS,5             ;回到体0
            MOVLW     B'11111111'          ;所有输出为1,只要相应的位被设置为输出,即可点亮
            MOVWF     RC
            CALL      DELAY                ;延时一段时间,保证LED的亮度
            BSF       STATUS,5
            BSF       STATUS,C
LOOP1       RLF       TRISC,F              ;点亮的位左移一位
            CALL      DELAY                ;延时
            BTFSC     STATUS,C             ;判断是否点亮到了RC7
            GOTO      LOOP1                ;否,继续左移
            MOVLW     B'01111111'          ;是,点亮RC7位
            MOVWF     TRISC
            CALL      DELAY              
            BSF       STATUS,0
LOOP2       RRF       TRISC ,F             ;点亮的位右移一位
            CALL      DELAY
            BTFSC     STATUS,C             ;是否点亮到最低位
            GOTO      LOOP2                ;否,继续右移
            GOTO      LOOP                 ;是,重新开始新一轮循环
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY 0.12S
DELAY
            MOVLW     0FFH
            MOVWF     AB0

DELAY1      MOVLW     0DH
            MOVWF     AB1
DELAY2
            MOVLW     0BH
            MOVWF     AB2
DELAY3
            DECFSZ    AB2,F
            GOTO      DELAY3
            DECFSZ    AB1,F
            GOTO      DELAY2
            DECFSZ    AB0,F
            GOTO      DELAY1
            RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            END                           ;源程序结束

;    进入该实战演练的工序流程如下:
;    1.创建源文件和编辑源文件;在此介绍一种不同于前面讲的创建源文件的方法,用Windows附件中的”记事本”
;   这个为大家所熟知和好用的文件编辑器,并且可以方便的加入中文注释.不过有两点需要注意,一是注释前面的
;   分号”;”必须用西文半角输入;二是必须用”.asm”扩展名存储到事先建立的一个专用子目录下.
;    2.打开MPLAB集成开发环境:首先在WINDOWS环境下,选用开始>程序>Microchip MPLAB>MPLAB命令,启动MPLAB
;   并进入MPLAB的桌面.
;    3.创建项目:选用菜单File>New或Project>New Project,在事先建立的一个专用子目录下创建一个新项目,将
;   用记事本创建的源文件加入到该项目中.
;    4.建立项目中的目标文件:选择菜单Project >Build All(项目>建立所有文件),MPLAB将自动调用MPASM将项目
;   文件管理下的源文件(.asm)汇编成十六进制的目标文件(.hex).