深圳市英锐恩科技有限公司:台湾麦肯单片机(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