 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
MEK Član


Pridružen-a: Pon 29 Nov 2004 16:58 Prispevkov: 84 Aktiv.: 0.35 Kraj: Ljubljana
|
Objavljeno: Sre Okt 07, 2009 3:42 pm Naslov sporočila: Nastavljanje posameznega bita |
|
|
Zdravo!
Že cel dan se ukvarjam s tem problemom in počasi zgubljam živce. Sem namreč bolj kot ne začetnik programiranja v C-ju, medtem ko sem z asemblerjem že seznanjen.
Problem je sledeč:
Rad bi nastavil oz. zbrisal točno določen bit na PORT-u B. Ali pa "prebral" vrednost določenega bita PORT-a A, ki bi ga uporabljal kot vhod.
Poskusil sem:
PORTAbits.RA1
PORTA.1
RA1
...noben od teh ukazov mi ne prime. Napaka: ... undefined identifier "PORTAbits"
Ne vem kje delam napako...
Uporabljam MPLAB IDE v. 8.36.00.00 in HI-TECH C PRO for the PIC10-12-16 MCU Family V9.65PL1
Programiram PIC16F628A.
Prosim za pomoč...
_________________ lp, MEK |
|
Nazaj na vrh |
|
 |
aly Član



Pridružen-a: Tor 28 Sep 2004 14:51 Prispevkov: 9407 Aktiv.: 39.70 Kraj: Kranj - struževo
|
Objavljeno: Sre Okt 07, 2009 4:54 pm Naslov sporočila: |
|
|
output:
z masko:
Koda: |
// Izhodi
#define c_Dir 0b00000001
void MOTOR_FWD (void)
{
PORTC |= c_Dir;
}
void MOTOR_REV (void)
{
PORTC &= ~c_Dir;
} |
ali pa s shiftanjem:
Koda: |
PORTD |= (1<<PinNumber); |
Podobno je za input.
_________________ I'm going to stand outside, so if anyone asks, I'm outstanding  |
|
Nazaj na vrh |
|
 |
MEK Član


Pridružen-a: Pon 29 Nov 2004 16:58 Prispevkov: 84 Aktiv.: 0.35 Kraj: Ljubljana
|
Objavljeno: Sre Okt 07, 2009 6:53 pm Naslov sporočila: |
|
|
??? Prepričan sem da obstaja bolj enostaven način, ker navedeni način je bolj zakompliciran kot v asemblerju.
Na C sem preskočil ravno zaradi enostavnejšega programiranja
Kaj pa je z ukazi, ki sem jih omenil zgoraj? Zakaj to ne funkcionira, ker tak način upravljanja z biti sem opazil že v večih primerih kod... Mogoče drug compailer?
_________________ lp, MEK |
|
Nazaj na vrh |
|
 |
Umnik Član

Pridružen-a: Čet 16 Sep 2004 17:52 Prispevkov: 958 Aktiv.: 4.04 Kraj: Novo mesto
|
Objavljeno: Sre Okt 07, 2009 6:56 pm Naslov sporočila: |
|
|
Program se, žal, ne bo napisal sam.
Preštudiraj Alyjeva primera.
|
|
Nazaj na vrh |
|
 |
Tonci Član

Pridružen-a: Tor 05 Avg 2008 18:14 Prispevkov: 629 Aktiv.: 3.06 Kraj: Domžale
|
Objavljeno: Sre Okt 07, 2009 7:02 pm Naslov sporočila: |
|
|
Preberi si malo te zapiske, kjer je razloženo postavljanje, brisanje bita link
|
|
Nazaj na vrh |
|
 |
janiP Član

