Trích:
Nguyên văn bởi bachelor
Cám ơn gợi ý của namqn, sẽ nghiên cứu chèn các mã asm thích hợp để tối ưu hóa thời gian xử lý của chương trình.
Thêm một câu hỏi nữa  :
1. Các xung làm nguồn ngắt ngoài có độ rộng (rỗng) 0,5 us đến 1 us. Không biết các ngắt ngoài có đáp ứng được không nhỉ (tôi chọn kích hoạt ngắt theo sườn lên). Mô phỏng trên proteus thì vẫn xử lý được, chưa thử thực tế 
2. Hai xung (mà chương trình cần đo khoảng cách thời gian giữa chúng) không nằm cùng một kênh (một đường tín hiệu). Đây là lý do tôi không thể dùng timer như một counter mà phải dùng đến ngắt ngoài và sẽ phải dùng đến 2 ngắt ngoài cho 2 xung. 16f877a lại chỉ có một ngắt ngoài. Liệu có thể dùng một chân ngắt của PortB làm ngắt ngoài được không ? Lưu ý là độ rộng xung chỉ có từ 0,5 - 1 us , thằng ngắt ngoài thì còn khả dĩ nhưng liệu thằng ngắt cổng B có đáp ứng được không nhỉ ? Hay phải dùng đến PIC18 -> đắt 
Hai vấn đề này có vẻ hơi lạc với chủ đề đề cập ban đầu nhưng lại là những câu hỏi mang tính thực tế  Những ai đã từng có kinh nghiệm xử lý các chuỗi xung với các tham số tương tự bằng PIC16 or PIC18 hãy giúp tôi với nhé 
Thanhks !
|
1. Tôi không rõ các ngắt ngoài có thể đáp ứng với các xung đó hay không. Nhưng nếu các xung không đủ rộng thì tôi chỉ cần kéo dài các xung đó ra. Tôi ít khi mô phỏng mà chỉ dùng mạch thật để thử nghiệm cho những bài toán loại này.
2. Một cổng OR 2 ngõ vào đơn giản sẽ giúp tôi dồn 2 tín hiệu đó vào một chân ngắt ngoài. Không nhất thiết phải dùng vi mạch logic, mà vài linh kiện rời vẫn có thể thực hiện chức năng này.
Thân,