A prilično glupo pitanje o C, 3 žice serijsko sučelje

G

glenjoy

Guest
Bok,

Vidjela sam ovo kod i pitate ako je to stvarno rade da bi dobili 8 bita MSB prvi podaci.Molimo post komentari:

nepotpisani pougljiti read_0831 () (

nepotpisani pougljiti bitni;

clk = 0;
bita = d_out;
clk = 1;

povratak bitni;
)

nepotpisani start_read int () (

nepotpisani pougljiti I;
nepotpisani adc_data int;

adc_data = 0;
csel = 0;

for (i = 0; i <8; i ) (

adc_data = adc_data | read_0831 () <<1;
csel = 1;

)

)

1.Je sadržaj i bitni pougljiti 1000 000 ili 0000 0001 ako d_out jednak jedan.

2.Je li ovaj kod u pravu?jer sam zbunjen s rotirati lijevo ako će staviti u adc_data ispravan raspored bitova s ADC.

Žao mi je pitati, ali ja sam početnik u C, ja sam se u zbor programiranje.

Hvala.

 
Salam,

Quote:

1.
Je sadržaj i bitni pougljiti 1000 000 ili 0000 0001 ako d_out jednak jedan.
 
Može li mi netko objasniti što će se dogoditi u ovoj komad šifra?

nepotpisani start_read int () (

nepotpisani pougljiti I;
nepotpisani adc_data int;

adc_data = 0;
csel = 0;

for (i = 0; i <8; i ) (

adc_data = adc_data | read_0831 () <<1;
csel = 1;

)

)

 
glenjoy, kod izgleda slomljen.
Za svaki ulazni zalogaj, želite pomak napustio akumulator i onda ubacite bitni ulaz u gramžljivac bitni 0.Pokušajte zamijenjujući ovaj:
adc_data = adc_data | read_0831 () <<1;
s ovim:
adc_data = (adc_data <<1) | read_0831 ();

Za to da rade, read_0831 () mora vratiti ili 0 ili 1.

Jer jasnoća, to je dobra ideja za dodavanje dodatnih zagrade do C izrazi koji uključuju smjenama i logički operatori.To također pomaže Vam izbjegavati stvaranje bugove, jer
je C prednost je ponekad iznenađuje.Odgovoriti na svoje Drugo pitanje, ova tvrdnja:adc_data = adc_data | read_0831 () <<1;je ekvivalentnaadc_data = adc_data | (read_0831 () <<1);koji čuva vaše stavljanjem bitni ulaz u gramžljivac zalogaj 1.
Nije ono što želite.Kao što ste saznali C, imate mnogo pitanja.Će vam se svidjeti ovaj site:
http://www.eskimo.com/ ~ scs / C-faq / top.html

Na putu, osvijetliti vaš izvorni kod i kliknite na "Code" gumb kako bismo mogli vidjeti svoje uvlačenje, kao sfinga učinio.

 
Dok je dobar za učenje svrhe, ali za vrijeme kritične operacije kao što je ovaj zbor je bolji izbor.

 
Bok,

Hvala za pomoć sam imala ispravljeni kôd:

Code:

# uključuju "C: \ SourceCode \ Website \ 0831_lm35 \ 0831_lm35.h"# bitni d_out = 0x05.2

# bitni clk = 0x05.3

# bitni csel = 0x05.4nepotpisani pougljiti adc_value;

nepotpisani pougljiti read_0831 () (nepotpisani pougljiti bitni;clk = 0;

bita = d_out;

clk = 1;povratak bitni;

)nepotpisani pougljiti start_read () (nepotpisani pougljiti I;

nepotpisani pougljiti adc_data;
adc_data = 0x00;

csel = 0;[color = plavo] for (i = 0; i <10; i ) (adc_data = (adc_data <<1) | read_0831 ();[/ color])

povratak adc_data;

csel = 1;)
 
Happy to rade.Sretno učenja C.

To
je lakše za čitanje.

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Osmjeh" border="0" />Izgleda kao "color" tag ne funkcionira unutar jedne "code" tag.

Bluechem, asembler je bolji izbor samo ako ima C kompajler siromašnih optimizatora.

 
ovih dana u kompilatora su vrlo efikasna, ali svaki jezik ima namjenu!C je vrlo convinient, ali nikada ne može tući skupštine u brzini bez obzira koliko je dobar kompilator jest.

 
C može tući zbor u brzini.

Brzine u odnosu na debugging koda i promjena sklop platformi.

Ali, naravno, ne može tući C skupštine brzina u izvršenju.

Ali ovih dana microcntrollers dobiva se brže i prelazi veličinu memorije, ali i njihovih projekata ljudi želi da se uradi brzo.

Mislim da vrijedi C, ja sam bio zbor korisnik također, ali zbog razvoja potražnje u vrijeme, ja sam sada pokušavate pogledati C.

 
JA složiti se!Ekspert asemblerski jezik programer može pisati jednaka ili brže nego kod optimiziranja kompilator.Ali ja stvarno misliš stručne *. *Mnogi moderni CPU imati više izvršenje fancy memorijske jedinice i prijenos cjevovodima koji su vrlo teško da optimizirate rukom.Ako da u asembler, morat ćete pokrenuti preko ako je nova verzija CPU izađe.

Ok, to obično ne desi na 8-bitnim micros.U kritičnim nepropustljiv petlje sam provjeriti što kompajler generira, a ako se ne sviđa, ja besposličariti sa C (u nadi da se posreći), ili pisati u petlji asembler.

 
echo47 wrote:

U kritičnim nepropustljiv petlje sam provjeriti što kompajler generira, a ako se ne sviđa, ja besposličariti sa C (u nadi da se posreći), ili pisati u petlji asembler.
 

Welcome to EDABoard.com

Sponsor

Back
Top