|
利用STC15的PCA进行脉冲计数,计算频率
单片机源程序如下:
- /********************************************************
- *
- * 平台:keil5 + STC154K58S4
- *
- * 频率:24MHz
- *
- * 功能:使用PCA模块的捕获功能,判断脉冲个数,计算频率,使用串口输出
- *
- * 作者: 李铁
- *
- * 时间:2022年7月3日
- *
- ***********************************************************/
- #include "config.h"
- #include <stdio.h>
- #include "bsp_pca.h"
- #include "bsp_uart.h"
- #include "delay.h"
- #define uchar unsigned char
- #define uint unsigned int
- void Delay10ms(); //@24.000MHz
- sbit LED = P0^0; //输出脉冲端口
- bit flag;
- uint count;//脉冲数
- uchar count_L,count_H;
- uint over_count; //PCA计数器溢出次数
- float Fre;
- uint count1;
- void main()
- {
- UART_InitConfig();
- TI = 1; //使用printf()函数时,TI必须为1
- PCA_InitConfig();
- EA = 1;
- while(1)
- {
- LED = ~LED;
- // printf("hello,world!\n\r");
- printf("脉冲数:%d\n\r",count);
- printf("溢出数:%d\n\r",over_count);
- printf("频率:%fHz\n\r",Fre);
- delay_ms(100);
- }
- }
- void PCA(void) interrupt 7
- {
- if(CCF0 == 1)
- {
- CCF0 = 0;
- CCAP0H = 0;
- CCAP0L = 0;
- flag = 1;
- count++;
- if(flag)
- {
- flag = 0;
- count_H = CCAP0H;
- count_L = CCAP0L;
- count1 = count_H;
- count1 = (count1<<8)|count_L;
- Fre = 1/((65535*over_count+count1)*0.0000000416);
- over_count = 0;
- }
-
- }
- if(CF == 1)
- {
- CF = 0;
- over_count++;
- }
- }
复制代码 |
-
逻辑分析仪频率
-
串口输出频率
-
-
PCA脉冲计数.zip
68.66 KB, 下载次数: 90, 下载积分: 黑币 -5
Keil代码
评分
-
查看全部评分
|