Jump to content
ELFORUM - Forumul electronistilor

Comunicatia seriala USART


Recommended Posts

  • Replies 10
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

nu stiu sa iti zic codul, pt ca nu am facut cod pt asta pana acum, dar trebuie sa fie simplu. incarci caracterul ala in registrul de date al serialei si ii dai send, dupa ce in prealabil ai setat portul pentru comunicatie (protocol, viteza etc.) totul este in datasheet. (sper ca integratul asta de care vorbesti are functia implementata. daca nu, tre sa emulezi protocolul, beachs)

Link to comment

Am scris o secventa si nu stiu daca e bine.Va rog sa-mi spuneti si mie daca e bine. bsf 03h,5 movlw 20h movwf TXSTA movlw 06h movwf SPBRG bsf PIE1,TXIE bcf 03h,5 bsf RCSTA,SPEN bsf INTCON,PEIE bsf INTCON,GIE movlw 41h ; litera A movwf TXREG btfss PIR1,TXIF goto trans trans bsf 03h,5 tx btfss TXSTA,TMRT goto tx bcf 03h,5 return

Link to comment

inainte de toate, as avea ceva de comentat, ca asa sunt eu mai carcotas.cine este acel 03h? de ce nu ii dai un nume, macar temp? ajuta la citirea codului. e rutina recomandata de producator?daca da, imi cer scuze.pentru caractere ascii este mai usor sa folosesti sintaxa a'A' pentru caracterul "A"apoi rutina de testat bitul ala de te trimite la trans nu e bine.daca e setat sare direct la trans, daca nu e setat executa instructiunea goto trans. care e logica ei?probabil ca partea cu btfss ar trebui sa arate asa:movlw 41h ; litera A movwf TXREG loopbtfss PIR1,TXIF ; daca tx1f inseamna busy pe 0goto loop trans bsf 03h,5 tx btfss TXSTA,TMRT goto tx bcf 03h,5 return

Link to comment

cine este acel 03h?

Exact de asta n-am raspuns. Este dificil de verificat cod care nu foloseste etichete simbolice sugestive sau care e necomentat.Ca idee, etapele pe care le-am folosit eu au fost asa:-seteaza rata de baud-porneste TX-ul-testezi busy si daca nu e ocupat, ii arunci un octet in buferul de transmisieNu ai neaparata nevoie sa lucrezi cu intreruperi (Am vazut TXIF pe-acolo.)Cirip
Link to comment

nu ai inteles, exemplul era numai la nivel de cod. adica sa iti dai seama cum trebuie scris codul, ca lexic, sintaxa, gramatica, ce vrei tu. ca rutina pentru usart e f posibil sa nu fie corect. cirip ti-a dat niste sugestii bune. setezi baud, configurezi portul pt comunicatie, bla bla bla....

Link to comment

schimba bank-ul de memorie

Eu folosesc directiva "banksel "Mi se pare mult mai practic, mai intuitiv si mai sigur. Asamblorul stie sa genereze exact instructiunile care trebuie, fara sa trebuiasca sa te gandesti: O fi in bankul 0, o fi in bankul 1, o fi-n padure, o fi-n fantana... ? :) Cirip
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines