⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pca_cap.c

📁 口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河口若悬河
💻 C
字号:
#include "SSTREG51.h"
#define uchar unsigned char
uchar seg[10 ]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar i;
uchar cap[4];
//sfr CCAPM0=0XDA;
//sfr CMOD=0XD9;
//sfr CCAP0H=0XFA;
//sfr CCAP0L=0XEA;
//sfr CCON=0XD8;
//sbit CCAPP0=CCAPM0^2;
//sbit CCAPM0=CCAPM0^3;
//sbit CR=CCON^6;
//sbit CCF0=CCON^0;
//sbit EC=IE^6;
bit capselect=1;

/*******初始PCA*********/
init_pca()
{
CMOD=0;//捕捉模式,fosc/12,
CCAPM0=0X98;//下降沿捕捉,	允许模式0中断
CR=1;
EC=1;
EA=1;
} 

/*********中断处理*********/

void pca_0() interrupt 6
{
CCAPM0&=0xf3;//清上升、下降沿捕捉允许/禁止位
capselect=~capselect;
CCF0=0;// 清中断标志
cap[i]=CCAP0L;
i++;
cap[i]=CCAP0H;//保存捕捉数据
i++;
}

/***********主函数**************/
void main()
{
unsigned int t1,t2;
uchar comt1_t2;
init_pca();
while(1)
{
if(capselect==1)	//上升沿捕捉
{CCAPM0&=0xdf;// CAPP0=1;
CCAPM0|=0x20;
}	
else		    //下降沿捕捉
{CCAPM0&=0xef;//CAPN0=1;	 
CCAPM0|=0x10;
}
if(i==4)
{
i=0;
EC=0;   // 禁止中断
t1=256*cap[1]+cap[0];
t2=256*cap[3]+cap[2];
comt1_t2=t2/t1;
P0=seg[comt1_t2];   //占空比
EC=1;  //待送P0显示后再允许中断
}
} }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -