Sử dụng các ngắt Rx PIC16F877 để nhận được giá trị từ máy tính

D

dark_ph0enix

Guest
Hi! Tôi mới vào trang web và tôi đến đây và khiêm tốn yêu cầu hiểu biết của bạn: nụ cười: Tôi lập trình một 16F877 từ Microchip (sử dụng trình biên dịch công nghệ cao) và tôi đi qua một tình huống mà tôi cần phải nhận được 3 giá trị từ PC (gửi bằng Matlab). Câu hỏi của tôi, việc tiếp nhận có thể xảy ra bất cứ lúc nào, vì vậy ideia hợp lý sẽ được sử dụng RX gián đoạn. Làm thế nào tôi có thể làm điều này? Tôi dường như không thể tìm thấy ví dụ trong C cho ngắt và cũng có thể, bất kỳ ý tưởng làm thế nào tôi nên khóa ngắt để nhận được những 3 giá trị? Cảm ơn J trước
 
Dưới đây là một liên kết đến một trong các hướng dẫn PIC trực tuyến tốt nhất mà tôi đã đi qua: [URL = "http://www.gooligum.com.au/tutorials.html" Gooligum PIC Hướng dẫn [/URL] Các hướng dẫn bao gồm cả cơ sở và PIC tầm trung sử dụng hội và Hi-Tech C. Các PIC16F877 là một tầm trung PIC, do đó bạn sẽ muốn tập trung vào hai bộ của các hướng dẫn sau đây: [URL = "http://www.gooligum.com.au/tut_midrange. html "] Hướng dẫn Assembler PIC Midrange [/URL] [URL =" http://www.gooligum.com.au/tut_midrange_C.html "] Midrange Hi-Tech PIC C Hướng dẫn lập trình [/URL] Các hướng dẫn thực hiện rất chuyên nghiệp , trong hình thức PDF với mã nguồn tải về và tốt nhất của tất cả các là hoàn toàn miễn phí. Midrange Hi-Tech C Hướng dẫn bắt đầu bao gồm Ngắt bài 3 và tiếp tục giới thiệu các kỹ thuật làm gián đoạn thông qua những bài học còn lại. Bắt đầu với các hướng dẫn và nếu bạn vẫn còn thắc mắc, chỉ cần hỏi. Hy vọng họ giúp đỡ trong các nỗ lực của bạn. BigDog
 
cách tốt nhất là tham khảo các datasheet của PIC16F877 để cấu hình đăng ký có liên quan. và bạn làm những gì có nghĩa là khóa các ngắt?
 
@ Bigdogguru Cảm ơn bạn, tôi sẽ nhìn vào những hướng dẫn =) @ nikhil_jain tôi đã cấu hình ngắt, vấn đề là, theres không có ví dụ làm thế nào để thiết lập một ngắt trong mã thực tế trong Datasheet. Và những gì tôi có nghĩa là bằng cách khóa là, một khi gián đoạn được kích hoạt, nó sẽ ở đó để nhận được cả 3 giá trị. J trả lời của bạn
 
Hi, Tôi không chắc chắn về synatx chính xác. Nhưng nếu nó không hoạt động, tôi sẽ gửi cú pháp chính xác từ máy tính của tôi tại nơi làm việc. Bạn wouid làm nó như thế này: unsigned char rxbuf; unsigned char chỉ số; bit rx_flag; khoảng trống ngắt isr (void) {nếu (RXIE & RXIF) {RXIF = 0; rxbuf [index + +] = RXDATA; Nếu (chỉ số> 3) { chỉ số = 0; rx_flag = 1;}}} mã trên là một ví dụ về cách các công trình gián đoạn. Hãy chắc chắn rằng sổ đăng ký cho USART là cấu hình đúng, và periperal cũng như các ngắt toàn cầu và tốc độ truyền là chính xác. Bạn có thể dịch vụ rx_flag trong MN thường xuyên chính của bạn
 
Xin chào, tôi không chắc chắn về synatx chính xác. Nhưng nếu nó không hoạt động, tôi sẽ gửi cú pháp chính xác từ máy tính của tôi tại nơi làm việc. Bạn wouid làm nó như thế này: unsigned char rxbuf; unsigned char chỉ số; bit rx_flag; khoảng trống ngắt isr (void) {nếu (RXIE & RXIF) {RXIF = 0; rxbuf [index + +] = RXDATA; Nếu (chỉ số> 3) { chỉ số = 0; rx_flag = 1;}}} mã trên là một ví dụ về cách các công trình gián đoạn. Hãy chắc chắn rằng sổ đăng ký cho USART là cấu hình đúng, và periperal cũng như các ngắt toàn cầu và tốc độ truyền là chính xác. Bạn có thể dịch vụ rx_flag trong MN thường xuyên chính của bạn
tôi nghĩ rằng đó là nó = D tôi sẽ cố gắng rằng đoạn mã của ngày mai, tôi sẽ cho bạn biết nếu nó hoạt động: grin: cảm ơn trước ^ ^
 
UART sử dụng ví dụ của tôi [URL = "http://shahrulnizam.com/pic-lesson-uart-module/" RX ngắt [/URL].
 

Welcome to EDABoard.com

Sponsor

Back
Top