技术热线: 4007-888-234

8位LED流水灯

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

深圳市英锐恩科技有限公司:台湾麦肯单片机(Micon MDT单片机)亚太地区A级代理商
8位LED流水灯
;本程序的功能是,将RB的8条引脚全部设置为输出模式,依次从RB0;
;到RB7送出高电平,然后再依次从RB7到RB0送出高电平.并且周而复始;
;从而使接在RB口的LED循环往返发光;
;烧写时应注意:配置位已经在程序中写明,加载HEX文件时会自动加载,烧写时不用再手动设置配置位。
;实验时请注意套件跳线选择;
;*********************************************************
  LIST P=16F84A,R=DEC ;告诉使用器件为16F84A,默认为十进制;
;---------------------------------------------------------
  __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC
                                              ;没有代码保护
                                              ;看门狗关闭
                                              ;上电廷时器开启
                                              ;振荡器模式为XT
;-----------------------
STATUS EQU 03H   ;定义各寄存器
PORTA EQU 05H
PORTB EQU 06H

TRISA EQU 5H
TRISB EQU 6H
;---------------------- STATUS
C EQU 0
RP0 EQU 5
;--------------------
FLAG EQU 23H   ;定义用户寄存器;
;--------------------------
  ORG 00h
  CLRF PORTA
  CLRF PORTB    ;初始IO口;

  bsf STATUS,RP0    ;设置数据寄存器1;
  movlw B'00000000'
  movwf TRISA       ;定义RA口全部为输出;
  movlw B'00000000'
  movwf TRISB       ;定义RB口全部为输出;
  bcf STATUS,RP0    ;恢复数据寄存器0

  movlw 01H         ;先认RB.0为1
  movwf PORTB 
  BCF STATUS,C      ;清标志位C
  BSF FLAG,0        ;置左右移标志位,先左移;
LOOP
  BTFSS STATUS,C    ;测试C,为1则修改标志位
  GOTO LOOP1
  COMF FLAG,1       ;取反左右移标志位
LOOP1
  BTFSS FLAG,0      ;FLAG.0为1左移,为0右移
  GOTO LOOP2
  RLF PORTB,0
  MOVWF PORTB
  GOTO LOOP3
LOOP2
  RRF PORTB,0
  MOVWF PORTB
LOOP3
  CALL DELAY
  CALL DELAY       ;调用廷时
  GOTO LOOP        ;返回
;-----------------------
DELAY              ;0.2S廷时子程序
  MOVLW 0FFH
  MOVWF 20H
LP0
  MOVLW 0FFH
  MOVWF 21H
LP1

  DECFSZ 21H,1
  GOTO LP1
  DECFSZ 20H,1
  GOTO LP0
  RETURN

;---------------------
  END