as.yıldırım

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

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
 

Forum istatistikleri

Konular
130,108
Mesajlar
933,188
Kullanıcılar
453,163
Son üye
gurkangunc

Yeni konular

Geri
Üst