把 PCA 计数器的值读取出来,转换成对应的数值( 主要实现过程如图), 这个程序能够达到要求吗?

2019-07-15 08:33发布

这个程序主要作用是配置单片机内部的 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 ;  } }
2~)8SXT~Y%@C0}4@]AK`P8N.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jf_69851734
1楼-- · 2019-07-15 15:45
bobo2021 发表于 2018-4-28 09:52
你试了没有,这样问让大家给你试吗?你总要自己试一下,有问题再解决问题

我试过了keil上运行没有问题,但是实际电路中好像不行
bobo2021
2楼-- · 2019-07-15 21:30
这个好像是要设置寄存器吧
jf_69851734
3楼-- · 2019-07-15 21:36
 精彩回答 2  元偷偷看……
jf_69851734
4楼-- · 2019-07-16 03:16
P2=xxx;
  P2<<=8;
  P2|=yyy;

这样行不行

一周热门 更多>