; PIC16F84 6LED futófény oda-vissza
LIST P=16F84
#INCLUDE "P16F84.INC" ;Használd az ebben lévő szimbólumokat
__CONFIG _XT_OSC&_CP_OFF&_WDT_OFF ; Kvarc oszcillátor 
				;kódvédelem ki, wdt ki
CBLOCK 0X0C
VAR_1
VAR_2
ENDC
;-----------------------------------------------------------
ORG 0             ; Kezdődjön 0h címen a program
GOTO START        ; Ugorj a START címkére
ORG 4             ; Megszakításoknak lefoglalt cím
;-----------------------------------------------------------
START
BANKSEL TRISA     ; Váltsunk a TRISA-t tartalmazó bankba
MOVLW B'11111111'
MOVWF TRISA       ; PORTA INPUT LESZ
MOVLW B'00000000'
MOVWF TRISB       ; PORTB OUTPUT LESZ
BANKSEL PORTA     ; Váltsunk a PORTA-t tartalmazó bankba
;-----------------------------------------------------------
FUTO
MOVLW B'00000001' ; 1. led
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00000010' ; 2. led
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00000100' ; 3. LED
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00001000' ; 4. zöld LED
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00010000' ; 5. zöld LED
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00100000' ; 6. zöld LED
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás

MOVLW B'00010000' ; 5. led
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00001000' ; 4. led
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00000100' ; 3. LED
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás
MOVLW B'00000010' ; 2. zöld LED
MOVWF PORTB       ; Kiírás a PORTRA, LED bekapcsolása
CALL VARAKOZ      ; várakozás

GOTO FUTO
;-----------------------------------------------------------
VARAKOZ
MOVLW .100
MOVWF VAR_1       ; VAR_1 kezdeti értéke
VARJ_1
MOVLW .100
MOVWF VAR_2       ; VAR_2 kezdeti értéke
VARJ_2
clrwdt            ; WatchDog törlése
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ VAR_2,F    ; VAR_2 csökkentése, 0?
GOTO VARJ_2       ; NEM, tovább
DECFSZ VAR_1,F    ; VAR_1 csökkentése, 0?
GOTO VARJ_1       ; NEM, tovább
RETURN            ; IGEN, kiszáll
;----------------------------------------------------------
END                ; Forrásprogram vége

















; MATRIX.ASM
; PIC16F84 7*16=112 LED MATRIX
; 32 KARAKTER
LIST    P = 16F84,  F = INHX8M, n = 66
PIC84   equ     H'03FF'
;=============================================
;       Register Definitions
;=============================================
W               EQU     H'0000'
F               EQU     H'0001'
;----- Register Files-------------------------
INDF            EQU     H'0000'
TMR0            EQU     H'0001'
PCL             EQU     H'0002'
STATUS          EQU     H'0003'
FSR             EQU     H'0004'
PORTA           EQU     H'0005'
PORTB           EQU     H'0006'
EEDATA          EQU     H'0008'
EEADR           EQU     H'0009'
PCLATH          EQU     H'000A'
INTCON          EQU     H'000B'
OPTION_REG      EQU     H'0081'
TRISA           EQU     H'0085'
TRISB           EQU     H'0086'
EECON1          EQU     H'0088'
EECON2          EQU     H'0089'
;----- STATUS Bits ---------------------------
IRP             EQU     H'0007'
RP1             EQU     H'0006'
RP0             EQU     H'0005'
NOT_TO          EQU     H'0004'
NOT_PD          EQU     H'0003'
Z               EQU     H'0002'
DC              EQU     H'0001'
C               EQU     H'0000'
;----- INTCON Bits ---------------------------
GIE             EQU     H'0007'
EEIE            EQU     H'0006'
T0IE            EQU     H'0005'
INTE            EQU     H'0004'
RBIE            EQU     H'0003'
T0IF            EQU     H'0002'
INTF            EQU     H'0001'
RBIF            EQU     H'0000'
;----- OPTION Bits ---------------------------
NOT_RBPU        EQU     H'0007'
INTEDG          EQU     H'0006'
T0CS            EQU     H'0005'
T0SE            EQU     H'0004'
PSA             EQU     H'0003'
PS2             EQU     H'0002'
PS1             EQU     H'0001'
PS0             EQU     H'0000'
;----- EECON1 Bits ---------------------------
EEIF            EQU     H'0004'
WRERR           EQU     H'0003'
WREN            EQU     H'0002'
WR              EQU     H'0001'
RD              EQU     H'0000'
;---------------------------------------------
;       RAM Definition
;---------------------------------------------
        __MAXRAM H'AF'
        __BADRAM H'07', H'30'-H'7F', H'87'
