实现功能:选择不同Fosc信号频率或CPUClk频率。
实验现象:选择不同Fosc信号频率或CPUClk频率时发光二极管亮灭闪烁的快慢不同。
拓展:编写一个C语言程序,选择系统时钟为20MHz,CPU时钟为Fosc/64,每延时0.5s发光二极管的状态变化一次;改变系统时钟为49MHz,CPU时钟依然为Fosc/64,利用前一种情况相同的延时程序,延时时间到时发光二极管的状态变化一次;观察前后两种情况下发光二极管状态有什么不同。(发光二极管具体由那些I/O口控制可自行定义)
#include "SPCE061A.H"
#define uint unsigned int
void Delay1(void);
void Delay2(void);
int main()
{
uint clocks,rev=0x00ff;
uint isa=1;
*P_IOA_Dir=0x00ff;
*P_IOA_Attrib=0x00ff;
*P_IOA_Data=0x0000;
clocks=C_Fosc_49M|C_Fosc_Div_64;
//(clocks=C_Fosc_20M|C_Fosc_Div_64)
while(1)
{
rev=~rev;
rev&=0x00ff;
*P_IOA_Data=rev;
if(isa)
{
Delay1();
}
else
{
Delay2();
}
*P_Watchdog_Clear=C_WDTCLR;
}
return 0;
}
void Delay1(void)
{
uint i,j;
for(i=0; i<10; i++)
{
for(j=0; j<32768; j++)
{
*P_Watchdog_Clear=C_WDTCLR;
}
}
}
void Delay2(void)
{
uint i;
for(i=0; i<32768; i++)
{
*P_Watchdog_Clear=C_WDTCLR;
}
}