Các pro xem giúp em mạch nguyên lý và code. tại sao mạch thật cua em không chạy
và đây là mã code
#include<16f877a.h>
#use delay(clock=12000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
int8 count,i,kt,ok,value_h[20];
int16 value[20];
void init(){
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
set_timer1(0);
enable_interrupts(INT_EXT);
ext_int_edge(h_TO_l);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
set_tris_b(0x01);
set_tris_d(0x00);
for(i=0;i<=6;i++){value[i]=0,value_h[i]=0;}
i=0;
}
void control(){
for(i=0;i<=8;i++){
value_h[i]=value[i]>>8;
}
if((value_h[1]==2)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d0);}//buttom1
else
if((value_h[1]==4)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d1);}//buttom2
else
if((value_h[1]==2)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d2);}//buttom3
else
if((value_h[1]==4)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d3);;}//buttom4
i=0;
delay_ms(500);
}
#INT_EXT
void width(){
disable_interrupts(int_ext);
while(i<=6){
while(input(pin_b0));//cho muc 0
set_timer1(0);
while(!input(pin_b0));//cho muc 1
value[i]= get_timer1();
i++;
}
control();
enable_interrupts(int_ext);
}
void main(){
init();
while(1)sleep();//che do tiet kiem nguon
}
và đây là mã code
#include<16f877a.h>
#use delay(clock=12000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
int8 count,i,kt,ok,value_h[20];
int16 value[20];
void init(){
setup_timer_1(T1_INTERNAL | T1_DIV_BY_4);
set_timer1(0);
enable_interrupts(INT_EXT);
ext_int_edge(h_TO_l);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
set_tris_b(0x01);
set_tris_d(0x00);
for(i=0;i<=6;i++){value[i]=0,value_h[i]=0;}
i=0;
}
void control(){
for(i=0;i<=8;i++){
value_h[i]=value[i]>>8;
}
if((value_h[1]==2)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d0);}//buttom1
else
if((value_h[1]==4)&&(value_h[2]==2)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d1);}//buttom2
else
if((value_h[1]==2)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d2);}//buttom3
else
if((value_h[1]==4)&&(value_h[2]==4)&&(value_h[3]==2)&&(value_h[4]==2)&&(value_h[5]==2)&&(value_h[6]==2)&&(value_h[7]==2)){output_high(pin_d3);;}//buttom4
i=0;
delay_ms(500);
}
#INT_EXT
void width(){
disable_interrupts(int_ext);
while(i<=6){
while(input(pin_b0));//cho muc 0
set_timer1(0);
while(!input(pin_b0));//cho muc 1
value[i]= get_timer1();
i++;
}
control();
enable_interrupts(int_ext);
}
void main(){
init();
while(1)sleep();//che do tiet kiem nguon
}
Comment