Một bài toán sử dụng PORT B của PIC16F877A như sau.PIC16F877A cấp tải 5mA qua RB0Viết bằng CCS
có sử dụng
#use fast_io(B)
và không sử dụng
//#use fast_io(B)
Vẫn kết quả như nhau
cấu hình RB0 = output.
Một đoạn ví dụ:
set_tris_b(0x80);
main
{
// các lệnh khác tại đây
// Bây giờ cho B0 =1
output_bit(PIN_B0,1); // Ket quả.
// Nếu không tải ( kênh chân RB0 ra) đo được gần 5V như vậy điều khiển OK.
// Nhưng nếu có tải trước thì RB0 gần 0V.
// Quá tải thì không phải vì.
// Nếu kênh chân RB0 ra và thực hiện
output_bit(PIN_B0,1);// Sau đó nối tải vào thì RB0 = gần 5V như vậy vẫn OK. Chỉ khi có tải trước thì k được.
// Thử lại với cách sau
// Dùng 2 lệnh
output_bit(PIN_B0,0);
output_bit(PIN_B0,1);// Thì lại OK.
// Khi RB0 = H
// Lệnh
output_bit(PIN_B0,0);// Thực hiện OK.
}
Vậy tại sao?
Lỗi CCS hay lỗi PIC?
CCS chắc khó xảy ra.
Các nhà thiết kế và các cao thủ cởi quần áo ra nhảy xuống giải giúp.
Cám ơn trước nhé
có sử dụng
#use fast_io(B)
và không sử dụng
//#use fast_io(B)
Vẫn kết quả như nhau
cấu hình RB0 = output.
Một đoạn ví dụ:
set_tris_b(0x80);
main
{
// các lệnh khác tại đây
// Bây giờ cho B0 =1
output_bit(PIN_B0,1); // Ket quả.
// Nếu không tải ( kênh chân RB0 ra) đo được gần 5V như vậy điều khiển OK.
// Nhưng nếu có tải trước thì RB0 gần 0V.
// Quá tải thì không phải vì.
// Nếu kênh chân RB0 ra và thực hiện
output_bit(PIN_B0,1);// Sau đó nối tải vào thì RB0 = gần 5V như vậy vẫn OK. Chỉ khi có tải trước thì k được.
// Thử lại với cách sau
// Dùng 2 lệnh
output_bit(PIN_B0,0);
output_bit(PIN_B0,1);// Thì lại OK.
// Khi RB0 = H
// Lệnh
output_bit(PIN_B0,0);// Thực hiện OK.
}
Vậy tại sao?
Lỗi CCS hay lỗi PIC?
CCS chắc khó xảy ra.
Các nhà thiết kế và các cao thủ cởi quần áo ra nhảy xuống giải giúp.
Cám ơn trước nhé
Comment