Trích:
Nguyên văn bởi phamthanhkhuyen
tôi thử viết đoạn chương trình sau với pic877a không hiểu sao khi đọc kết quả thi nhiệt độ nó tăng với mứt là 64 chẳng hạn:
32 96 160 224 288 chứ nó không tăng theo từng độ 32 33 34 35 36 ...
sau đây là code:
...
|
Chương trình của bạn có 1 lỗi. Trong INI_ANALOG, bạn có đặt giá trị cho ADCON1, nhưng thanh ghi này nằm ở bank 1, trong khi ngay trước khi bạn gọi INI_ANALOG thì bạn có gọi INI_PORT, kết thúc INI_PORT thì bạn đang ở bank 0. Trong INI_ANALOG bạn không hề chuyển sang bank 1, do đó thực tế thanh ghi ADCON1 không nhận được giá trị mà bạn muốn. Dẫn đến kết quả analog mặc định được canh trái, do vậy bạn sẽ đọc được những giá trị có 6 bit thấp nhất là 0, tức là những giá trị là bội số của 64, như bạn đã thử nghiệm.
Thân,