View Single Post
Old 08-12-2008, 12:35 AM   #10
tdungk7
Đệ tử 1 túi
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Ho Chi Minh city
Bài gửi: 20
:
Trích:
Nguyên văn bởi daythienha2007 View Post
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,...
tdungk7 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn