Vai al contenuto
PLC Forum


Aiuto Pic16f876 - Programmazione


Doberman

Messaggi consigliati

Chiedo scusa se replico in varie sez ma non so qual'è quella giusta

Qualcuno mi saprebbe dire se è possibile memorizzare sul pic16f876 un file di testo il quale venga trasmesso in seriale?

Ho gia' realizzato il circuito con un display a 40 caratteri, connesso alla porta seriale del pc.

Tramite un programma di terminale sul pc digito sulla tastiera e vedo la scrittura sul display e qui tutto ok.

Ora ho bisogno del contrario in programmazione del pic (PicBasicPro sw utilizzato per la prog) vorrei inserire un testo che venga trasmesso alla seriale del pc.

Ho realizzato un software che mi trasmette dei caratteri che è il seguente

' Read and write hardware USART

B1 VAR BYTE

' Initialize USART

TRISC = %10111111 ' Set TX (PortC.6) to out, rest in

SPBRG = 25 ' Set baud rate to 2400

RCSTA = %10010000 ' Enable serial port and continuous receive

TXSTA = %00100000 ' Enable transmit and asynchronous mode

TXREG = "c"

Pause 10

TXREG = "i"

Pause 10

TXREG = "a"

Pause 10

TXREG = "o"

' Echo received characters in infinite loop

loop: GoSub charin ' Get a character from serial input, if any

IF B1 = 0 Then loop ' No character yet

GoSub charout ' Send character to serial output

GoTo loop ' Do it forever

' Subroutine to get a character from USART receiver

charin: B1 = 0 ' Preset to no character received

IF PIR1.5 = 1 Then ' If receive flag then...

B1 = RCREG ' ...get received character to B1

EndIF

ciret: Return ' Go back to caller

' Subroutine to send a character to USART transmitter

charout: IF PIR1.4 = 0 Then charout ' Wait for transmit register empty

TXREG = "c"

Pause 10

TXREG = "i"

Pause 10

TXREG = "a"

Pause 10

TXREG = "o"

Return ' Go back to caller

Il problema che devo scrivere un carattere alla volta creandomi un vero problema.

Qualcuno sa come ovviare?

Link al commento
Condividi su altri siti


Federico Milan

Questo non è il posto più adatto per il tuo post dovresti la prossima volata postare su Elettronica, comunque se devi spedire qualcosasa o lo memorizzi in un buffer, cosa che se non erro il pic ha una piccola ram, forse troppo piccola oppure spedisci il tutto in real-time :) ...

ciao

Link al commento
Condividi su altri siti

Come dice Fderico è meglio postare sul forum di elettronica. Poi per memorizzare quello che ricevi dalla seriale necessiti di un buffer di RAM. Attenzione il PIC 16F876 ha una ram di 255 bytes, devi quindi mettere una RAM esterna. il problema che questo micro non prevede la gestione di memoria esterna. L'unico modo per espandere la RAM è usare, se la trovi, una RAM seriale (tipo le E2PROM).

Link al commento
Condividi su altri siti

ifachsoftware

Tale PIC ha poca RAM , ma tanta memoria programma , quindi se non e' un problema codificare il testo da programma potresti utilizzare questa strada (naturalmente il testo deve essere fisso )

CIao

Link al commento
Condividi su altri siti

  • 4 weeks later...

Doberman,

Se i testi sono fissi, puoi scrivere delle tabelle in memoria.

Per esempio usando la direttiva CBLOCK crei una area di memoria dove inserirai le tue stringhe di caratteri.

Poi con una routine cilcica e i registri FSR E INDF puoi leggre questo banco di memoria.

Scusa , ma non uso il basic , quindi non so' quali sono i comandi per usare i puntatori .

Se vuoi ti posso mandare un esempio in assembler .

fammi sapere

Luca

Link al commento
Condividi su altri siti

  • 1 year later...

salve a tutti,sono nuovo del forum.

E' da poco che ho iniziato ad appassionarmi ai pic e volevo chiedere un aiuto,il pic16f876 dispone di un a/d da 10 bit ma a me ne servono 8 partendo dal meno significativo.

il fatto è che ancora non ho molta dimestichezza con l'assembly e se qualcuno mi può aiutare mi sarebbe di grande aiuto.

grazie.

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...