在直插的上面没有问题,我现在用的是贴片的.请问贴片的和直插的区别这么大????????
请大家帮帮忙!!!!现把PCA部分程序写出来,大家帮我分析一下是不是软件上有问题!
#include <c8051F330.h>
#define uint unsigned int
#define uchar unsigned char
void SYSCLK_Init (void); // 系统时钟初始化
void PORT_Init (void); // 端口初始化
void PCA_Init(void); // PCA初始化
void PCA_ISR(void); // PCA中断服务程序
sfr16 PCA0CP0 = 0xFB;
bit PCA0newdata;
uint Pcacap0[4];
uchar num0; // 记录Pcacap0[4]数组的下标
main()
{
PCA0MD &= ~0x40;
SYSCLK_Init (); // 系统时钟初始化
PORT_Init (); // 端口初始化
PCA_Init(); // PCA初始化
EA=1; // 使能总中断
num0=0;
while(1)
{
if( PCA0newdata ==1)
{
if( num0 > = 4 )
{
num0 = 0;
}
PCA0newdata = 0;
}
}
}
void PCA_ISR(void) interrupt 11
{
static uint tempdata0 = 0;
Pcacap0[num0] = PCA0CP0-tempdata0;
tempdata0 = PCA0CP0;
num0++;
PCA0newdata = 1;
CCF0 = 0;
}
void PORT_Init (void)
{
P0MDIN = 0x7E; P0.2和P0.3分配给CEX0和CEX1
P0SKIP = 0x83;
P1MDOUT = 0xC4;
XBR0 = 0x01;
XBR1 = 0x42;
}
void SYSCLK_Init (void)
{
OSCICN = 0x83; // 系统时钟为24.5MHz
RSTSRC = 0x04; // 使能时钟丢失检测器
}
void PCA_Init(void)
{
PCA0CN = 0x40; // 允许PCA计数器/定时器
PCA0MD = 0x00; // PCA计数器/定时器时钟源
// 选择为系统时钟的12分频
// PCA 定时器32.1ms溢出一次,溢出中断不允许
// PCA计数器/定时器溢出中断禁止
PCA0CPM0 = 0x21; // 正沿捕捉功能使能,开启CCF0中断
EIE1 |= 0x10;