; TUTA4.ASM ; using aliases, bit names and conditional loops list p=p16f84a radix hex include "p16f84a.inc" ; high speed >4MHz OSC ; disable watchdog timer __CONFIG _HS_OSC & _WDT_OFF #DEFINE PAGE0 BCF STATUS,5 #DEFINE PAGE1 BSF STATUS,5 COUNT EQU 0x0C ; Counter storage NCOUNT EQU 0x0D ; Count Down storage register MCOUNT EQU 0x0E ; Count Down storage register OCOUNT EQU 0x0F ; Count Down storage register W EQU 0 ; Working register flag F EQU 1 ; File register flag C EQU 0 ; Carry flag ORG 0 ; Reset vector CALL 5 ; CALL start of program ORG 4 ; Interrupt vector CALL 5 ; CALL start of program ORG 5 ; Start of program memory CLRF PORTA ; clear Port A data register CLRF PORTB ; clear Port B data register PAGE1 ; PAGE1 CLRF TRISA ; set all Port A as output (clear direction reg) CLRF TRISB ; set all Port B as output (clear direction reg) PAGE0 ; PAGE0 ; illuminate LEDs left to right LOOP BSF PORTA,2 CALL PAUSE BCF PORTA,2 BSF PORTA,3 CALL PAUSE BCF PORTA,3 BSF PORTB,0 CALL PAUSE BCF PORTB,0 BSF PORTB,1 CALL PAUSE BCF PORTB,1 BSF PORTB,2 CALL PAUSE BCF PORTB,2 BSF PORTB,3 CALL PAUSE BCF PORTB,3 BSF PORTA,1 CALL PAUSE BCF PORTA,1 BSF PORTA,0 CALL PAUSE BCF PORTA,0 BSF PORTB,7 CALL PAUSE BCF PORTB,7 BSF PORTB,6 CALL PAUSE BCF PORTB,6 BSF PORTB,5 CALL PAUSE BCF PORTB,5 BSF PORTB,4 CALL PAUSE BCF PORTB,4 GOTO LOOP PAUSE MOVLW 0xFF MOVWF MCOUNT LOADN MOVLW 0xFF MOVWF NCOUNT DECO NOP NOP NOP NOP NOP DECFSZ OCOUNT,F GOTO DECO DECFSZ MCOUNT,F GOTO LOADN RETURN END