📄 pca_cap.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 + -