Thấy lạ lạ!!!!!!!!. Lúc đầu i=1 thì thực hiện lệnh if và led sáng, rồi cho i=0, vòng chương trình tiếp theo thực hiện lệnh else và tắt led, và set i=1, lặp lại mãi như vậy. Theo tui nghĩ led sẽ chớp tắt liên tục tốc độ quá nhanh và bạn thấy led luôn sáng!!!!!!!!.
Thử sửa:
#include <16f877a.h>
#use delay(clock = 20Mhz)
//#device *=16
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use fast_io (b)
#use fast_io (D)
boolean i = 1;
#int_ext
void ext_int_isr(){
i=input(PIN_b1);
if(i == 1){
output_high(pin_d1);
}
else{
output_low(pin_d1);
}
}
void main(){
set_tris_b(0xff);
set_tris_D(0x00);
port_b_pullups(true);
enable_interrupts(INT_EXT_H2L); // Cho phep ngat ngoai
enable_interrupts(global); // Cho phep ngat toan cuc
while(1);
}
Tui thì khai báo nút nhấn trong chương trình chính luôn, và việc nhấn phím thì rất đơn giản.
Chúc vui!!!!!!!!
|