assemblaggio del codice per la trasmissione dei dati in memoria PIC

C

ceibawx

Guest
Chi può aiutarmi a controllare?
I dati memorizzati nel PIC, ma la produzione non è corretta.TransData:
MOVLW 0xBF
MOVWF FSR; DI RAM
MOVLW 0x08
MOVWF ChannelCounter; ChannelCounter = 4 * 2

GoOnTransData:
BSF STATUS, 5
MOVF INDF, W
bcf STATUS, 5
MOVWF TXREG; Spostare i dati al registro trasmettere
BSF STATUS, 5
INCF FSR, 1; INDF indirizzo muove prossimo numero
DECFSZ ChannelCounter, 1; ChannelCounter-1
goto GoOnTransData; cc! = 0.
Rielabora goto; cc = 0.tx finale, avviare una nuova rx.

 
Credo che il problema è che si sono sovrascrivendo i TXREG.È necessario testare il TXIF di bandiera per vedere quando il TXREG è vuoto formica quindi caricare il nuovo byte.
Vedi sotto per un eventuale correzione.Suppongo che il UART di installazione è stata eseguita correttamente, che è il TXEN po 'è stato fissato.Questo creerà TXIF.Assicurarsi di usare per impostare BSF TXEN, piuttosto che per iscritto al registro.È possibile aggiungere istruzioni che poco prima della GoOnTransData, se non è stato fatto prima.

In ogni modo, dal momento che si sta utilizzando il FSR, non è necessario impostare e cancellare il bit RP0; il FSR è in grado di accedere alle banche dati corretti
all'interno di 0 e 1 con GIV = 0, indipendentemente dallo stato di RP0, 1 .

Codice:TransData:

MOVLW 0xBF

MOVWF FSR; DI RAM

MOVLW 0x08

MOVWF ChannelCounter; ChannelCounter = 4 * 2BSF STATUS, RP0; banca 1

BSF TXSTA, TXEN; consentire xmit

bcf STATUS, Rp0; banca nuovamente 0GoOnTransData:

btfss PIR1, TXIF; verificare se siamo in grado di inviare nuovi byte

goto GoOnTransDataMOVF INDF, W; ottenere byte

MOVWF TXREG; Spostare i dati al registro trasmettere

INCF FSR, 1; INDF indirizzo muove prossimo numero

DECFSZ ChannelCounter, 1; ChannelCounter-1

goto GoOnTransData; cc! = 0.

Rielabora goto; cc = 0.tx finale, avviare una nuova rx.
 
Grazie per la risposta.
La mia domanda è che cosa significa?

quando TXIF = 1, buffer è vuoto, si ---------------------
MOVF INDF, W; ottenere byte
MOVWF TXREG; Spostare i dati al registro trasmettere
quando TXIF = 0, buffer è pieno, si ------------------------
GoOnTransData:
btfss PIR1, TXIF; verificare se siamo in grado di inviare nuovi byte
goto GoOnTransData.

Può spiegare più in dettaglio circa trasmettere tampone?se è ancora piena, dobbiamo aspettare fino a quando non è vuota?

 
Sì, significa trasmettere il buffer è vuoto e si può scrivere un nuovo byte ad esso.Se farlo prima che sia vuota, quindi scrivere il vostro verrà ignorato e si perderanno i caratteri.

Impostazione TXEN creerà TXIF, alowing per eseguire il codice per il primo carattere da inviare.Successivamente, si deve attendere per il carattere precedente trasmissione per completare.Non appena si scrivere al TXREG, TXIF verrà cancellata, quindi se si seleziona questo bit non sarà in grado di scrivere un nuovo byte per TXREG finché non è vuoto.

Per ulteriori informazioni, leggere l'allegato
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Thanks a lot.
E ho provato, e il tuo codice è utile, e ho ricevuto i dati attesi.

Sei potenti.
Buona giornata.Xing

 

Welcome to EDABoard.com

Sponsor

Back
Top