star 发表于 2012-8-21 17:22:50

键控流水灯ZHUAN

;
; 键控流水灯,
; MCU:PIC16F877A
; 日期:2008.12.2
; 文件名:lsd.asm
; 利用PORTB<1>上的一个开关,控制PORTD上的8个LED流水灯的流动方向.
;
;********************************************************
   #include "P16F877A.INC"    ORG      0000H
    GOTO   MAIN
   ORG      0005H
MAIN
   NOP                                       ;ICD2必须的NOP指令
   BSF      STATUS, RP0            ;置为体1,设置PORTB,PORTD状态
   MOVLW0FFH                        ;
   MOVWFTRISB                   ;设PORTB为全部输入
   CLRFTRISD                           ;PORTD为输出
   BCF      STATUS, RP0                  ;回到体0
   BSF   STATUS,C               ;设C为1
   CLRFPORTD               ;清PORTD
FLAG
   BTFSCPORTB,1                      ;测试PORTB<1>是否闭合
   GOTODISPLY_R                   ;是,转到DISPLY_L,否.转到DISPLY_R
DISPLY_L
   CALLDELAY10MS
   BTFSSPORTB,1                     ;开头防抖检测
   GOTODISPLY_R
   CALLDELAY1                           ;延时
   RLF   PORTD,1                        ;左移一位
   GOTODISPLY_L
DISPLY_R
   CALLDELAY10MS
   BTFSCPORTB,1
   GOTODISPLY_L
   CALLDELAY1    ;延时
   RRF   PORTD,1   ;右移一位
   GOTODISPLY_R
;;;;;;;;;延时程序;;;;;;;;
DELAY1
   MOVLW   D'255'
   MOVWF 30H
LOOP1_1
   MOVLW   D'255'
   MOVWF 31H
LOOP1_2
   DECFSZ 31H,1
   GOTO LOOP1_2
   DECFSZ 30H,1
   GOTO LOOP1_1
   MOVLW   00H
   RETURN
DELAY10MS                              ;10ms延时程序
   MOVLW   D'100'
   MOVWF 30H
LOOP2_1
   MOVLW   D'32'
   MOVWF 31H
LOOP2_2
   DECFSZ 31H,1
   GOTO LOOP2_2
   DECFSZ 30H,1
   GOTO
LOOP2_1
   MOVLW   00H
   RETURN
   END
页: [1]
查看完整版本: 键控流水灯ZHUAN