volonelweb Inserito: 10 agosto 2005 Segnala Inserito: 10 agosto 2005 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 allegobsf STATUS, RP0 ; Attiva il banco di memoria 1movlw .25 ; Setta la velocità della porta seriale a 9600 baud con BRGH=1movwf SPBRG ; Settando il registro SPBRGmovlw 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 TXSTAbcf STATUS, RP0 ; Attiva il banco di memoria 0movlw b'10000000' ; Abilita la porta seriale (bit 7) in modo 8 bit (bit 6)movwf RCSTA ; Settando il registro RCSTAcome comando per iniziare a trasmettere utilizzobsf STATUS, RP0 ; Attiva il banco di memoria 1bsf TXSTA, TXENbcf STATUS, RP0 ; Attiva il banco di memoria 0grazie anticipatamente.
RESNIC Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 Se guardi ned datasheet trovi la sequenza giusta.....e funziona te lo garantisco... già fatto!
volonelweb Inserita: 12 agosto 2005 Autore Segnala Inserita: 12 agosto 2005 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
Claudio F Inserita: 12 agosto 2005 Segnala Inserita: 12 agosto 2005 ;----------------------------------------------------- ; 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
volonelweb Inserita: 25 agosto 2005 Autore Segnala Inserita: 25 agosto 2005 Ti ho inviato i ringraziamenti via mail dato che non riuscivo a rispondere, funziona alla grande grazie.
Claudio F Inserita: 26 agosto 2005 Segnala Inserita: 26 agosto 2005 E io ringrazio te per avermi dato lo spunto a pubblicare un paio di pagine (1) (2) che rimuginavo da tempo ma non avevo mai avuto voglia di completare
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora