as.yıldırım

Usta Üye
Katılım
14 Eki 2011
Mesajlar
1,287
Puanları
181


arkadaslar 16f877 ile bi sayac yapmaya calısıyorum.Sayacta rb4..rb7 kesmesini kullanmak istedim.Kısaca söyle bi acıklama yapayım: sistem tarama yöntemi ile sayactaki birler ve onlar basamagını gösterecek.Eger rb4 ya da rb5 pinlerinden sinyal alırsa kesmeye gidecek ve artırma ya da azaltma yapacak.Ama proteusta calıstırdıgımda hiçbise yapamıyorum.CCS de yazdıgım kodu vereyim bi inceleyip fikir verirseniz sevinirim.

#include <16f877.h>


#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD




#use delay(clock=4000000)


#use fast_io(b)
#use fast_io(c)
#use fast_io(d)




int birler=0;
int onlar=0;
char display[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};


#int_RB
void yaylalar(){


if(input(pin_b4)){


birler++;
if(birler>9){


onlar++;
birler=0;
}
if(onlar>9)onlar=0;




}
if (input(pin_b5)){


birler--;
if(birler<0){
birler=9;
onlar--;


}
if(onlar<0)onlar=9;
}




}




void main(){


setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);






set_tris_b(0xF0);
set_tris_c(0x00);
set_tris_d(0x00);




output_c(0);
output_d(0);






enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);




while(1){


output_c(0x02);
delay_ms(50);
output_b(display[onlar]);
output_c(0x01);
delay_ms(50);
output_b(display[birler]);

}




}
 
Şemayı ve kodları bir yerden upload etsen daha kolay yardım bulabilirsin
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…