性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

PIC單片機(jī)頻率捕捉

#include

#include

#include

__CONFIG(0X3F3A);

const char seg[]={0xc0,0xf9,0xa4,0xb0,0x92,0x82,0xd8,0x80,0x90,0xff};

bank3 int cplz[11];//定義一個(gè)數(shù)組,用于存放各次的捕捉值

union cp1{int y1;

            unsigned char cple[2];

            }cplu;

unsigned char count,data;//測(cè)量脈沖個(gè)數(shù)寄存器

int T5;

double RE5;

double puad5;

char s1,s2,s3,s4;

//ccp模塊工作于捕捉方式初始化子程序

void ccpint()

    {CCP1CON=0X05;//設(shè)置捕捉上升沿

    T1CON=0X00;//關(guān)閉T1振蕩器

    PEIE=1;

    CCP1IE=1;

    TRISC2=1;

    }

//系統(tǒng)其他部分初始化子程序

void initial()

    {

    count=0x0b;

    TRISB=0X00;

    TRISD=0X00;

    }

void delay(int x)

    {    

    int y,ms;

    for(y=0;y

    for(ms=0;ms<200;ms++);

    }

//數(shù)碼管顯示函數(shù)

void display(char num1,char num2,char num3,char num4)

    {

    PORTB=0b11110001;

    PORTD=seg[num1];

    delay(1);

    PORTB=0b11110010;

    PORTD=seg[num2];

    delay(1);

    PORTB=0b11110100;

    PORTD=seg[num3];

    delay(1);

    PORTB=0b11111000;

    PORTD=seg[num4];

    }

//中斷服務(wù)程序

void interrupt cp()

{

    CCP1IF=0;

    cplu.cple[0]=TMR1L;

    cplu.cple[1]=TMR1H;

    cplz[data]=cplu.y1;

    CCP1CON=CCP1CON^0X01;

    data++;

    count--;

}

void freq()

{

    T5=cplz[10]-cplz[0];

    RE5=(double)T5;

    RE5=RE5/5;

    T5=1000000/RE5;

}

void main()

{

while(1)

{

ccpint();

initial();

display(s1,s2,s3,s4);

data=0x00;

TMR1H=0;

TMR1L=0;

CCP1IF=0;

PEIE=1;

ei();

TMR1ON=1;

while(1)

{

if(count==0)break;

}

di();

PEIE=0;

TMR1ON=0;

freq();

display(s1,s2,s3,s4);

}

}

如上是一個(gè)捕捉方波然后在數(shù)碼管上顯示出頻率的一個(gè)程序。編譯沒(méi)什么問(wèn)題,能通過(guò),可是顯示屏始終只顯示0。

看看那里設(shè)置的不對(duì)。

全部回復(fù)(1)
正序查看
倒序查看
2014-05-11 18:28
首先看看你的顯示程序有沒(méi)有問(wèn)題,確保顯示程序沒(méi)有問(wèn)題了再去搞頻率捕捉!
0
回復(fù)
發(fā)