; WRITTEN BY ME
; DATE 23/04/12
; FILE SAVED AS PicProgram.asm
; DEVICE PIC16F684
; ----------------------- EQUATES ------------------------------------
PORTA EQU 0X05 ;ASSIGN THE PORTA REGISTER TO THE LABEL 'PORTA'
;counters for delay
COUNT1 EQU 20h;
COUNT2 EQU 21h
;------------------------ CONSTANTS -----------------------------------------
;Only defined constants for LEDS i need
;i/o for LEDS
#define TRIS_D0_D1 B'00001111' ; D0 and D1
#define TRIS_D2_D3 B'00101011' ; D2 and D3
; the LEDS
#define D0 B'00010000' ; D0 LED
#define D1 B'00100000' ; D1 LED
#define D2 B'00010000' ; D2 LED
#define D3 B'00000100' ; D3 LED
; ----------------------- MAIN PROGRAM ------------------------------------
START ORG 0X00 ;'ORG' SPECIFIES THE MEMORY LOCATION OF THE PROGRAM
; LED 0 ON
LOOP0
MOVLW TRIS_D0_D1;
TRIS PORTA
CLRF PORTA
MOVLW D0
MOVWF PORTA
;Delay:
decfsz COUNT1,1 ;Subtract 1 from 00h
goto LOOP0 ;If COUNT is zero, carry on.
decfsz COUNT2,1 ;Subtract 1 from 00h
goto LOOP0 ;Goto line: 'LOOP0'
; LED 1 ON
LOOP1
CLRF PORTA;
MOVLW TRIS_D0_D1;
TRIS PORTA
CLRF PORTA
MOVLW D1
MOVWF PORTA
;Delay:
decfsz COUNT1,1
goto LOOP1
decfsz COUNT2,1
goto LOOP1
; LED 1 & 2 ON
LOOP2
;1
CLRF PORTA;
MOVLW TRIS_D0_D1;
TRIS PORTA
CLRF PORTA
MOVLW D1
MOVWF PORTA
;2
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D2
MOVWF PORTA
;Delay:
decfsz COUNT1,1;
goto LOOP2
decfsz COUNT2,1
goto LOOP2
; LED 3 ON
LOOP3
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D3
MOVWF PORTA
;Delay:
decfsz COUNT1,1
goto LOOP3
decfsz COUNT2,1
goto LOOP3
; LED 3 & 1 ON
LOOP4
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D3
MOVWF PORTA
CLRF PORTA;
MOVLW TRIS_D0_D1;
TRIS PORTA
CLRF PORTA
MOVLW D1
MOVWF PORTA
;Delay:
decfsz COUNT1,1
goto LOOP4
decfsz COUNT2,1
goto LOOP4
; LED 3 & 2 ON
LOOP5
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D3
MOVWF PORTA
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D2
MOVWF PORTA
;Delay:
decfsz COUNT1,1
goto LOOP5
decfsz COUNT2,1
goto LOOP5
; LED 3 & 2 & 1
LOOP6
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D3
MOVWF PORTA
CLRF PORTA;
MOVLW TRIS_D2_D3;
TRIS PORTA
CLRF PORTA
MOVLW D2
MOVWF PORTA
CLRF PORTA;
MOVLW TRIS_D0_D1;
TRIS PORTA
CLRF PORTA
MOVLW D1
MOVWF PORTA
;Delay:
decfsz COUNT1,1
goto LOOP6
decfsz COUNT2,1
goto LOOP6
END