Stránka 1 z 1
PIC16F505
Napsal: 02 zář 2008, 16:41
od Seeter
Dobrý den...nedávno jsem si pořídil tento procesor a vůbec nevím, jak nastavím jeho nožičky na vstupy a výstupy pomocí příkazu TRIS, protože narozdíl od např.: PIC16F627 výraz TRIS není definován...nemá podle dokumentace žádnou adresu nebo jsem jí nenašel. Rád bych věděl, jak mám procesor nadefinovat. Také jsem chtěl použít soubor #include, ale zjistil jsem, že ho nemám k dispozici a tak jsem chtěl proměnné definovat klasicky, ale zjistil jsem že funkce jako MCLRE, CP, OSC nemám zase kam přidělit...nenašel jsem jejich pozici v paměti a v dokumentaci neni definována a dole je pouze odkaz, abych si přečetl specifikace paměti. Prosím pomozte...děkuji...
Napsal: 02 zář 2008, 16:58
od mikollar
skus TRISB TRISA podla nazvu portu a do tohto registra zapis hodnotu
Napsal: 02 zář 2008, 17:53
od urbanek
U 505ky se vstupy a výstupy nastavují tak, že se do W dá příslušná hodnota 0 pro výstup 1 pro vstup, a pak se zavolá TRIS s operandem 6 pro port B nebo 7 pro port C. Port A 505ka nemá. Takže to vypadá třeba takto:
movlw 0xFF
tris 6
movlw 0x00
tris 7
tím se nastaví celý port B jako vstupní a port C jako výstupní (samozřejmě jde nastavit každý pin jinak, jen ten co se používá pro MCLR jde použít jen jako vstupní)
Napsal: 02 zář 2008, 18:21
od Seeter
a jak je to s definováním MCLRE/nebo vstupního pinu, CP-on/of... ?
Napsal: 02 zář 2008, 18:31
od urbanek
to se dělá v CONFIGu tak, jako u jiných PICů, záleží na překladači - u CCS C compileru jsou to direktivy #FUSES. Nebo se to dá nastavit až při vlastním programování procesoru
Napsal: 02 zář 2008, 19:05
od Seeter
Ještě jedna věc...mám program, který mi nefunguje...ty pojistky definuji při programování, Watchdog je vypnutý, MCLR zapnutý,....interní oscilátor, program je v příloze.
Napsal: 02 zář 2008, 19:40
od urbanek
nevidím tam nikde žádnou "nekonečnou" smyčku. Co ten procesor udělá po vykonání instrukce MOVWF PORTC ??
Napsal: 02 zář 2008, 19:50
od Seeter
rozsvítí LED diodu....
Napsal: 02 zář 2008, 20:28
od urbanek
To jo, ale co bude pak dělat dál, po provedení té instrukce? musí tam být nějaká smyčka, něco ve smyslu
loop:
goto loop
Napsal: 02 zář 2008, 21:55
od Seeter
nic tam není...podle mne procesor nic víc nepotřebuje...potom je konec programu, protože vezme informaci do W potom jí přemístí na PortC - diody se rozsvítí a potom je konec...vždy mi to fungovalo tím způsobem, že to takto fungovalo a svítilo neustále...tedy hlavně přes emulátor MUBeta; zkusil jsem dát i GOTO $-1 ale ani to nepomohlo
Napsal: 03 zář 2008, 09:51
od jankop
Procesor bez ohledu na tvoje představy pokračuje ve vykonávání následujících instrukcí. A protože další obsah programové paměti nemusí být definován, může dělat naprosto co ho napadne. Pak se nediv, že ti programek nefunguje.
V úpravě jsem ho ověřil a nenašel jsem problém.
Kód: Vybrat vše
list P=PIC16F505 ; list directive to define processor
#include <P16F505.INC> ; processor specific variable definitions
errorlevel -302
__CONFIG _MCLRE_ON&_WDT_OFF&_CP_OFF&_IntRC_OSC_RB4EN
;--------- CONSTANT DEFINITIONS ---------------------------------------
#define RAM_Start 0x10
;--------- VARIABLE DEFINITIONS ---------------------------------------
CBLOCK RAM_Start
ENDC
;--------- ZACATEK PROGRAMU -------------------------------------------
org 0x0000 ; zacatek programu
movwf OSCCAL
movlw B'00000000'
tris PORTB
movlw B'00000000'
tris PORTC
movlw B'00000111'
movwf PORTC
loop goto loop
end ; konec programu
Napsal: 03 zář 2008, 19:46
od Atlan
nechce sa mi to studovat ...ale vseto je v jednej banke 0 alebo to nepouziva tie banky.
Napsal: 03 zář 2008, 19:55
od urbanek
Celý SFR je v jedné bance, je to jednoduchej procesůrek...