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.