You are on page 1of 3

;**************************************************************************

;* Példaprogram PIC 18F14K22-re *


;* feladat: inicializálás
*
;*módositva:002 *
;**************************************************************************
LIST P=PIC18F14K22 ; lista megadása
INCLUDE <P18F14K22.INC> ; includde fájlok megadása
RADIX hex ; alapértelmezet számrendszer megadása

; konfigurácios bitek megadása


CONFIG FOSC = IRC ; bels? oszcillátor
CONFIG WDTEN = OFF ; watchdog kikapcsolása
CONFIG LVP = OFF ; alacsony feszültség? programozás
kikapcsolva

#define GOMB_1 PORTA, 1


#define GOMB_2 PORTA, 2

STATUS_TEMP EQU 0X00


WREG_TEMP EQU 0X01
DIR EQU 0X02
LATC_COPY EQU 0x03

org 0x0000 ; program memória kezd? címe


nop ; ICD miatt
GOTO START

org 0x0008
GOTO INTERRUPT
org 0x0028
INTERRUPT
MOVFF STATUS, STATUS_TEMP
MOVFF WREG, WREG_TEMP

BTFSC INTCON, TMR0IF


CALL LED_KAPCS
BTFSC INTCON3, INT1IF
CALL LED_KAPCS2

MOVFF STATUS_TEMP, STATUS


MOVFF WREG_TEMP, WREG

BSF INTCON, GIE


RETURN

LED_KAPCS ;idozito okozta a megszakitast


BCF INTCON, TMR0IF
BTG LATB, 4 ;zold led

BTFSS DIR, 0
GOTO LEFT
GOTO RIGHT

LEFT
MOVF LATC, 0
MOVWF LATC_COPY
RLF LATC_COPY, 0
MOVWF LATC
BTFSS LATC, 7
GOTO THEEND
MOVLW B'00000001'
MOVWF DIR
GOTO THEEND

RIGHT
MOVF LATC, 0
MOVWF LATC_COPY
RRF LATC_COPY, 0
MOVWF LATC
BTFSS LATC, 0
GOTO THEEND
MOVLW B'00000000'
MOVWF DIR
GOTO THEEND

;7 szegmenses multiplex

BTFSS LATB, 6
BSF LATB, 6
BCF LATB, 6

BTFSS LATB, 7
BSF LATB, 7
BCF LATB, 7

; BSF LATB, 6 ;jobb 7 szegm eng


; BSF LATB, 7 ;bal 7 szegm eng

THEEND
RETURN

LED_KAPCS2 ;nyomogomb okozta a megszakitast


BCF INTCON3, INT1IF
BTG LATA, 5 ;sarga led
RETURN

; kezd? cím, ami átugorja a


START ; megszakítási címet
CALL INICIALIZALAS
CLRF DIR
BSF LATB, 5 ; az 5. bit a LEDsor engedélyezoje
BSF LATC, 0
BSF LATB, 6

MAIN

GOTO MAIN ; ugrás önmagára, (program futás vége)

;--------------------------------------------------------------------------
INICIALIZALAS
CLRF LATC ; kimeneti portok törlése
CLRF LATA ;
CLRF LATB ;

; analog/digitális portok beállítása 1 = analog, 0 = digitális


; kimenet esetén digitálisba kell állítani.
; !!! induláskor mindegyik analog !!!
MOVLW B'00000001' ; analóg / digitális bemenetek
MOVWF ANSEL ;
; portok irányának beállítása a kpcsolási rajz szerint,
; 1 = Input (bemenet), 0 = Output (kimenet)
MOVLW B'00011111' ; A port
MOVWF TRISA
MOVLW B'00000000' ; B port kimenet
MOVWF TRISB
MOVLW B'00000000' ; C port kimenet
MOVWF TRISC

MOVLW B'00000010' ; oszcillátor frekvenciája <4:6>


MOVWF OSCCON ; 111 = 16 MHz, 001 = 250 kHz, 000
= 31 kHz (kb óra kvarc)

MOVLW B'11000011'
MOVWF T0CON

MOVLW B'10100000'
MOVWF INTCON

BSF INTCON3, 5

RETURN
;--------------------------------------------------------------------------
END

You might also like