Ovládání portů PIC16F1937 + MPLAB SIM

Zdravim. Koupil jsem si PIC16F1937. Co jsem koukal do datasheetu tak jde pinově v pohodě zaměnit za 16F877. Takže jsem ho šoupnul do PVK40 a nažím se s ním aspoň rozsvítit LEDku. Na RB3 mám připojenou LED a na RD0 je připojený tlačítko, kteý je aktivní v LOG0.

Zkoušel jsem zapisovat jak do PORTB tak do LATB, ale výsledek žádný.

Pojistky nastavuju až při programování a jsou správně.

       list    p = PIC16F1937  ; processor type
	include	"p16f1937.inc"

;--------------------------------------------------------------------------
; Symbol definition :
;

#define	PB	PORTD,0         ;pushbutton 0 is on the RD0 pin
#define	LED	PORTB,3         ;LED is on the RB3 pin
#define	RP0	STATUS,5        ;RP0 is bit 5 in status register

;--------------------------------------------------------------------------
	org	0               ;program starts at address 0x000
	banksel	ANSELB
	clrf	ANSELB
	clrf	ANSELD
	banksel	TRISB
	movlw	B'11110111'
	movwf	TRISB        ;pin RB3 is output
	banksel	TRISD
	movlw	B'11111111'
	movwf	TRISD          ;portd pins are inputs

	banksel	0
;
Main:	btfss	PB              ;is PB 0 or 1?
	goto	Main_A          ;if PB=0, jump to main_A
	bcf	LED             ;PB=1, LED off
	goto	Main            ;closes the loop
Main_A:	bsf	LED             ;LED on
	goto	Main            ;closes the loop
;************************************************************
; end of PVK40 Example : Wire
	end

Je to lehce upravenej ukázkovej příklad pro PVK40. V simulátoru to jede.
Hlavně při pročítání datasheetu z toho 2x moudrej nejsem. Registry LATx mi tam dělají trochu bordel.

Jde nějak v simulátoru upravovat hodnoty registrů? Jakákoli nižší verze MPLABu než 8.40 si to nechala v okně File Registers líbit a taty to můžu přepiovat jak chci a vždycky mi to nastaví samý nuly. Okno Watch je na tom obdobně.

Díky za jakékoli nakopnutí správným směrem.

Zápis do registru LATx je totéž, jako zápis do registru PORTx. Čtení LATx registru vrací zapsanou hodnotu, ovšem čtení PORTx vrací skutečný stav na vstupních pinech.

Nevím, jestli máš připojenej krystal a nebo jestli máš interní, ale podle mě by jsi to měl nastavit hned na začátku.

Už jsem na to přišel, je třeba mít při programování pojistek nastaveno, že je připojen VCAP, já jsem nastavoval, že tam připojenej není, když ho tam fyzicky nemám.
Světe div se, PIC šlape jak má.

Honza: Tak to pak nechápu potřebu mít LATx registry. Pokud je to jen o tom, že mezi PORTx a LATx je nějaké zpoždění…

Ale stále mě štve ten MPLAB. Možnost zasahovat do obsahu registrů jsem při ladění celkem využíval a teď nevim co s tím.

Dej si starší verzi. Já používám 8.15 a ta šlape dobře.

Možná to není o spoždění, ale o tom, že když na určitej pin přivedeš 1 na tvrdo tak LATx ti vyhodí, co jsi tam skutečně zasplal, třeba 0 ale PORTx ti vyhodí tu 1. Můj názor. Třeba se mýlím :smiley:

Tu jsem právě vyměnil za 8.40 protože neměla podporu pro 16F193x. Pokud si to teda pmatuju správně.
Mě teď jede internet natolik rychle, že to budu stahovat 3 hodiny. Mohl bys se kouknout jestli 8.15 podporuje ty brouky?
Díky :smiley:

Kouknout se muzu, ale az v 22:15, jsem totiz v praci. :smiley: A na windows mobile asi MBPLAB nenaistaluju. :smiley: :smiley:

TAk do té doby to stáhnu :smiley:

Tak to já mám dneska volno. Ale zřejmě do práce půjdu si něco změřit na oscilu. Konečně mi ten PIC jede a můžu vyzkoušet ECCP modul - PWM řízení plnýho mostu.