;---------------------------------------------
;
;       Configuration Bits
;
;---------------------------------------------
_CP_ON          EQU     H'3FEF'
_CP_OFF         EQU     H'3FFF'
_PWRTE_ON       EQU     H'3FFF'
_PWRTE_OFF      EQU     H'3FF7'
_WDT_ON         EQU     H'3FFF'
_WDT_OFF        EQU     H'3FFB'
_LP_OSC         EQU     H'3FFC'
_XT_OSC         EQU     H'3FFD'
_HS_OSC         EQU     H'3FFE'
_RC_OSC         EQU     H'3FFF'


;----------- USER REGISTERS ------------------
POINTER         EQU     H'000C'
HCOUNT          EQU     H'000D'
LCOUNT		EQU     H'000E'					
TEMP1           EQU     H'002B'
TEMP2           EQU     H'002C'
TEMP3           EQU     H'002D'
ZAMAN           equ     H'002E'
DISP            EQU     H'002F'
msb             EQU     0x29            ;general delay register
lsb             EQU     0x2A            ;general delay register
FLCOUNT         EQU     H'0027'         ;flas counter
WAITC           EQU     H'0026'         ;wait and run
SPECIAL         EQU     H'0025'         ;special function register
COUNT1          EQU     H'0022'         ;system timer counter
COUNT2          EQU     H'0021'         ;system flas timer counter
SYSFUNC         EQU     H'0020'         ;system control register
LINE1           EQU     H'0010'
LINE2           EQU     H'0011'
LINE3           EQU     H'0012'
LINE4           EQU     H'0013'
LINE5           EQU     H'0014'
LINE6           EQU     H'0015'
LINE7           EQU     H'0016'
LINE8           EQU     H'0017'
LINE9           EQU     H'0018'
LINE10          EQU     H'0019'
LINE11          EQU     H'001A'
LINE12          EQU     H'001B'
LINE13          EQU     H'001C'
LINE14          EQU     H'001D'
LINE15          EQU     H'001E'
LINE16          EQU     H'001F'
SATIRLAR        EQU     H'0023'
;
;
;
START
        call    SETCPUPORTSTATUS
        call    STEP_CLEAR

KAYANYAZI_1
         MOVLW  H'0000'
         MOVWF  SATIRLAR

KAYANYAZI_2
        INCFSZ  SATIRLAR
        GOTO    KAYANYAZI_3
        GOTO    KAYANYAZI_4

KAYANYAZI_3
        goto    KAYANYAZI_5

KAYANYAZI_4
        goto    KAYANYAZI_1

KAYANYAZI_5
        MOVLW   H'00'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE1
        MOVLW   H'01'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE2
        MOVLW   H'02'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE3
        MOVLW   H'03'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE4
        MOVLW   H'04'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE5
        MOVLW   H'05'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE6
        MOVLW   H'06'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE7
        MOVLW   H'07'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE8
        MOVLW   H'08'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE9
        MOVLW   H'09'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE10
        MOVLW   H'0A'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE11
        MOVLW   H'0B'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE12
        MOVLW   H'0C'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE13
        MOVLW   H'0D'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE14
        MOVLW   H'0E'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE15
        MOVLW   H'0F'
        ADDWF   SATIRLAR,0
        CALL    FINDSHOW
        movwf   LINE16
        MOVLW   D'15'
        MOVWF   ZAMAN
        CALL    STEP_DELAY
        goto    KAYANYAZI_2
