CCS getc

G

GrandAlf

Guest
Jeg ønsker å sende tall 0-255 fra k * E * il c51 til PIC16F628 programmert med CC * S C. Det virker som jeg kan sende dem med printf% U, men jeg er ikke sikker på om hvordan du mottar dem.Hvis jeg bruker noen av de innebygde kommandoer, for eksempel getc,
ser det ut til å tolke dem som tegn i stedet for tall.Anta at jeg sender 13, vil det tolkes som CR etter getc enn 13.som er det jeg trenger.Jeg ønsker bare å motta tallet, men ikke ekko det.Noen råd verdsatt.

 
Sjekk ut CCS forum:

http://www.ccsinfo.com/forum

Du vil få en masse ideer bare leser deres forum ...

Guttene er det nesten like fint som medlemmer her

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smil" border="0" />med vennlig hilsen

 
Takk C-Man,

Har du noen nyttige ting der.Et annet spørsmål om jeg kan noen vite hvordan du bruker seriell port på Atmel 89S8252 med K * eil C51.Jeg vet det er referert til som TXD i topptekstfilen.Ikke synes å kunne finne informasjon om innstillingen baud priser etc. Xtal er 12mhz, og jeg må sed de baudhastighet til 300.Også jeg antar at når du bruker printf% u, jeg må spesifisere strømmen som TXD?.Sill learnig C, hjelp verdsatt.

PS, trenger bare å overføre uten handshaking.

 
Bare en tanke.Så jeg vil bare utdataene en enkelt 8-biters tall på en gang, kan jeg bare bruke utsagnet SBUF = oxxx;.Jeg må sette opp tidtakere for baudhastighet, ikke sikker på hvordan du arbeider ut.Også jeg bruker bittesmå RTOS, vil dette føre til seriell probs?.Beklager!mange spørsmål.

 
Dette er en kort tekstutdrag av en av mine C51 programmer initialisere kommunikasjon:

/ * RS232 init på
19.200 Baud (med Timer1) * /
TH1 = 0xFD; / * 19200 baud@11.0592MHz * /
TL1 = 0xFD;
SCON = 0x50; / * 01011010b: UART Mode1, aktivere mottakeren * /
PCON = SMOD_; / * dobbel baudrate '/
TR1 = 1; / * starte tidtakeren 1 * /
ES = 1; / * Serial Interrupt på * /

Hvis du bruker avbruddsordrelinje drevet RS232 bør det ikke være et problem med RTOS men jeg har ikke brukt RTOS så jeg kan ikke si noe sikkert ...

håper dette hjelper

 
Dette er stor C-Man, Hvordan du arbeider ut baudhastighet verdier?, Må bruke 300 med 12mhz xtal (systemklokken 1Mhz).Tenkt å prøve og laste ned atmel datablad for å se om jeg kan finne info, ikke forvent deg å gjøre alt arbeidet!.BTW, kan du bruke SBUF som ovenfor, synes å kompilere OK, men ikke i stand til å teste så ennå.

 
Kanskje Mr. Keil kan hjelpe deg

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smil" border="0" />hxxp: / / www.keil.com/c51/baudrate.asp

Og ja bare bruk SBUF å få / legge til / fra 8051 USART men du må sjekke USART flagg hvis du får lov til å hente / sette en ny byte fra / til USART.

Jeg er redd tittelen på dette emnet er litt av nå ...

med vennlig hilsen

 
Blir heller off topic Jeg tror, allikevel klart å finne løsning.

void serial_init (void) (
SCON = 0x50; / / modus 1: 8-bit UART, aktiverer mottaker
TMOD | = 0x20; / / tidtaker 1 modus 2: 8-Bit reload
TH1 = 0x98; / / reload verdi 300 baud
TR1 = 1; / / tidtaker 1 kjøre
ES = 1; / / aktivere seriell port avbruddsordrelinje
)

Takk for råd

 

Welcome to EDABoard.com

Sponsor

Back
Top