Ohjelmointi tuotokset C PIC16F877

W

WStevens_sa

Guest
Hei Voisiko joku ystävällisesti selittää seuraavat minua. Löysin pienen ohjelman, joka pohjimmiltaan kytkee LED päälle ja pois. Tiedän alla oleva koodi lähettää lähtö PORT A0 viiveellä. Tiedän, että 0x00 on osoite, mutta osa koodin alla todella kertoo se lähetä tuloste PORTA0 ja miten voin laskea osoite muille esimerkiksi PORTA 1,2,3,4,5 tai PORTB 1,2 , 3,4,5 jne. tai on olemassa lista, jonka mukaan MCU käyttöä varten. Olen käynyt läpi taulukon, mutta ei löydä sitä. Thanks void main () {int x = 1; PORTA = 0x00; / * set RA0-RA5 pieni * / TRISA = 0x00; / * set PORTA lähtöön * / while (1) {PORTA =! PORTA, Delay_ms (500) ;}}
 
Hei "PORTA = 0x00" asettaa lähdön alhainen. Kuten kommentti sanoo. "TRISA = 0x00" määrittää kaikki portit tuotoksina. Voit määrittää yksittäisiä bittejä satamassa näin: PORTA = 0b10101010 Check out sivulla 39 on lomakkeessa. Hope se auttaa
 
Hei,
PORTA = 0x00;
Tämä poistaa alkuperäisen PORTA valtio, pohjimmiltaan, lähettää 0-PORTA rekisteriin. 0x00 ei rekisteri, se on arvo.
TRISA = 0x00;
Tämä kertoo mikrokontrolleri joka PORTA on olla lähtö. Sinulla on alun perin 0x00 Porta kun ilmoitti, että viimeinen rivi.
PORTA =! PORTA;
Käytä
PORTA = ~ PORTA;
Tämä kertoo mikrokontrolleri kääntää tilan kaikkien PORTA nastat. Siten, kun PORTA pin on 0, se käännetään 1 ja päinvastoin.
Delay_ms (500);
Tämä viive muuttuvat valtioiden PORTA (inversio) siten, että se on niin pitkä, voidaan havaita paljain silmin. Lue taulukon ymmärtää enemmän. Ohjelmassa kaikki TRISA bittiä on asetettu 0, joten kaikki PORTA bitit ovat tuotos. Asettaminen TRISA bitin 1 vahvistetaan vastaava PORTA bitin tuloon, ja sen asettaminen arvoon 0 syitä PORTA bitti lähetetä. Ensinnäkin kaikki PORTA bitit 0. Silloin ne ovat kaikki 1. Kun 500ms, ne ovat kaikki 0 ja ne pitää kääntelemällä joka 500ms. Toivottavasti tämä auttaa. Tahmid.
 
Hei WStevens_sa koodissa yhdellä rivillä on väärä PORTA =! PORTA; / / tämä rivi käytät "!" operaattori PORTA = ~ PORTA; / / vaihtaa sen "~"-operaattori
 
Hei, lisää tämä myös rivi:
Code:
 ADCON1 = 7;
Lisää tätä linjaa, jos käytät 16F877A:
Code:
 CMCON = 7;
Tämä johtuu 16F877A on vertailukohta, joka 16F877 ei. PORTA on analogiatuloa multiplex, sinun täytyy poistaa heidät käyttämään digitaalinen viestintä.
Code:
 void main () {int x = 1; ADCON1 = 7; / / Poista ADC / / CMCON = 7; / / Disable vertailuryhmässä --------------> Vain 16F877A, ei 16F877 PORTA = 0x00; / * set RA0-RA5 pieni * / TRISA = 0x00; / * asettaa PORTA lähtöön * / while (1) {PORTA = ~ PORTA, Delay_ms (500);}}
Toivottavasti tämä auttaa. Tahmid.
 

Welcome to EDABoard.com

Sponsor

Back
Top