satelit Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 Salut. Ma poate ajuta cineva cu o secventa de program care sa trimita o litera la PC folosin PIC16F877 ??? va multumesc. Link spre comentariu
aghora17 Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 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 spre comentariu
satelit Postat Februarie 22, 2005 Autor Partajează Postat Februarie 22, 2005 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 spre comentariu
aghora17 Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 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 spre comentariu
cirip Postat Februarie 22, 2005 Partajează Postat Februarie 22, 2005 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 spre comentariu
satelit Postat Februarie 23, 2005 Autor Partajează Postat Februarie 23, 2005 03h,5 este registrul STATUS ,bitul 5 care schimba bank-ul de memorieDin cite am inteles eu nu mai folosesti subrutina "trans" , acum eu la ce o pot utiliza? Link spre comentariu
aghora17 Postat Februarie 23, 2005 Partajează Postat Februarie 23, 2005 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 spre comentariu
cirip Postat Februarie 23, 2005 Partajează Postat Februarie 23, 2005 schimba bank-ul de memorieEu 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 spre comentariu
satelit Postat Februarie 23, 2005 Autor Partajează Postat Februarie 23, 2005 am simulat cu MPLAB secventa ta si nu trece TXIF pe 1 logic, ramine acolo.Posibil cind scriu pic-ul sa mearga? Link spre comentariu
cirip Postat Februarie 23, 2005 Partajează Postat Februarie 23, 2005 In helpul MPLAB IDE-ului la sectiunea limitari scrie ca:"Serial I/O (i.e., USART, I2C, SPI) is not supported in simulation."Cirip Link spre comentariu
satelit Postat Februarie 24, 2005 Autor Partajează Postat Februarie 24, 2005 mersi, nu stiam Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum