STC8G1K08A PCA脉宽捕获 数值跳动大 问题求教

STC  出了最便宜的8脚带ADC功能的单片机,STC8G1K08A看到便宜撸了10片回来。但是眼高手低 搞了一好久没搞懂  最近在研究PCA外部脉宽捕获功能  程序基本上是贴的列程代码  用PCA捕获舵机测试仪的高脉宽用串口打印出来观察变化 有高手帮忙看看到底问题出在哪里  

#include "STC8G.h"
#include <intrins.h>
#include "PCA.h"
#include "UART.h"
#include "IO.h"
#include "delay.h"
#define u8 unsigned char
#define u16 unsigned int
unsigned char cnt;     //存储PCA计时溢出次数
unsigned long count0;  //记录上一次的捕获值
unsigned long count1;  //记录本次的捕获值
unsigned long time;  //存储信号的时间长度


unsigned char tempData[9];/*MCU发送到串行口的数据*/
unsigned char shuzi[16]={'0','1','2','3','4','5','6',
                '7','8','9','A','B','C','D','E','F'};
                        /*数组串行口显示数值用*/
void UartInit(void);        //115200bps@12.000MHz
void SendData(unsigned char dat);
void SendString(unsigned char *puf);   //发送一个字符串
void adczh(unsigned  int i);
void PCA_init(void);

void main(void)
{
    unsigned char x =0;
      UartInit();
    PCA_init();
  while (1)
  {
       adczh(time);
    delay_ms(500);
    if (RI)// 如果串口接收到数据
     {
     RI = 0;      //清中断标志                         
     x =SBUF;
     SendData(SBUF);     // 把接收的数据再发送出去 
     
    }
  }    
}

void adczh(unsigned  int i)

        tempData[0]=shuzi[i/10000];//万位数据
        tempData[1]=shuzi[i%10000/1000];//千位数据
        tempData[2]=shuzi[i%1000/100];//百位数据
        tempData[3]=shuzi[i%100/10];//十位数据
        tempData[4]=shuzi[i%10/1];//个位数据
        SendString(tempData);//由0-9发送串口数值
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值