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: 1406
Registrován: 26 pro 2004, 01: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, 02: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, 02: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 88 x

Uživatelský avatar
urbanek
Příspěvky: 556
Registrován: 01 kvě 2005, 02: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, 02: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, 02: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: 4499
Registrován: 10 kvě 2004, 02: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, 02: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ů“