srenjis
Member level 1
code of a FREQUENCY COUNTER .This is from
**broken link removed**
The pic used is 16f 628a
**broken link removed**
The pic used is 16f 628a
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 //--------------------------------------------- // FREQUENCY COUNTER //--------------------------------------------- #include <pic.h> #include <delay.c> __CONFIG(WDTDIS&PWRTEN&LVPDIS&XT); unsigned char kontrol; //--------------------------------------------- // CCP1 INTERRUPT //--------------------------------------------- void interrupt interrupt(void){ TMR1H=0; TMR1L=0; GIE=0; control=1; CCP1IF=0; GIE=1; } //--------------------------------------------- // MAIN PROGRAM //--------------------------------------------- main(void) { unsigned const char number[10]={0x3F,0x06,0x5B, 0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char select[4]={1,2,4,8}; unsigned int counter,value,remainder1,remainder2; float frekans; unsigned char a,i,display[5],data; TRISA=0x00; TRISB=0x08; CMCON=0x07; cont=0; PORTA=0; PORTB=0 CCP1IE=1; CCP1CON=0b00000110; T1CON=0b00100001; GIE=1; PEIE=1; for(;;){ counter=256*CCPR1H+CCPR1L; if(control==1)frequency=100000000/counter; if(kontrol==0)frequency=0; if(counter<10000)frequency=0; control=0; for(a=0;a<25;a++){ value=(int)frequency; display[1]=value/1000; remainder1=value-display[1]*1000; display[2]=remainder1/100; remainder2=remainder1-display[2]*100; display[3]=remainder2/10; display[4]=remainder2-display[3]*10; for(i=0;i<4;i++){ PORTB=0; PORTA=0; data=number[display[i+1]]; PORTB=data&0x07; data=data<<1; PORTB=PORTB|(data&0xF0); PORTA=select[i]; DelayMs(3); } } } }
Last edited by a moderator: