Diky
Na zmenu treba stlačiť Fire.
Som myslel že toto len som nevedel ako stlačim,som skušal cez Clock stimulus
----
S programovanim len začinam.
MPLAB na otestovanie lebo MULTISIM občas zblbne,a IRIS ešte nie velmi otestované.
Ešte otazka?
Neviem prečo mi robi prerušenie 2x.Ak stlačim PORTB,4 na 1 a 0 tak robí 2x.Skušal som robiť rôzne kombinacie ale vždy 2X.--to je vždy blika ta ista LED
Ak stlačim PORTB,4 aj počas druheho prerušenia tak ide až 3x.---len vtedy sa prepne LED
nastavenie je asi dobre::
ORG 04h ;vektor přerušení
BCF INTCON,GIE ;zakázání všech přerušení
BCF INTCON,RBIF ;smazání příznaku přerušení
GOTO prerus
Kód: Vybrat vše
LIST P=16F84
INCLUDE<P16F84.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC
#DEFINE TLAC PORTB,4 ; tlacidlo
#DEFINE TLAC1 PORTB,3 ; tlacidlo
#DEFINE LED PORTA,0 ; za stredniky !!!
#DEFINE LED1 PORTA,1 ; za stredniky !!!
#DEFINE LED2 PORTA,2 ; za stredniky !!!
c2 EQU h'21' ;proměnné pro cykly
cas EQU h'30' ;pocet bliknuti
prep EQU h'22' ;prepinac blikania medzi LED a LED1
e2 EQU h'29'
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'
W_save equ 29h ; zaloha w
Sta_sav equ 25h ; zaloha status
PCL_sav equ 26h ; zaloha pcl
FSR_sav equ 27h ; zaloha fsr
;- zaciatok-------------------------------------------------
ORG 00h ;přesun na vykonávání
GOTO init ;programu
ORG 04h ;vektor přerušení
BCF INTCON,GIE ;zakázání všech přerušení
BCF INTCON,RBIF ;smazání příznaku přerušení
GOTO prerus
;- inicializacia-------------------------------------------------
init BSF STATUS,RP0
MOVLW B'00000000' ; port A vystup
MOVWF TRISA
MOVLW B'11111111' ; port B vstup
MOVWF TRISB
BCF STATUS,RP0
MOVLW B'10001000' ; povoleni preruseni pouze od RB0
MOVWF INTCON
MOVLW B'00000001' ; vloženie 64 smyčku
MOVWF cas
;- prepinanie LED-------------------------------------------------
hej BTFSC prep,0
GOTO ld1
BTFSS prep,0
GOTO ld2
;- blikanie-------------------------------------------------
ld1 BSF LED ; provádí blikání LED
nop
BCF LED ; určený počet bliknutí
nop
GOTO hej
ld2 BSF LED1 ; provádí blikání LED1
nop
BCF LED1 ; určený počet bliknutí
nop
GOTO hej
;- smycka-------------------------------------------------
;- prerusenie --zniženie blikania-----------------------------------------------
prerus movwf W_save
swapf STATUS,w
movwf Sta_sav
MOVLW B'00100000'
ADDWF cas,1 ;pripocitanie na zmeny rychlosti
comf prep,1 ;zmena LED a LED1
BSF LED2 ; provádí blikání LED1
NOP ; se v tomto bloku provádí
BCF LED2 ; určený počet bliknutí
BTFSC TLAC ;cakat na pustenie TL
GOTO $-1
swapf Sta_sav,w
movwf STATUS
swapf W_save,f
swapf W_save,w
retfie
END
[/code]