MC9S12ZVL32的延时一毫秒的函数
时间: 2023-12-01 21:02:10 浏览: 146
MC9S12ZVL32是一款16位的单片机,下面是一个简单的延时一毫秒的函数实现:
```c
void delay_ms(unsigned int ms){
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<3750;j++); // 延时大约1ms
}
```
该函数的实现原理与8位单片机类似,利用一个双重循环来进行延时,每个循环大约需要4个时钟周期,因此总的延时时间是循环次数乘以4。需要注意的是,实际的延时时间可能会因为CPU的时钟频率等因素而有所偏差,需要根据具体情况进行微调。
相关问题
MC9S12ZVL32锁相环初始化
MC9S12ZVL32芯片的锁相环(PLL)初始化包括以下步骤:
1. 将PLLCTL寄存器的CME、PLLON和PCE位清零,将PCE位设置为1,禁止时钟监视器,关闭PLL,使能PLL预分频器。
2. 设置PLLCTL寄存器的VCOFRM、COPW和SCME位。VCOFRM位选择VCO输出频率的范围,COPW位选择COP的输出频率,SCME位选择时钟监视器的工作状态。
3. 设置SYNR和REFDV寄存器,分别设置PLL的倍频器和预分频器的参数。SYNR寄存器的SYNDIV字段设置PLL的倍频器值,REFDV寄存器的REFDV字段设置预分频器的值。
4. 将PLLCTL寄存器的PLLON位设置为1,启动PLL。
5. 等待PLL稳定,可以通过读取CRGFLG寄存器的SCIF、LOCK和LOCKA位来判断PLL是否稳定。当SCIF位为1时,表示PLL失锁;当LOCK位为1时,表示PLL已经锁定,但是还没有达到稳定状态;当LOCKA位为1时,表示PLL已经锁定并且达到稳定状态。
6. 将PLLCTL寄存器的CME位设置为1,使能时钟监视器。
以上是MC9S12ZVL32锁相环初始化的基本步骤,具体的参数设置需要根据实际应用来确定。
MC9S12ZVL32锁相环初始化代码
下面是MC9S12ZVL32锁相环初始化的代码示例:
```c
void initPLL(void)
{
// 禁止时钟监视器,关闭PLL,使能PLL预分频器
PLLCTL &= ~(PLLCTL_CME_MASK | PLLCTL_PLLON_MASK | PLLCTL_PCE_MASK);
PLLCTL |= PLLCTL_PCE_MASK;
// 设置VCO输出频率范围、COP输出频率和时钟监视器状态
PLLCTL |= (PLLCTL_VCOFRM_MASK | PLLCTL_COPW_MASK | PLLCTL_SCME_MASK);
// 设置PLL倍频器和预分频器的参数
SYNR = 0x02; // PLL倍频器值为2
REFDV = 0x01; // PLL预分频器值为1
// 启动PLL
PLLCTL |= PLLCTL_PLLON_MASK;
// 等待PLL稳定
while (!(CRGFLG & CRGFLG_LOCKA_MASK))
;
// 使能时钟监视器
PLLCTL |= PLLCTL_CME_MASK;
}
```
在这个示例中,我们将PLL的倍频器值设置为2,预分频器值设置为1,这样就可以将系统时钟从外部晶振的频率提高到原来的2倍。需要注意的是,具体的参数设置需要根据实际应用来确定。
阅读全文