Trích:
Nguyên văn bởi tdungk7
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,...
|
mình đã sử thực hiện được ngắt theo ý muốn rồi.Cám ơn bạn Ttungk7 đã góp ý,thực ra mình đang thiết kế drive cho động cơ bước,yêu cầu là kích 1 xung thì quay 1 bước,nên ko thể dùng I2C ,RS232 để truyền dữ liệu.Sẵn đay mình cũng muốn hỏi là,bạn nào đã viết chương trình bằng CCS để đọc encoder bằng module QIE (PIC18f4431)chưa,có thể hướng dẫn mình sử dụng ko,nếu có code mẫu,past lên để mọi người tham khảo càng tốt.mình nghe nói module QIE chuyên dùng để đọc tín hiệu encoder.