Acquisition time phụ thuộc vào nhiều yếu tố, bạn tham khảo trong datasheet về cách tính và chọn. Để hiện thực được thời gian này thì lẽ đương nhiên phải dựa vào tần số thực thi lệnh của PIC.
Realtime conversion phụ thuộc vào cách bạn viết code, và tiêu chí "realtime" của bạn (nếu bạn muốn ngõ vào thay đổi thì sự thay đổi phải được phản ánh trong vòng 10 us thì xin thưa là không có PIC 8-bit nào làm được chuyện này).
Bạn có thể dùng 8-bit cao nhất của kết quả để hiện thị trên một port 8-bit. Tất nhiên những thay đổi trong phạm vi 2 bit thấp nhất thì không được thể hiện.
Ngay trước khi chuyển đổi một giá trị ngõ vào, bạn phải chờ một khoảng thời gian (acquisition time), sau đó mới chuyển đổi giá trị ngõ vào đã được giữ lại. Thời gian này không được quá nhỏ, cũng không nên quá lớn. Code của bạn dùng ít nhất 200 ms cho khoảng thời gian này, như vậy là quá lâu. Port B là một port nhận giá trị nhị phân, bạn lại chuyển đổi kết quả A/D thành số float, tôi không rõ bạn làm vậy để làm gì. Bạn nên dùng portb = readadc() >> 2; để hiển thị 8-bit cao nhất thì tốt hơn.
Sau mỗi lần hiển thị kết quả A/D được 100 ms thì bạn lại xuất 0 ra port B và chờ 100 ms, như vậy các LED của bạn có vẻ rung rung với tần số khoảng 5 Hz là điều dễ hiểu.
Thân,
|