Pic 18f4550采用20MHz晶振工作,48MHz闪烁LED

时间:2017-03-24 17:44:20

标签: crystal-reports fuse led blink

我有这个闪烁LED的代码,问题是我是否正确配置了保险丝,因为当delay_ms为1000时,LED闪烁47秒,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); 
  } 
}

1 个答案:

答案 0 :(得分:0)

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

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

我还将USB_FULL参数放入#use delay(),它还配置了PLL的其他部分以进行全速USB操作(看起来你想要使用它)。

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

设置