Zdravím!
Začínam sa venovať programovaniu PIC.
Potrebujem pomôct s programom MPLAB 8.56.
------simulacia zmeny na vstupnom porte------??????
Viem ako spustiť simulaciu a pod.,ale neviem ako priradiť vstupnym portom zmenu(to je napr.TL-0,1)
Skušam simulaciu s prerušenim ale simulacia ide dookola a neprejde celym zdrojakom ASM,lebo su tam podmienky na zmenu na PORTB,4 ako vstup.
PORTB 4-7 je definovany ako zdroj prerušenia
ASM je simulacia blikania LED a LED1,t.j. ak stlačim TL(PORTB,4) tak začne blikať druha LED ale neviem kde v MPLAB sa definuje zmena na porte.
Diiiky
MPLAB help?
Moderátor: Moderátoři
zalozka -> Debuger ->Stimulus -> New Workbook objavi sa okno Stimulus,
V zalozke Asynch v prvom riadku a stlpci nastav napr. RB4,v stlpci nastav action napr.Toggle(po kazdom stlaceni Apply sa ti bude menit hodnota RB4)pokial samozrejme mas nakonfigurovany TRIS register ako input.
V zalozke Asynch v prvom riadku a stlpci nastav napr. RB4,v stlpci nastav action napr.Toggle(po kazdom stlaceni Apply sa ti bude menit hodnota RB4)pokial samozrejme mas nakonfigurovany TRIS register ako input.
Už druhý krát strihám a furt je to krátke
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
[/code]
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
Kód: Vybrat vše
BCF INTCON,GIE ;zakázání všech přerušení