为什么用示波器观察结果计算出来的系统时钟频率是理论值的十分之一
/* ioTest.c */
#include "C8051F410.h"
// Peripheral specific initialization functions,
// Called from the Init_Device() function
sbit ledP04=P0^4;
sbit ledP05=P0^5;
void PCA_Init()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
}
void Port_IO_Init()
{
XBR1 = 0x40;
}
void Oscillator_Init()
{
OSCICN = 0x84;
}
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
PCA_Init();
Port_IO_Init();
Oscillator_Init();
}
void delay(int i){
int j,k;
for(j=0;j
for(k=0;k<1000;k++);
}
}
main(){
Init_Device();
while(1){
ledP04=1;
ledP05=0;
delay(200);
ledP04=0;
ledP05=1;
delay(200);
}
}
应该需要看编译后的汇编指令结果,并结合指令周期。才能根据脉冲宽度推算时钟频率的。可以考虑用定时器中断方式来输出脉冲,并根据其宽度推算时钟频率。
LS正解
你怎么知道delay怎么跑的,怎么知道一次 ;就是几个指令呢?
只有汇编才有确切的执行周期