Trích:
Nguyên văn bởi enti
Hiện tôi dùng PIC16F877A để giao tiếp với máy tình qua cổng COM, chương trình trên PC viết bằng VB có chức năng lấy giờ từ internet và truyền cho PIC. Hiện tôi đang thắc mắc vấn đề này. PIC có một ngắt nhận RS232, #INT_RDA, nhưng tôi không biết khi nào thì ngắt này xảy ra, mỗi lần xảy ra nó nhận dữ liệu như thế nào, vì nếu PC truyền 6 số kiểu integer thì PIC nhận như thế nào, còn nếu PC truyền 1 biến chuỗi (ghép tất cả 6 biến kia lại ) thì PIC nhận như thế nào. và khi truyền thì nó truyền dữ liệu theo dạng nào. Nếu tôi truyền ngay số nguyên 14 thì PIC nhận là 0E? Ai biết về ngắt này thì giúp tôi 1 chút
|
#INT_RDA liên quan đến ngôn ngữ và trình biên dịch cụ thể (mà bạn chưa đề cập đến ở đây). Với PIC16, chỉ có một vectơ ngắt cho tất cả các ngắt, và bạn cần kiểm tra cờ ngắt tương ứng với sự kiện mà bạn cần xử lý (ở đây là cờ RCIF) trong chương trình xử lý ngắt chung đó. PIC16 sẽ nhận từng byte vào thanh ghi đệm, đây là thanh ghi đệm kép, có khả năng chứa được 2 byte trong khi byte thứ ba được dịch vào thanh ghi dịch. Nếu xử lý ngắt tốt, bạn hoàn toàn có thể nhận 6 integer. Khi truyền và nhận thì đều là mã nhị phân (có thể dài 8 hay 9 bit). Nếu truyền một byte có giá trị thập phân là 14 thì giá trị nhận được tại PIC sẽ là 14 thập phân hay 0E hexadecimal (nếu khác đi thì đâu có ý nghĩa gì nữa). Bạn chịu khó đọc phần 10 trong datasheet của PIC16F877A.
Thân,