objašnjenje koda generira XPS

G

ggniy

Guest
Hi ppl!

za part 1, ovaj broj je za čitanje tipkovnicu i lika na ekranu je hyperterminal ako im ne krivo

za
2. dio, poslati znak svake 3 sekunde za RS232, samo da pokazuju da MicroBlaze je još uvijek živ i working.but ja dont noe Zašto postoji potreba da se to provjeriti MicroBlaze.

može bilo tko pomoć mene analizirati što radi svaka od kôd učiniti? im koristeći XPS generirati ove kodove.

Puno hvala!

************************************************** ******************
1)

poniłtava RS232IntHandler (void * baseaddr_p)
(
pougljiti c;
/ * Dok primate UART FIFO ima podatke * /
dok je (! XUartLite_mIsReceiveEmpty (XPAR_RS232_BASEADDR))
(
/ / * Čitaj znak * /
c = XUartLite_RecvByte (XPAR_RS232_BASEADDR);
if (c == 13) / / tako da je '\ n'
NextLine ();
else if (c <= 'z' & & c> = '')
(
XUartLite_SendByte (XPAR_RS232_BASEADDR, c);
PrintScr ((Xuint8), c);
)
else / / Ako je kontrolnog karaktera, jednostavno resetira ekran
ResetScreen ();
)
)

************************************************** ******************
2.

int glavna (void) (
isparljiv Xuint32 J;

/ * Omogući MicroBlaze prekine * /
microblaze_enable_interrupts ();
/ * Registracija UART prekinuti rukovatelj * /
XIntc_RegisterHandler (XPAR_OPB_INTC_0_BASEADDR,
XPAR_OPB_INTC_0_RS232_INTERRUPT_INTR,
(XInterruptHandler) RS232IntHandler, (void *) XPAR_RS232_BASEADDR);
/ * Pokrenite prekinuti kontroler * /
XIntc_mMasterEnable (XPAR_OPB_INTC_0_BASEADDR);
/ * Omogući brojač i uart prekine u prekidati kontroler * /
XIntc_mEnableIntr (XPAR_OPB_INTC_0_BASEADDR,
XPAR_RS232_INTERRUPT_MASK);
/ * Omogući uart prekine * /
XUartLite_mEnableIntr (XPAR_RS232_BASEADDR);
//------------------------------------------------
/ / Sljedeće petlje je poslati karakter svake 3 sekunde
/ / To RS232, samo da pokazuju da MicroBlaze je još uvijek živ i radi.
a (1) (
for (j = 0; j <10000000; j );
print ( "T");
)
return 0;
)

************************************************** ******************

 
Bok,
Općenito je razumio; prvi dio programa je prekinuti rutinu koja prikuplja znakova sa RS232 port i prikazati.To je znak provjere ako je:
1.OX13, tumači ga kao slijedeća linija zapovijedanja, tako da kasnije dobila znakova bit će prikazan na sljedeći redak.
2.Ako je u okviru 'Null' i 'Z' je ASCII karakter, stavlja ga u varijablu C i prikazuje ga na ekranu.
3.Također echoima lik na RS232 porta.
4.Ako se ništa od gore, to je interpretirano kao kontrola lika i ekran je vratiti na početnu poziciju.To može biti bilo koji znak osim ascii.

Drugi dio programa postavlja i RS232 omogućuje prekine i samo čeka na brojanje petlja brojati J J a kad dosegne nekih visokih vrijednosti, ona šalje znak 'T' na RS232 port, kao što ste rekli, da bilo koji uređaj RS-232 na koji program je spreman primati nikakvu bajt.
Od likova su ostvareni u prekinuti rutinu, vaš računajući petlja će biti prekinuto kad god lik je primio i stoga dva međusobno su rutine.
Pozdravi,
Laktronics

 
grubo i dobiti ono što u mean.thanks!

obaviti u znati zašto postoji "!"dok je
u (! XUartLite_mIsReceiveEmpty (XPAR_RS232_BASEADDR))?

represent carriage return(when preess enter button) reference to the ascii table?

je "13" u (c == 13)
predstavljaju prijevozu vratiti (kad preess unesete gumba) referenca u ASCII tablica?

 
Bok,
Da, lik '! "se koristi kao negacija marku.U ovom slučaju, '!Primajte Empty 'znači kad se stanje ne primaju Prazan.'Primite Empty' je malo u jedan od registara u UART IC, koji pokreće RS-232 porta.To je bitni SET kada nije dobila karakter i bilo koji softver koji čita testove dobila karakter ovog bitnog vidjeti postoje li zaprimili znakova preostalo u primaju međuspremnik.Vaš softtware zapravo je ovo testiranje bitna indirektno označavanjem "kada Primajte Prazan zalogaj nije istina", što znači kada je lik u buffer.

Što se tiče 13 (Hex), predstavlja \ n u C jeziku koji označava novu liniju.U pravu ste, njegova funkcija je ista kao ona u "Enter tipku 'ključ u brodu, i strogo govoreći to je kombinacija Carraige Povratak (CR) i Line Feed (LF).Vaš program izjave su slične C jeziku.Ako želite saznati više o C, preporučujem vam da pročitate knjigu "Let
US C '.

Pozdravi,
Laktronics

 
Ohh .. vidim.mean when there's keyboard input typed into the hyperterminal, it will keep on looping the following code in bold:

Tako mogu reći a (! XUartLite_mIsReceiveEmpty (XPAR_RS232_BASEADDR))
znaci kada postoji ulazni kucanog tipkovnicu u hyperterminal, ona će nastaviti slijedeće petlje podebljano code:

/ * Dok primate UART FIFO ima podatke * /
dok je (! XUartLite_mIsReceiveEmpty (XPAR_RS232_BASEADDR))
(

/ * Čitaj znak * /c = XUartLite_RecvByte (XPAR_RS232_BASEADDR);if (c == 13) / / tako da je '\ n'NextLine ();else if (c <= 'z' & & c> = '')(XUartLite_SendByte (XPAR_RS232_BASEADDR, c);PrintScr ((Xuint8), c);)else / / Ako je kontrolnog karaktera, jednostavno resetira ekranResetScreen ();))
Moj projekt je za prikaz znakova na VGA monitor kroz spartanski 3 odbora pomoću HyperTerminal.Microblaze će se provoditi na spartanski 3 odbora.U
2. dio koda, ja dont noe by zašto se pojavljuju "T" u hyperterminal u svakih 3 sek, Microblaze pokazuju da se radi.Izzit jer je prekine? Microblaze_enable_interrupts ();
 
Bok,
Da, na način da, na neki način ne, jer, CPU se izvodi tako brzo u odnosu na svoje utipkajući brzinu, da se između svaka tipka stroke, vaš program će pronaći Primajte Prazan istinit i vratite se na T brojanja petlju Glavnom, ali će se vratiti kroz presjeći, čim ključem u narednih karakter.

Što se tiče slanja chr 'T', kao što je rekao, to je samo obavijestiti da je Microblaze je aktivna, kao inače, ako niste ništa tipkati, vaš će pogled prazan ekran i bit stvarno ne znam, ako je pokrenut ili Spartanac ne.Nadalje, tri sekunde je samo približni, te će se razlikovati s CPU brzina, jer se radi sa softverom zakašnjenja.
Na putu, ako ne želite da se 'T' da se pojavi, možete jednostavno ukloniti, ali bi je trebalo 'Iako 1' izjavu kako bi se osiguralo da je glavni potprogram pokreće u pozadini, bez zaključenje.
Pozdravi,
Laktronics

 

Welcome to EDABoard.com

Sponsor

Back
Top