用stc12c5a60s2单片机PCA模块捕获模式测占空比,请大神指点
时间:10-02
整理:3721RD
点击:
用串口调试的结果一直是00,
#include<stc12c5a60s2.h>
#define uchar unsigned char
uchar xxx,yyy;
void InitUART(void)
{
ES = 0; //禁止串口中断
TMOD = 0x20; //设置T1为波特率发生器
SCON = 0x50; //0101,0000 8位数据位,无奇偶校验
TH1 = 256-(11059200/12/32/9600); //11.0592MHz晶振,波特率 = 9600 TH1=0xff-11059200/12/32/9600
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void SendOneByte(uchar c)
{
TI = 0;
SBUF = c;
while(!TI);
TI = 0;
}
void PCA_Init(void)
{
CCON = 0x00;//初始化PCA控制寄存器
CL = 0;//清零
CH = 0;
CCAP0L = 0x00;
CCAP0H = 0x00;
CMOD = 0x09;//设置PCA时钟源为系统时钟,且使能PCA计时溢出中断
CCAPM0 = 0x31;//PCA模块0双向捕获,且产生捕获中断
CR = 1; //PCA计时器开始运行
// EA = 1; //开总中断
}
void pca_buhuo() interrupt 7
{
if (CCF0)
{
CCF0 = 0; //ccf0软件清0
xxx = CCAP0H; //保存捕获的高位数值
yyy = CCAP0L; //保存低位低位
CL = 0;
CH = 0;
}
}
main()
{
InitUART();
PCA_Init();
while(1)
{
SendOneByte(yyy);
}
}
#include<stc12c5a60s2.h>
#define uchar unsigned char
uchar xxx,yyy;
void InitUART(void)
{
ES = 0; //禁止串口中断
TMOD = 0x20; //设置T1为波特率发生器
SCON = 0x50; //0101,0000 8位数据位,无奇偶校验
TH1 = 256-(11059200/12/32/9600); //11.0592MHz晶振,波特率 = 9600 TH1=0xff-11059200/12/32/9600
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void SendOneByte(uchar c)
{
TI = 0;
SBUF = c;
while(!TI);
TI = 0;
}
void PCA_Init(void)
{
CCON = 0x00;//初始化PCA控制寄存器
CL = 0;//清零
CH = 0;
CCAP0L = 0x00;
CCAP0H = 0x00;
CMOD = 0x09;//设置PCA时钟源为系统时钟,且使能PCA计时溢出中断
CCAPM0 = 0x31;//PCA模块0双向捕获,且产生捕获中断
CR = 1; //PCA计时器开始运行
// EA = 1; //开总中断
}
void pca_buhuo() interrupt 7
{
if (CCF0)
{
CCF0 = 0; //ccf0软件清0
xxx = CCAP0H; //保存捕获的高位数值
yyy = CCAP0L; //保存低位低位
CL = 0;
CH = 0;
}
}
main()
{
InitUART();
PCA_Init();
while(1)
{
SendOneByte(yyy);
}
}
