Em viết lại code như bác namqn chỉ dẫn, bỏ cái đoạn tắt led với cả float đi thì chạy ngon roài, thanx bác nhiều nhé
Nhưng có vấn đề thế này, câu lệnh "read_adc() >>2" theo em hiểu là dùng adc 8bit bỏ đi 2 bit least significant rồi, nhưng tại sao khi đưa điện áp kịch vào ngõ ANx (ANx = Vref) thì chỉ có 6 led sáng nghĩa là sao, theo em nghĩ thì nó phải sáng cả 8 bit của portB chứ.
Thêm nữa là tham khảo bài đo nhiệt độ dùng PIC của bác linhnc thì thấy có đoạn code như thế này, cái chỗ float đấy em cũng ko hiểu lắm với cả em thấy đoạn hiển thị bác ấy cũng bật led rồi tắt led đi mà(thấy nói là quét led 7 đoạn thì phải như thế), như thế là sao nhỉ
Code:
// Lay mau nhiet do lan dau tien
value=(float)read_adc();
value = (value - 558.5)/2.048; // For 5V supply
hiển thị ra 2 led 7 đoạn: ở đây dùng cổng RD để kích mở cho led 7segs
Code:
void display()
{
PORTB=temp_lowbyte; // Gửi dữ liệu đến LED 1
RD0=0; // bật led 1, led 1 có giá trị hàng đơn vị của nhiệt độ
delay_ms(2); // Cho trễ 2ms
RD0=1; // tắt LED 1
PORTB=temp_highbyte; // LED 2
RD1=0;
delay_ms(2);
RD1=1;
}