Brug Rx afbryder på PIC16F877 at modtage værdier fra PC

D

dark_ph0enix

Guest
Hej! Jeg er ny på siden og jeg kommer her og ydmygt bede om din indsigt: grin: Jeg er programmering af en 16F877 fra Microchip (ved hjælp af High-Tech compiler), og jeg kom over en situation, hvor jeg skal modtage 3 værdier fra PC (sendt af MATLAB). Mit spørgsmål, kan receptionen opstå når som helst, så den logiske IDEIA ville være at bruge RX afbryde. Hvordan kan jeg gøre dette? Jeg kan tilsyneladende ikke finde eksempler i C for interrupts og også nogen idé om hvordan jeg skulle låse afbryde for at modtage disse 3 værdier? På forhånd tak J
 
Her er et link til en af de bedste online PIC tutorials jeg har stødt på: [url = "http://www.gooligum.com.au/tutorials.html"] Gooligum PIC Tutorials [/URL] Den tutorials dækker både baseline og mellemtone PICs hjælp Forsamlingen og Hi-Tech C. PIC16F877 er en midrange PIC, så du får lyst til at koncentrere sig om følgende to sæt øvelser: [url = "http://www.gooligum.com.au/tut_midrange. html "] Mellemtone PIC Assembler Tutorials [/url] [url =" http://www.gooligum.com.au/tut_midrange_C.html "] Mellemtone PIC Hi-Tech C Programmering Tutorials [/URL] Den tutorial er meget professionelt udført , er i PDF-form med download kildekode, og bedst af alt er helt gratis. Mellemtone Hi-Tech C Tutorials begynder dækker Afbryder på lektion 3 og fortsætte med at indføre afbryde teknikker gennem de resterende lektioner. Start med tutorials og hvis du stadig har spørgsmål, bare spørg. Håber de hjælper i jeres bestræbelser. BigDog
 
den bedste måde er at henvise datablad for PIC16F877 til konfiguration af relevante registre. og hvad mener du med låse interrupts?
 
@ Bigdogguru Tak, jeg ser ind i disse tutorials =) @ nikhil_jain jeg allerede har konfigureret afbryder, problemet er, theres ingen eksempel, hvordan du indstiller en interrupt i konkrete kode i dataarket. Og hvad jeg mente med at låse var engang interrupt blev aktiveret, vil det forblive der til at modtage både 3 værdier. Tak for dit svar J
 
Hej, jeg ikke sikker på om den korrekte synatx. Men hvis det ikke virker vil jeg sende den korrekte syntaks fra min pc på arbejdet. Du wouid gøre det sådan her: unsigned char rxbuf; unsigned char indeks lidt rx_flag; void interrupt ISR (void) {if (RXIE & RXIF) {RXIF = 0; rxbuf [index + +] = RXDATA; Hvis (index> 3) { index = 0; rx_flag = 1;}}} Ovenstående kode er et eksempel på, hvordan afbryder fungerer. Sørg for, at de registre for USART er konfigureret korrekt, og den periperal samt den globale afbryder og baud rate er korrekt. Du kan servicere rx_flag i dit hoved rutine MN
 
Hej, jeg ikke sikker på om den korrekte synatx. Men hvis det ikke virker vil jeg sende den korrekte syntaks fra min pc på arbejdet. Du wouid gøre det sådan her: unsigned char rxbuf; unsigned char indeks lidt rx_flag; void interrupt ISR (void) {if (RXIE & RXIF) {RXIF = 0; rxbuf [index + +] = RXDATA; Hvis (index> 3) { index = 0; rx_flag = 1;}}} Ovenstående kode er et eksempel på, hvordan afbryder fungerer. Sørg for, at de registre for USART er konfigureret korrekt, og den periperal samt den globale afbryder og baud rate er korrekt. Du kan servicere rx_flag i din vigtigste rutine MN
Jeg tror, det er det = D Jeg vil forsøge at stykke kode i morgen, vil jeg lade dig vide, om det virker: grin: Tak på forhånd ^ ^
 
Min UART eksempel bruge [url = "http://shahrulnizam.com/pic-lesson-uart-module/"] RX Interrupt [/URL].
 

Welcome to EDABoard.com

Sponsor

Back
Top