找回密码
 立即注册
查看: 604|回复: 4

PCA检测输入脉冲频率求教

[复制链接]

3

主题

4

回帖

29

积分

新手上路

积分
29
发表于 2023-5-4 16:38:19 | 显示全部楼层 |阅读模式
本人用15W404AS的P1.1口作为输入来检测输入脉冲的频率,现在同样的输入频率,其显示的值都是不同,不知道问题出在哪里,请帮忙指导一下


#define CCP_S0 0x10                 //P_SW1.4
#define CCP_S1 0x20                 //P_SW1.5

bit flag;
BYTE count;//Âö³åÊý
DWORD count_L,count_H,count0,count1,length;
BYTE over_count; //PCA¼ÆÊýÆ÷Òç³ö´ÎÊý
float Fre;

//BYTE count1;


void PCA_InitConfig(void)
{
   ACC = P_SW1;
    ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=0
    P_SW1 = ACC;                    //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)
  
        CMOD = 0x09;  //0000 1001,Ñ¡ÔñϵͳʱÖÓ£¬ÔÊÐíCFÖжÏ
        //CCAPM0 = 0x21;//0010 0001,ÉèÖÃÉÏÉýÑØ²¶»ñ£¬¿ªÆô²¶»ñÖжÏ
        CCAPM0 = 0x11;  //0001 0001,ÉèÖÃϽµÑز¶»ñ£¬¿ªÆô²¶»ñÖжÏ
        CCON = 0x40;  //0100 0000,¿ªÆôPCA¼ÆÊýÆ÷
}

void PCA(void) interrupt 7  using 1
{
        if(CCF0 == 1)
        {
                CCF0 = 0;
               
                count0=count1;
                ((BYTE*)&count1)[3]=CCAP0L;
                ((BYTE*)&count1)[2]=CCAP0H;
                ((BYTE*)&count1)[1]=over_count;
                ((BYTE*)&count1)[0]=0;
                length=count1-count0;
               
                t5=(1105920000/length)/10000;
                over_count=0;
        }
        if(CF == 1)
        {
                CF = 0;
                over_count++;
        }
}


void main()
{

    P1M0 = 0x00;        //1.01234567 power put
    P1M1 = 0x00;

    P3M0 = 0x7F;        //3.23456 power put         
    P3M1 = 0x80;
  
       
    P36 = 1;//CS
    P33 = 1;// DATA
        P32 = 1;// WR
          P37 = 0; //TSS1


  PCA_InitConfig();
   over_count = 0;
       
                 CL = 0;                         //??PCA???
    CH = 0;
    CCAP0L = 0;
    CCAP0H = 0;
               
                CR = 1;                         //PCA???????
                         EA = 1;
    while (OK)

    {
            displaydata(t5,0,0,0,0);
                 
      delay6();
                                                delay6();
                                                delay6();
                         t5=0;
                          
       
    }
       
}


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

积分
15648
发表于 2023-5-4 17:46:05 | 显示全部楼层
1, STC15W408AS, 提高主频到 30MHz

2, 参考下面的程序
1.png

回复 支持 反对

使用道具 举报 送花

3

主题

4

回帖

29

积分

新手上路

积分
29
发表于 2023-5-4 18:36:32 | 显示全部楼层
神*** 发表于 2023-5-4 17:46
1, STC15W408AS, 提高主频到 30MHz

2, 参考下面的程序

谢谢,我明天试下,有问题再请教
回复 支持 反对

使用道具 举报 送花

3

主题

4

回帖

29

积分

新手上路

积分
29
发表于 2023-5-5 08:48:44 | 显示全部楼层
试过了没有用,下载器频率设置为30M
void PCA(void) interrupt 7  using 1
{
        if(CCF0 == 1)
        {
                CCF0 = 0;
                if (CF && ((CCAP0H & 0x80) == 0))
        {
            CF = 0;
            cnt++;
        }
                count0=count1;
                ((BYTE*)&count1)[3]=CCAP0L;
                ((BYTE*)&count1)[2]=CCAP0H;
                ((BYTE*)&count1)[1]=cnt;
                ((BYTE*)&count1)[0]=0;
                length=count1-count0;
               
                t5=(3000000000/length)/10000;
                ((BYTE *)&length)[0] = 0;
                cnt=0;       
                //over_count=0;
        }
        if(CF == 1)
        {
                CF = 0;
                cnt++;
        }
}

oid main()
{
    P1M0 = 0x00;        //1.01234567 power put
    P1M1 = 0x00;
     P3M0 = 0x7F;        //3.23456 power put         
    P3M1 = 0x80;
     P36 = 1;//CS
    P33 = 1;// DATA
        P32 = 1;// WR
          P37 = 0; //TSS1

       
    ACC = P_SW1;
    ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=0
    P_SW1 = ACC;                    //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)
    CCON = 0;   
          CMOD = 0x09;  
          CCAPM0 = 0x11;  
       
                 CL = 0;                         //??PCA???
    CH = 0;
    CCAP0L = 0;
    CCAP0H = 0;
                cnt = 0;
                 count0 = 0;
    count1 = 0;
                CR = 1;                         //PCA???????
                         EA = 1;
                       
    while (OK)

    {
            displaydata(t5,0,0,0,0);
                 
     // delay6();
                        //                        delay6();
                                                delay6();
          }
       
}

回复 支持 反对

使用道具 举报 送花

3

主题

4

回帖

29

积分

新手上路

积分
29
发表于 2023-5-5 08:49:30 | 显示全部楼层
LOZ*** 发表于 2023-5-4 18:36
谢谢,我明天试下,有问题再请教

试过了没有用,下载器频率设置为30M
void PCA(void) interrupt 7  using 1
{
        if(CCF0 == 1)
        {
                CCF0 = 0;
                if (CF && ((CCAP0H & 0x80) == 0))
        {
            CF = 0;
            cnt++;
        }
                count0=count1;
                ((BYTE*)&count1)[3]=CCAP0L;
                ((BYTE*)&count1)[2]=CCAP0H;
                ((BYTE*)&count1)[1]=cnt;
                ((BYTE*)&count1)[0]=0;
                length=count1-count0;
               
                t5=(3000000000/length)/10000;
                ((BYTE *)&length)[0] = 0;
                cnt=0;      
                //over_count=0;
        }
        if(CF == 1)
        {
                CF = 0;
                cnt++;
        }
}

oid main()
{
    P1M0 = 0x00;        //1.01234567 power put
    P1M1 = 0x00;
     P3M0 = 0x7F;        //3.23456 power put         
    P3M1 = 0x80;
     P36 = 1;//CS
    P33 = 1;// DATA
        P32 = 1;// WR
          P37 = 0; //TSS1

      
    ACC = P_SW1;
    ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=0
    P_SW1 = ACC;                    //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)
    CCON = 0;   
          CMOD = 0x09;  
          CCAPM0 = 0x11;  
      
                 CL = 0;                         //??PCA???
    CH = 0;
    CCAP0L = 0;
    CCAP0H = 0;
                cnt = 0;
                 count0 = 0;
    count1 = 0;
                CR = 1;                         //PCA???????
                         EA = 1;
                       
    while (OK)

    {
            displaydata(t5,0,0,0,0);
                 
     // delay6();
                        //                        delay6();
                                                delay6();
          }
      
}
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-4 04:21 , Processed in 0.107806 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表