人狗畜禽COMPANY LIMITED|全是肉的高H文〈男男〉|全篇肉高H秘书被C办公室四爱|全黄H全肉共妻|全黄H全肉短篇禁乱NP慕浅浅|全黄H全肉短篇N男男

技術(shù)熱線: 4007-888-234
設(shè)計開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

技術(shù)支持

從全面的產(chǎn)品導入到強大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)

用PIC做頻率檢測

更新時間: 2019-03-26
閱讀量:2799

/***************************************************** 程序說明: 1,功能:頻率計,采用周期對比法,即在0.5秒內(nèi)所計得的脈沖數(shù)。 最大計數(shù)9999個脈沖(十進制數(shù)僅有四位),最大頻率為 9999*2=19.998KHz. 2,硬件電路:PIC16F87X4.00陶瓷振蕩器。計數(shù)脈沖從IC15腳 輸入。 3,硬件資源:使用了兩個定時器,TMR2TMR1;TMR2完成0.5秒的 定時,TMR2完成在0.5抄內(nèi)計量脈沖的個數(shù)。 *****************************************************/

#include "pic.h"

unsigned int x,f_result; unsigned char a,b,c,d,e,y1,y2,flag,a1,a2,b1,n,b2;

void interrupt ISR(void) { if(TMR2IE&&TMR2IF) //定時時間500000us=250*4(前分頻比)*10(后分頻比)*50(循環(huán)次數(shù)) { TMR2IF=0; n++; if(n>=50) { flag=1; n=0; TMR1ON=0; //停止計數(shù),為了下面讀出正確的數(shù)值。 TMR2ON=0; y1=/*0xff*/TMR1H; y2=/*0xff*/TMR1L; TMR1H=0; //計數(shù)器清零。 TMR1L=0; TMR2ON=1; //重新開啟TMR1TMR2。 TMR1ON=1; RD0=!RD0; } } }

void main(void) { TRISD=0X00; // OUTPUT PORTD=0XFF; TRISC=0x0F; //RC0設(shè)為input. n=0; T2CON=0b01001101;//-- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKIPSI T2CKIPS0 后分頻比為 110,前分頻14。 PR2=249; //設(shè)置初值,希望得到250計數(shù)次數(shù)。中斷50,得到0.5S. TMR1H=0x00; //賦初值; TMR1L=0x00; T1CON=0b10000011; //-- -- T1CKPSI T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR10N ,分頻比1:1 TMR1CS=1(外部引腳上升沿計數(shù)),T1SYNC=0同步計數(shù); TMR1ON=1(開啟計數(shù)器) INTCON=0b11000000; //GIE PEIE T0IE INTE RBIE T0IF INTF RBIF PIE1=0b00000010; //PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE PIR1=0B00000000; //PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

while(1) { if(flag==1) { //di(); x=y1; //須將十六進制數(shù)化為十進制數(shù) x<<=8; x+=y2; e=x%10; x/=10; d=x%10; x/=10; c=x%10; x/=10; b=x%10; a=x/10; /******************* a1=a<<4; a2=a1+b; b1=c<<4; b2=b1+d; f_result+=a2; f_result<<=8; f_result+=b2; ********************/ switch (c) /*abcde*/ { case 0: PORTD=~0b11111100; break; //--abcdefg1111110 0 case 1: PORTD=~0b01100000; break; //--abcdefg0110000 0 case 2: PORTD=~0b11011010; break; //--abcdefg1101101 0 case 3: PORTD=~0b11110010; break; //--abcdefg1111001 0 case 4: PORTD=~0b01100110; break; //--abcdefg0110011 0 case 5: PORTD=~0b10110110; break; //--abcdefg1011011 0 case 6: PORTD=~0b10111110; break; //--abcdefg1011111 0 case 7: PORTD=~0b11100000; break; //--abcdefg1110000 0 case 8: PORTD=~0b11111110; break; //--abcdefg1111111 0 case 9: PORTD=~0b11110110; break; //--abcdefg1111011 0 default:; } flag=0; //ei(); } } } 



曲沃县| 江西省| 独山县| 浪卡子县| 盐源县| 长垣县| 孟村| 利川市| 平顺县| 华容县| 玛多县| 九江县| 兴文县| 延庆县| 临江市| 梁平县| 西和县| 鄂尔多斯市| 精河县| 榆树市| 荆州市| 容城县| 泗洪县| 霞浦县| 大名县| 浙江省| 乌拉特后旗| 桦甸市| 申扎县| 林芝县| 固始县| 惠安县| 贵溪市| 贺兰县| 永定县| 建平县| 十堰市| 马鞍山市| 长泰县| 苏尼特右旗| 柞水县|