Pridružen-a: Čet 23 Okt 2008 23:00 Prispevkov: 145 Aktiv.: 0.72 Kraj: Ljubljana
|
Objavljeno: Sre Okt 07, 2009 9:07 pm Naslov sporočila: |
|
|
Na Microchipovem compilerju lepo deluje npr. PORTAbits.RA1, samo vključen mora biti header za ustrezen procesor. (To sicer velja za PIC serijo 18 in naprej, za serijo 16 predvidevam, da je isto.)
Ne vem, kako je na HI-TECH-ovem compilerju, samo gotovo mora biti kaj podobnega. Malo poglej v header, ali pa v kakšna navodila.
|
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Sre Okt 07, 2009 9:19 pm Naslov sporočila: |
|
|
Fantje, kar držite se mask in shiftov. Si boste prihranili marsikatero težavo zaradi "muh" prevajalnikov.
_________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 60.04 Kraj: Divača (Kačiče)
|
Objavljeno: Sre Okt 07, 2009 10:07 pm Naslov sporočila: |
|
|
Glitch je napisal/a: |
Fantje, kar držite se mask in shiftov. Si boste prihranili marsikatero težavo zaradi "muh" prevajalnikov. |
Res je !
Take in drugačne dobrote posameznega prevajalnika se sicer lahko uporablja, a je potrebno vedeti, da je to le alternativa, ne pa osnovni C. Ob prehodu na drug prevajalnik zna namreč to človeku krepko izpiti živce. Preizkušeno !
|
|
Nazaj na vrh |
|
 |
MEK Član


Pridružen-a: Pon 29 Nov 2004 16:58 Prispevkov: 84 Aktiv.: 0.35 Kraj: Ljubljana
|
Objavljeno: Čet Okt 08, 2009 12:41 am Naslov sporočila: |
|
|
Delno rešeno...
Problem je bil, da nisem imel vključenih vseh očitno potrebnih knjižnic. Ko sem dodal le-te, je začel delovat "ukaz" RA0 (kar je pin0 na portu A). PORTAbits.RA0 ne deluje.
Drug problem pa je bil, da je bil očitno portA definiran kot komparator in ne kot digital I/O (po defaultu je očitno vklopljen). Tako da, ko sem disableal komparator je stvar funkcionirala.
Še vedno pa ne vem zakaj mi TRISA postavi na vrednost 000110111, kljub temu da jo jaz postavim na 000010111... vsaj tako je razvidno pri debagiranju.
Sicer pa verjamem, da so maske in šiftanje bolj neoporečni.... vendar to kasneje.
_________________ lp, MEK |
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Čet Okt 08, 2009 6:55 am Naslov sporočila: |
|
|
Za postavljanje in brisanje bitov sem si sestavil tekst v priponki. Vse variante sem tudi sam preizkusil.
Sicer imam to za AVR, ampak osnove so pa enake tudi pri PIC
Opis: |
|
 Download |
Ime datoteke: |
Postavljanje in brisanje bitov v C.pdf |
Velikost datoteke: |
23.88 KB |
Downloadano: |
32 krat |
|
|
Nazaj na vrh |
|
 |
vilko Član



Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3361 Aktiv.: 14.18 Kraj: Dragomer
|
Objavljeno: Čet Okt 08, 2009 11:08 am Naslov sporočila: Za hec, kako je to v bascomu: |
|
|
Za hec, kako je to v bascomu:
Postavljanje bita 4 v portu C
Brisanje pa
številka pina je lahko tudi v spremenljivki recimo
_________________ Nihče ni za vojno in vsi so za mir,
vsi so za bratstvo, nihče za prepir.
Od same ljubezni vsak čas na granatah
bo vtisnjeno geslo: "Darilo za brata"
Janez Menart |
|
Nazaj na vrh |
|
 |
Majster Član


Pridružen-a: Sob 14 Nov 2009 1:05 Prispevkov: 344 Aktiv.: 1.81 Kraj: Majšperk
|
Objavljeno: Tor Apr 13, 2010 9:31 pm Naslov sporočila: |
|
|
Nevem če sem te pravilno razumel, vednar za output nekega pina uporabiš samo ukaz: "output_high(PIN_A0); ali output_float(PIN_A0); ali output_low(PIN_A0);"
Port A ima pa tudi možnost analognega merjenja, tako da povej natančneje kako želiš izmeriti pin.
_________________ Smith & Wesson — the original point and click interface. |
|
Nazaj na vrh |
|
 |
dha Član

Pridružen-a: Sre 03 Feb 2010 10:59 Prispevkov: 27 Aktiv.: 0.14 Kraj: Lendava
|
Objavljeno: Sre Apr 14, 2010 7:30 am Naslov sporočila: |
|
|
pri Hi-TECH cju je dovolj da vključiš htc.h, v mapi od hi-techa preletiš kjnižnico za tvoj pic in notri najdeš vse pini definirane. pri mojem primeru sem uporabil samo RA0 ali recimo TRISB3
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 495 dni
Powered by phpBB © 2001, 2005 phpBB Group
|