MPLAB help?

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
edguy21
Příspěvky: 44
Registrován: 16 říj 2007, 02:00

MPLAB help?

#1 Příspěvek od edguy21 »

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
:idea: :wink:

Uživatelský avatar
Burajko
Příspěvky: 1803
Registrován: 21 srp 2009, 02:00

#2 Příspěvek od Burajko »

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.
Už druhý krát strihám a furt je to krátke

Uživatelský avatar
edguy21
Příspěvky: 44
Registrován: 16 říj 2007, 02:00

#3 Příspěvek od edguy21 »

Diky
:idea: :wink:

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]

Uživatelský avatar
Atlan
Příspěvky: 4499
Registrován: 10 kvě 2004, 02:00
Bydliště: Košice

#4 Příspěvek od Atlan »

LEBO:

a) Provést jakékoli čtení nebo zápis do registru PORTB. Tím dojde k ukončení změnového stavu, vyvolávajícího žádost o
přerušení
b) Nulovat příznak přerušení RBIF

Uživatelský avatar
MartinOV
Příspěvky: 112
Registrován: 01 dub 2010, 02:00

#5 Příspěvek od MartinOV »

Kód: Vybrat vše

BCF INTCON,GIE      ;zakázání všech přerušení
Není třeba, přerušení se automaticky zakáže skokem na adresu 04h. Povoluje se instrukcí RETFIE, která vrátí program na původní místo.

Uživatelský avatar
Burajko
Příspěvky: 1803
Registrován: 21 srp 2009, 02:00

#6 Příspěvek od Burajko »

Ja pouzivam MPLAB 8.50 tam je to apply.
Už druhý krát strihám a furt je to krátke

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“