Vai al contenuto
PLC Forum


Usart Pic16f628a - Seriale pic 16f628


volonelweb

Messaggi consigliati

Ciao a tutti sono nuovo del forum. Chiedo se potete aiutarmi ad effettuare una corretta programmazione della usart del pic 16f628.

Il mio problema è quello di trasmettere una parola tipo "Prova", cioè sequenze di caratteri.

La porta seriale l'ho settata a 9600 asincrona 8 bit come da listato che allego

bsf STATUS, RP0 ; Attiva il banco di memoria 1

movlw .25 ; Setta la velocità della porta seriale a 9600 baud con BRGH=1

movwf SPBRG ; Settando il registro SPBRG

movlw b'00000100' ; Abilita la Tx seriale in modo 8 bit (bit 6) ad alta velocità (bit 2) con buffer pieno (bit 1)

movwf TXSTA ; Settando il registro TXSTA

bcf STATUS, RP0 ; Attiva il banco di memoria 0

movlw b'10000000' ; Abilita la porta seriale (bit 7) in modo 8 bit (bit 6)

movwf RCSTA ; Settando il registro RCSTA

come comando per iniziare a trasmettere utilizzo

bsf STATUS, RP0 ; Attiva il banco di memoria 1

bsf TXSTA, TXEN

bcf STATUS, RP0 ; Attiva il banco di memoria 0

grazie anticipatamente. :)

Link al commento
Condividi su altri siti


Grazie RES, ho provato a farlo anche prima della richiesta di aiuto ma, non riesco a trasmettere una sequenza di dati. Ci sto sbattendo da un po. Il problema è che non riesco proprio a creare il codice di sequenza. Mi potresti fare un esempio. Io uso mplab . Grazie

Link al commento
Condividi su altri siti

;-----------------------------------------------------
; Test trasmissione seriale 300 8-N-1
;-----------------------------------------------------
            PROCESSOR   16F628
            RADIX       DEC
            INCLUDE     "P16F628.INC" 
            __CONFIG    11110100010000B
                       ;Clock interno 4MHz
                       ; MCLR OSCin OSCout = I/O
                       ; WDT disable
;-----------------------------------------------------
            ORG         0x20
AL         RES         1
;-----------------------------------------------------
            ORG         0

            BSF         STATUS,RP0  ;banco 1
            MOVLW       207
            MOVWF       SPBRG       ;300 BAUD
            BSF         TXSTA,TXEN  ;ABILITA TX
            BCF         STATUS,RP0  ;banco 0
            BSF         RCSTA,SPEN  ;ABILITA SERIALE

            CALL        STRINGA     ;INVIA STRINGA

            SLEEP                   ;stop programma
;-----------------------------------------------------
STRINGA    CLRF        AL
LOOP2      MOVF        AL,W
            CALL        STR1
            CALL        TX000
            INCF        AL,F
            MOVLW       11          ;numero caratteri
            SUBWF       AL,W
            BTFSS       STATUS,Z
            GOTO        LOOP2
            RETURN
;-----------------------------------------------------
STR1       ADDWF       PCL,F
            RETLW       'P'
            RETLW       'I'
            RETLW       'C'
            RETLW       ' '
            RETLW       '1'
            RETLW       '6'
            RETLW       'F'
            RETLW       '6'
            RETLW       '2'
            RETLW       '8'
            RETLW       '.'
;-----------------------------------------------------
TX000      BTFSS       PIR1,TXIF
            GOTO        $-1
            MOVWF       TXREG
            RETURN
;-----------------------------------------------------
            END

Link al commento
Condividi su altri siti

  • 2 weeks later...

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