ELEKTROLINE
 Futófénysor a P1-próbapanelen

	
; A PROGRAM A P1-PRÓBAPANEL RB0..RB7 LÁBAKON LÉVŐ
; LEDEKEN FUTÓFÉNYT HOZ LÉTRE
; JErvin © 2004

	list p=16f84a, f=inhx8m
	#include 
	__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC


BIT	equ 0x40		; Regiszerek megadása
IRANY	equ 0x41
LO	equ 0x42
HI	equ 0x43

	ORG	0x0000		; RESET vektor
	GOTO	START
	ORG	0x0004		; INT vektor
	RETFIE


START				; Kezdes
	BANKSEL	TRISB		; BANK1
	CLRF	TRISB		; PORTB minden láb kimenetre állítása
	BANKSEL	PORTB		; BANK0
	CLRF	PORTB		; PORTB kimenetek törlése

	MOVLW	0x01		; Kigyújtandó LED értéke (PORTB binárisan)
	MOVWF	BIT		; Letárolás
	MOVLW	0x00		; Irány jobbra
	MOVWF	IRANY		; Letárolás

ISMET
	BTFSS	BIT, 0		; Ha az első LED világít ugrás 
	GOTO	N1		; Nem világít, ugrás N1-re
	COMF	IRANY		; Irány negálása
N1
	BTFSS	BIT, 7		; Ha a 8. LED világít ugrás
	GOTO	N2		; Nem világít, ugrás N2
	COMF	IRANY		; Irány negálása

N2
	BTFSS	IRANY, 0	; Ha az irány balra ugrás
	GOTO	JOBBRA		; Ugrás 'JOBBRA'
	BCF	STATUS, C	; Carry törlése
	RLF	BIT, 1		; Rotálás balra
	CALL	SZUNET		; Led kigyújtása és szünet
	GOTO	ISMET		; ISMÉT

JOBBRA
	BCF 	STATUS, C	; Carry tölése
	RRF	BIT, 1		; Rotálás jobbra
	CALL	SZUNET		; Led kigyújtása és szünet
	GOTO	ISMET		; ISMÉT

SZUNET				; KÉSLELTETÉS
	MOVF	BIT, 0		; BIT értéke a W-regiszterbe
	MOVWF	PORTB		; W-regiszter a POTRB-re
	MOVLW	0x00		; 16-bites számláló beállítása
	MOVF	LO, 1		; 
	MOVLW	0x30		;	
	MOVWF	HI		;

MEG
	;RETURN			; DEBUG-nál a ';' törlendő
	DECFSZ	LO, 1		; LO-Byte csökkentése
	GOTO 	MEG		; MEG, ha nem nulla	
	DECFSZ	HI, 1		; HI-Byte csökkentése
	GOTO	MEG		; MEG ha nem nulla
	RETURN			; Vissza a késleltetésből

end