智能车制作
标题:
两个锁相环程序
[打印本页]
作者:
法布里加斯
时间:
2009-3-16 20:08
标题:
两个锁相环程序
程序一:
void SET_PLL( )
{
REFDV=0X01;
SYNR=0X02;
asm{
BRCLR CRGFLG,#$08,*
BSET CLKSEL,#$80
}
}
程序二:
void SET_PLL( )
{
CLKSEL=0X00;
PLLCTL=0xe1;
SYNR=2;
REFDV=1;
PLLCTL=0X60;
asm NOP;
asm NOP;
asm NOP;
while((CRGFLG&0X08)==0);
CLKSEL=0X80;
}
我的理解:
这两个程序其实是一样的,都是将频率倍频至24M,其中第一个程序中的两条汇编指令的含义就是第二个程序中最后两条语句的含义。
我的疑问:
1.既然两条汇编指令的含义是最后两条语句的含义,那为什么第二个程序会多出,多出来的部分能否不写 (CLKSEL=0X00; PLLCTL=0XE1; PLLCTL=0X60;这三句)??
2.上面两段程序执行起来是否一样,那个效率更高??
我的说法里如果有什么不正确的地方,望高手能指出来,最好能分析一下这两程序,基本的我都懂。谢谢
作者:
50833713
时间:
2009-3-16 21:50
提示:
作者被禁止或删除 内容自动屏蔽
作者:
法布里加斯
时间:
2009-3-16 22:27
谢谢,我的意思不是在空指令,呵呵
作者:
shibf
时间:
2009-5-14 20:34
SYNR,REFDV只有在CLKSEL_PLLSEL=0的情况下才能写入。
作者:
跳跃的心
时间:
2009-5-16 17:29
SYNR,REFDV只有在CLKSEL_PLLSEL=0的情况下才能写入。
shibf 发表于 2009-5-14 20:34
不过系统默认的就是CLKSEL_PLLSEL=0。
作者:
20074978
时间:
2009-12-22 21:40
有没有说有教程
作者:
chenrunshe_007
时间:
2009-12-25 00:20
本帖最后由 chenrunshe_007 于 2009-12-25 00:22 编辑
回复
1#
法布里加斯
第一种:如果程序跑飞复位,那我就不知道原来设定锁环相关寄存器的值是多少了。
第二种:即使程序跑飞,或者看门狗复位,程序重新运行相关的寄存器也能正常的初始化。
不过一般如果你建立工程时选的是寄存器初始化为系统默认。那都差不多,只不过第二种更专业一点(书上是这样写的),而第一种更简洁。
作者:
verify
时间:
2009-12-26 15:41
按Datasheet 来就可以了
作者:
zhangjiarui
时间:
2010-11-16 15:59
学习
作者:
读懂你的心
时间:
2011-3-14 20:33
我认为是上面的
作者:
gaoxueze
时间:
2011-3-30 23:27
好
作者:
pangyuo
时间:
2011-4-11 16:27
一个前辈告诉我 因为锁相环调节需要时间,所以那个空语句是延时用的,保证工作稳定
作者:
chengqing
时间:
2011-4-11 17:16
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2