PIC16F505

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Seeter

PIC16F505

#1 Příspěvek 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...
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#2 Příspěvek od mikollar »

skus TRISB TRISA podla nazvu portu a do tohto registra zapis hodnotu
Uživatelský avatar
urbanek
Příspěvky: 556
Registrován: 01 kvě 2005, 00:00
Kontaktovat uživatele:

#3 Příspěvek 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í)
Naposledy upravil(a) urbanek dne 02 zář 2008, 19:41, celkem upraveno 1 x.
Seeter

#4 Příspěvek od Seeter »

a jak je to s definováním MCLRE/nebo vstupního pinu, CP-on/of... ?
Uživatelský avatar
urbanek
Příspěvky: 556
Registrován: 01 kvě 2005, 00:00
Kontaktovat uživatele:

#5 Příspěvek 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
Seeter

#6 Příspěvek 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.
Přílohy
SVETLO.ASM
(197 bajtů) Staženo 140 x
Uživatelský avatar
urbanek
Příspěvky: 556
Registrován: 01 kvě 2005, 00:00
Kontaktovat uživatele:

#7 Příspěvek od urbanek »

nevidím tam nikde žádnou "nekonečnou" smyčku. Co ten procesor udělá po vykonání instrukce MOVWF PORTC ??
Seeter

#8 Příspěvek od Seeter »

rozsvítí LED diodu....
Uživatelský avatar
urbanek
Příspěvky: 556
Registrován: 01 kvě 2005, 00:00
Kontaktovat uživatele:

#9 Příspěvek 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
Seeter

#10 Příspěvek 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
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#11 Příspěvek 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
Uživatelský avatar
Atlan
Příspěvky: 4514
Registrován: 10 kvě 2004, 00:00
Bydliště: Košice

#12 Příspěvek od Atlan »

nechce sa mi to studovat ...ale vseto je v jednej banke 0 alebo to nepouziva tie banky.
Uživatelský avatar
urbanek
Příspěvky: 556
Registrován: 01 kvě 2005, 00:00
Kontaktovat uživatele:

#13 Příspěvek od urbanek »

Celý SFR je v jedné bance, je to jednoduchej procesůrek...
Odpovědět

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