Vai al contenuto
PLC Forum


Porta Seriale E Pic 16f873 - problemi di comunicazione...


IlRe

Messaggi consigliati

salve a tutti, il mio problema con il pic 16f873 è quello di non riuscire a ricevere 2 byte alla volta..ho seguito le istruizioni ,per scrivere il programma, contenute nel data sheet ma non funziona...qlk1 sa darmi qlk dritta o ha gia un programma di ricezione con questo pic e la porta seriale?

Grazie in anticipo

Ciao

Link al commento
Condividi su altri siti


ifachsoftware

Io lo ho adoperato in un progetto e utilizzavo proprio la seriale su interrupt e ti posso dire che non mi ha dato alcun problema di sorta.

Il codice pero' e' fatto per il compilatore C della CCS , se cerchi degli esempi sulla seriale in Assembler , il sito della Microchip ne e' pieno.

Ciao :)

Link al commento
Condividi su altri siti

Prima di tutto devi essere sucuro che la porta sia configurata bene.

Se ci dici come hai configurato il tutto ti posso dire se ci sono degli errori.

Se tutto e' in regola , il modulo USART del pic quando riceve un byte lo carica nel registro RCREG e alza il bit RCIF nel registro PIR1 .

Il modulo ha un buffer di due Byte quindi puo' ricevere 3 byte prima di andare in errore .

Quando leggi il registro RCREG automaticamente il modulo carichera' nello stesso il prossimo byte ( se disponibile).

Se non ci sono piu' caratteri ricevuti automaticamente il bit RCIF e forzato a zero.

per poter leggere piu' byte devi fare un loop che controlla RCIF e trasferice il contenuto di RCREG in una tua variabile.

Se il tuo programma e' molto lungo ti consiglio di usare l'interrupt per leggere il dato.

Se scrivi qui' la tua routine , possiamo vedere di correggerla.

Link al commento
Condividi su altri siti

Scusa, ma sarebbe utile che tu postassi il tuo problema e la soluzione che hai trovato.

Sul forum ci sono persone che sono disposte ad aiutarti, ma anche persone interessate a imparare consultando le soluzioni adottate da altri...

Ciao! ;)

Modificato: da bit
Link al commento
Condividi su altri siti

  • 1 month later...

vi aggiungo il programma testato in tutte le salse.....

list p=16f873, f=inhx8m

SPBRG EQU 99

TXSTA EQU 98

RCSTA EQU 18

PIE1 EQU 8C

PORTB EQU 06

TRISB EQU 86

RCREG EQU 1A

PORTC EQU 07

TRISC EQU 87

PIR1 EQU 0C

PORTA EQU 05

TRISA EQU 85

ORG 0000

BANKSEL 80

MOVLW 0FF

MOVWF TRISC

MOVLW 00

MOVWF TRISB

BANKSEL 00

MOVLW 00

MOVWF PORTB

BANKSEL 80

MOVLW 40

MOVWF SPBRG

BCF TXSTA,2

BCF TXSTA,4

BCF TXSTA,6

BCF PIE1,5

BANKSEL 00

BCF RCSTA,3

BSF RCSTA,7

BCF RCSTA,5

BCF RCSTA,6

BCF RCSTA,2

BCF RCSTA,1

BSF RCSTA,4

RICE NOP

BTFSS PIR1,5

GOTO RICE

MOVF RCREG,0

MOVWF PORTB

GOTO RICE

END

Link al commento
Condividi su altri siti

ifachsoftware

Ti do un consiglio , visto che stai studiando e poi ti servira' per tutta la vita :

quando fai un programma mettigli sempre dei bei commenti (in assembler si fa con un ; seguito dal commento alla destra dell'ultima istruzione) , ti assicuro che cio' sara' utile a te quando andrai a riprendere in mano il tuo lavoro a distanza di tempo e a quei poveri disgraziati che dovranno prendere in mano il tuo lavoro.

Ciao :)

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...