volonelweb Inserito: 10 agosto 2005 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
RESNIC Inserita: 10 agosto 2005 Segnala Share Inserita: 10 agosto 2005 Se guardi ned datasheet trovi la sequenza giusta.....e funziona te lo garantisco... già fatto! Link al commento Condividi su altri siti More sharing options...
volonelweb Inserita: 12 agosto 2005 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Claudio F Inserita: 12 agosto 2005 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
volonelweb Inserita: 25 agosto 2005 Autore Segnala Share Inserita: 25 agosto 2005 Ti ho inviato i ringraziamenti via mail dato che non riuscivo a rispondere, funziona alla grande grazie. Link al commento Condividi su altri siti More sharing options...
Claudio F Inserita: 26 agosto 2005 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
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