;-------------------------------------------------------
FINDSHOW:
showdata:
        addwf   PCL,1
        retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
        retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
        retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
        retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space
	retlw   B'00000000'     ; space

        retlw   B'00011110'     ;
        retlw   B'00100000'     ;
        retlw   B'00011000'     ;
        retlw   B'00100000'     ;
        retlw   B'00011110'     ;  W

	retlw   B'00000000'     ; space

	retlw   B'00111110'     ;
        retlw   B'00101010'     ;
        retlw   B'00101010'     ;
        retlw   B'00100010'     ;  E
        
	retlw   B'00000000'     ; space

     	retlw   B'00111110'     ;
        retlw   B'00101010'     ;
        retlw   B'00101010'     ;
        retlw   B'00010100'     ;  B
        
	retlw   B'00000000'     ; space
    
	retlw   B'00111110'     ;  I
        
	retlw   B'00000000'     ; space
  
	retlw   B'00111110'     ;
        retlw   B'00000100'     ;
        retlw   B'00001000'     ;
        retlw   B'00111110'     ;  N
        
	retlw   B'00000000'     ; space

 	retlw   B'00111100'     ;
        retlw   B'00010010'     ;
        retlw   B'00111100'     ;  A

 	retlw   B'00000000'     ; space
        
	retlw   B'00100100'     ;
        retlw   B'00101010'     ;
        retlw   B'00010010'     ;  S
        
	retlw   B'00000000'     ;space
       
	retlw   B'00000000'     ;186
        retlw   B'00000000'     ;187
        retlw   B'00000000'     ;188
        retlw   B'00000000'     ;189
        retlw   B'00000000'     ;190
        retlw   B'00000000'     ;191
        retlw   B'00000000'     ;192
        retlw   B'00000000'     ;193
        retlw   B'00000000'     ;194
        retlw   B'00000000'     ;195
        retlw   B'00000000'     ;196
        retlw   B'00000000'     ;197
        retlw   B'00000000'     ;198
        retlw   B'00000000'     ;199
        retlw   B'00000000'     ;200
        retlw   B'00000000'     ;201
        retlw   B'00000000'     ;202
        retlw   B'00000000'     ;203
        retlw   B'00000000'     ;204
        retlw   B'00000000'     ;205
        retlw   B'00000000'     ;206
        retlw   B'00000000'     ;207
        retlw   B'00000000'     ;208
RETURN
;-------------------------------------------------
STEP_CLEAR
        movlw   B'00000000'
        movwf   LINE16
        movwf   LINE15
        movwf   LINE14
        movwf   LINE13
        movwf   LINE12
        movwf   LINE11
        movwf   LINE10
        movwf   LINE9
        movwf   LINE8
        movwf   LINE7
        movwf   LINE6
        movwf   LINE5
        movwf   LINE4
        movwf   LINE3
        movwf   LINE2
        movwf   LINE1
        MOVLW   D'50'
        MOVWF   ZAMAN
        CALL    STEP_DELAY
RETURN
;------------------------------------------------
STEP_DELAY
        clrwdt
       ; call    DELAYSYS          ;20 msec delay
        CALL    RUNTIME
        decfsz  ZAMAN
        goto    STEP_DELAY
return
;-----------------------------------------------
RUNTIME
WRITEDISP
        ;test
        ;call    delay20
        ;test
        clrwdt
        movlw   D'0'
        movwf   PORTA
        movf    LINE1,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'1'
        movwf   PORTA
        movf    LINE2,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'2'
        movwf   PORTA
        movf    LINE3,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'3'
        movwf   PORTA
        movf    LINE4,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'4'
        movwf   PORTA
        movf    LINE5,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'5'
        movwf   PORTA
        movf    LINE6,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'6'
        movwf   PORTA
        movf    LINE7,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'7'
        movwf   PORTA
        movf    LINE8,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'8'
        movwf   PORTA
        movf    LINE9,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'9'
        movwf   PORTA
        movf    LINE10,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'10'
        movwf   PORTA
        movf    LINE11,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'11'
        movwf   PORTA
        movf    LINE12,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'12'
        movwf   PORTA
        movf    LINE13,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'13'
        movwf   PORTA
        movf    LINE14,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'14'
        movwf   PORTA
        movf    LINE15,0
        movwf   PORTB
        call    delay1
        clrwdt
        movlw   D'15'
        movwf   PORTA
        movf    LINE16,0
        movwf   PORTB
        call    delay1
        movlw   H'00'
        movwf   PORTB
        RETURN
;---------------------------------------------------------------
SETCPUPORTSTATUS
        bsf     STATUS,RP0
        movlw   H'00'
        movwf   TRISB           ;PORTB pins : O-O-O-O-O-O-O-O
        movlw   B'00000000'
        movwf   TRISA           ;PORTA pins : X-X-X-O-O-O-O-O
        bcf     STATUS,RP0
        movlw   H'00'   
        movwf   PORTA
        movwf   PORTB
RETURN
;---------------------------------------------------------------
;*-     Delay Routines                                       -*
;---------------------------------------------------------------
vlong   
	movlw   0xff            ;200msec
        movwf   msb
        goto    d1
DELAYSYS                        ;20 msec delay
        movlw   .26
        movwf   msb
        CLRWDT
        CALL    RUNTIME
        goto    d1
delay20                         ;20 msec delay
        movlw   .26
        movwf   msb
        goto    d1
delay16                         ;16 msec delay
        movlw   .21
        movwf   msb
        goto    d1
delay1                          ;750nsec delay
        movlw   .1      
        movwf   msb
d1      movlw   0xff
        movwf   lsb
d2      decfsz  lsb,F
        goto    d2
        decfsz  msb,F
        goto    d1
        return
;-------------------------------------------------------------
;FINISH
        goto    START
end