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).