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发送串口数值
}