Trích:
Nguyên văn bởi daythienha2007
mình đã thay đổi tần số tạo xung khác nhau,nghĩa là cho chu kì lớn ra nhwng vẫn gặp hiện tượng tương tự.Mình cũng lấy đông hồ ra đo thấy PIC16f887 vẫn còn đang xuất xung(nghĩa là chưa xuất đuôs xung cần thiết)mà RB7 của PIC18 đã sáng rồi.Mình thấy rất khó hiểu.Mong bạn tungtot_vl & mọi người giải đáp giúp
|
Chào bạn, bạn thử thay lệnh delay_us(cycle) bằng delay_ms(cycle) với cycle=500 xem thử nhé, cũng là để dễ nhìn qua led xem 16f877 phát đến xung thứ mấy rồi. Chứ ngắt ngoài EXT_INT làm sao nhận nổi xung us, nó không được thiết kế để truyền dữ liệu (đòi hỏi tốc độ cao) mà dùng để đáp ứng ngắt.
output_high(pin_b6);
{
if(count==20)
output_high(pin_b7); // nếu nhận được 20 xung thì cho sáng led chân RB7
}
đoạn lênh này có thể bỏ hai dấu {} đi, và sau lệnh output_high(pin_b7) nên thêm 2 dòng:
delay_ms(1000); // sáng led 1s báo có dữ liệu truyền xong
output_low(pin_b7); // tắt led đi báo đợi dữ liệu mới
Mình viết như thế này để bạn dễ theo dõi PIC chạy bằng mắt thường. Chứ truyền dữ liệu người ta dùng khối chuyên dụng I2C hoặc theo chuẩn RS232,...