📄 pll.c
字号:
#define sytemFos 12
void delay(unsigned int t)
{
unsigned int i;
for (; t != 0; t--)
for (i=1000; i != 0; i--);
}
void PLLinit(unsigned int upll)
{
unsigned int i,j,temp;
unsigned int pllmul,plldiv;
unsigned int min;
ioport unsigned int *clkmd;
clkmd=(unsigned int *)0x1c00;
min = 32;
for(i=0; i!=32; i++)
{
for(j=0; j!=4; j++)
{
temp = i*sytemFos/(j+1);
if (temp > upll)
{
if (temp-upll<=min){min=temp-upll,pllmul=i;plldiv=j;}
}
else if (upll-temp<=min){min=temp-upll,pllmul=i;plldiv=j;}
}
}
temp = 0x2013|pllmul<<7|plldiv<<5;
*clkmd =temp; /* 晶振12Hz,9Hz=0x21f3; 144MHz=0x2613*/
}
// 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
/* 1 0 0 0 0 1 1 1 1 1 0 0 1 1 */
/* 1 0 0 1 1 0 0 0 0 1 0 0 1 1*/
/* 1 0 1 1 1 1 1 1 0 1 0 0 1 1*/
main()
{
PLLinit(1);
while(1)
{
asm(" bclr XF ");
delay(1000);
asm(" bset XF ");
delay(1000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -