ngtuan11
18-08-2010, 10:27 PM
Mình thiết kế một mạch hiển thị I/O đơn giản bằng protues, sử dụng 16f887.
Mình dùng chức năng weak pull-up của Port B, dùng RB0 để điều khiển LED ở RE1.
Nhưng khi mình nhấn button RB0 thì LED ở RE1 không sáng. Nếu mình không sử dụng RBO mà sử dụng RE0 làm nút nhấn thì đèn sáng bình thường, không biết có phải vì chức năng weak pull-up mình thiết lập sai hay không ? Mong mọi người giúp đỡ.
Mạch và chương trình của mình ở bên dưới. Chương trình viết bằng Hitech C
http://i817.photobucket.com/albums/zz99/ngtuan11/Capture.jpg
#include<htc.h>
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);
void main()
{
//Cau hinh cho LED tren RE1
ANSEL = ANSELH = 0;
TRISE1 = 0;
//Cau hinh cho nut nhan RB0
TRISB0 = 1;
WPUB0 = 1;
RBPU = 0;
while(1){
if(!RB0) RE1 = 1;
else RE1 = 0;
}
}
Mình dùng chức năng weak pull-up của Port B, dùng RB0 để điều khiển LED ở RE1.
Nhưng khi mình nhấn button RB0 thì LED ở RE1 không sáng. Nếu mình không sử dụng RBO mà sử dụng RE0 làm nút nhấn thì đèn sáng bình thường, không biết có phải vì chức năng weak pull-up mình thiết lập sai hay không ? Mong mọi người giúp đỡ.
Mạch và chương trình của mình ở bên dưới. Chương trình viết bằng Hitech C
http://i817.photobucket.com/albums/zz99/ngtuan11/Capture.jpg
#include<htc.h>
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);
void main()
{
//Cau hinh cho LED tren RE1
ANSEL = ANSELH = 0;
TRISE1 = 0;
//Cau hinh cho nut nhan RB0
TRISB0 = 1;
WPUB0 = 1;
RBPU = 0;
while(1){
if(!RB0) RE1 = 1;
else RE1 = 0;
}
}