这个程序主要作用是配置单片机内部的 PCA 模块相关寄存器,使其工作在捕获模式,当检测到波形的跳变时,就把 PCA 计数器的值读取出来,转换成对应的数值。( 主要实现过程如图)
这个程序能够达到要求吗?
#include<stc12c5a60s2.h> #define uchar unsigned char uchar xxx,yyy; void PCA_Init(void) { CCON = 0x00;// 初始化 PCA 控制寄存器 CL = 0;// 清零 CH = 0; CCAP0L = 0x00; CCAP0H = 0x00; CMOD = 0x08;// 设置 PCA 时钟源为系统时钟 , 且使能 PCA 计时溢出中断 CCAPM0 = 0x21;//PCA 模块 0 双向捕获 , 且产生捕获中断 CR = 1; //PCA 计时器开始运行 EA = 1; // 开总中断 } void pca_buhuo() interrupt 7 { if (CCF0==1) { CCF0 = 0; //ccf0 软件清 0 xxx = CCAP0H; // 保存捕获的高位数值 yyy = CCAP0L; // 保存低位低位 CL = 0; CH = 0; } } void main() { PCA_Init(); while(1) { P1=yyy ; } }
-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
P2<<=8;
P2|=yyy;
这样行不行
一周热门 更多>