Jak vytvorit promennou s ukazateli?

Zdravim Vas,

potreboval bych poradit. Je mozne v Hi-tech C vytvorit promennou, ktera by byla pole a jednotlive prvky by odkazovaly na urcite piny MCU? Priklad:

Nadefinuji si promennou x

x = {RB0,RB1,RB2}

Pak kdyz ulozim v programu do promenne hodnoty

x = {1,0,1}

automaticky by se mi ulozily do jednotlivych PINu jak jsou definovany v definici promenne. Nekde jsem cetl, ze by to melo jit pres ukazatele, ale netusim vubec jak, nikdy jsem toto nedelal. Poradi nekdo prosim?

a jakej je rozdil mezi promenou X a PORTB nebo LATB ?

co pres “struct”
[forum.mcontrollers.com/t/deklarace-jednotlivych-bitu-pic18-v-c/2326/1)

Asi si nerozumime, ten struct, je mozna pouzitelny, ale co kdyz chci pouzit jen nektere portyB a portyA<

x = {RB0, RA1, RB1}

jak by ten struct musel byt zapsany?

hmm takle kombinovane asi ne, netusim jestly to jde nejak jednoduse ale proc to delat slozite…, nejak pres makro …, takovydle ficurky nedelam pak se v tom vyznej

No potrebuji to kvuli konfiguraci pinu pro display, tam pouzivam 6 pinu, ty jsou sice vsechny na PORTB, ale treba to vzdy takto nepujde. Navic mam pocit ze kdyz pracuji s celym PORTem tak ovlivnuji i ty zbyle, na ktereme mam ultrazvukovy sensor. Jeden pin je Trig a druhy Echo. Proto to chci osekat jen na ty piny pro LCD a piny pro ultrazvuk.

zalezi jak :wink:i=0x2; i|=(1<<0); //i=0x3 i&=~(1<<0); //i=0x2 i&=~(1<<1); //i=0x0
proto se piny definujou kazdej zvlast aby se pak mohly prispusobit jakemukoliv zapojeni

Aha :wink: tak ted jsem z toho zapisu uplne jelen :frowning:

odsimulij , vyskousej, kurnik nekde to bylo pekne rozepsany ale uz to nemuzu najit , jsou to bitovy operace , a myslim ze to tu nekde pekne popisoval i Piityy

jj, z je mi to jasne, ted jsem si uvedomil co jsi s tim udelal :wink: Takze timto zpusobem neovlivnim okolni bity?

kdyz pouziji tvuj kod:


i=0x2; 
i|=(1<<0);  //i=0x3 
i&=~(1<<1);  //i=0x1 

Je to ok?

jo to je pro 1 bit, pro vic bitu najednou je i=0xaa; i|=0x55; //i=0xff i&=~0x55; //i=0xaa

Předpokládám, že displej je nějaký znakový 2x16.
Máš tam tam tedy** E,** R/S, a 4 datové.

Nejjednodušší je rezervovat si pro displej celý port - 6 pinů už máš , pak tam můžeš ještě přidat třeba jeden výstup pro spínání podsvětlení (přes tranzistor samozřejmě).

Ale kdyby to jinak nešlo, tak ty signály E a R/S můžeš mít prakticky kdekoliv.
Ovšem ty datové musíš mít na stejném portu a to nejlépe na pozicích 0-3, nebo 4-7, aby se dobře kopírovaly data na port.

Záleží taky na tom, jaké funkce pro komunikaci s displejem používáš.

V příloze je soubor .c a .h pro obsluhu displeje - myslím, že tam to nejlépe pochopíš.
Je ale psaný v mcc18, tak kdybys ho chtěl použít , tak si ho musíš pro Hi Tech upravit. Jsou tam jak makra, tak i ta bitová struktura.
lcdmy.zip (337 Bytes)
lcd.zip (1.14 KB)