图18f4550,20MHz晶体工作在48MHz闪烁LED



我有这段闪烁 LED 的代码,问题是我是否正确配置了保险丝,因为当delay_ms为 47 时,LED 闪烁 1000 秒亮起和 47 秒熄灭。我正在使用CCS C编译器5.059。谢谢你的建议。

#include <18F4550.h> 
#include<stdlib.h>
#include<math.h>
#fuses PLL5,HSPLL,CPUDIV2,USBDIV,NOWDT,NOPROTECT,NOLVP, VREGEN
#use delay(clock=48000000,crystal=20MHz) 
//========================== 
void main() 
{ 
  while(TRUE) 
  { 
   output_high(PIN_D0); 
   delay_ms(1000); 
   output_low(PIN_D0); 
   delay_ms(1000); 
  } 
}

CCS C 编译器将根据您传递给#use delay()的参数设置正确的振荡器保险丝。 它还对要#use delay()的参数执行健全性检查,以验证其是否兼容。 将您的#fuses#use delay()更改为此内容,以使 CCS C 编译器为您正确执行此操作:

#fuses NOWDT, NOPROTECT, NOLVP, VREGEN
#use delay(clock=48MHz ,crystal=20MHz, USB_FULL)

我还在#use delay()中输入了USB_FULL参数,该参数还将PLL的其他部分配置为全速USB操作(似乎您想使用(。

您会注意到我从您的代码中删除了 PLL5、HSPLL、CPUDIV2 和 USBDIV 保险丝,因为这些保险丝将由#use delay()

最新更新