#include <hidef.h> /* common defines and macros */ #include "derivative.h" /* derivative-specific definitions */ void PLL_init(void) { PLLCTL=0X01; CLKSEL=0X03; SYNR=0X02; 外部晶振为8M REFDV=0X01; //设置总线频率为24M PLLCTL_PLLON=1; //开启锁相环 //asm NOP; //asm NOP; while(!CRGFLG_LOCK); //锁定PLL CLKSEL_PLLSEL=1; } unsigned int counter=0; void ECT(void) { TIOS_IOS0=1; //设置通道0为输出比较 TC0=0X00EE; //输出比较寄存器0设置初值 TCTL2=0X02; //定时器控制寄存器OC0输出低电平 TIE_C0I=1; //允许通道0对应产生中断 TSCR2=0X06; //设置预分频因子为64 (记一个数用2.56us) TSCR1=0X80; //定时器使能 } #pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt 8 OC0(void) //8为定时器通道0的中断标号 { TFLG1_C0F=1; //中断发生在0通道对0通道清除标志位 TC0=TCNT+3906; //进入中断的周期为10毫秒 counter++; DDRA=0XFE; //用灯检测是否进入中断 if(counter==100) { counter=0; PORTA=~PORTA; } } #pragma CODE_SEG DEFAULT voidmain(void) { PLL_init(); //锁相环初始化 ECT(); //时钟模块初始化 DDRA=0X0E; //设置PORTA 1--3 为输出 PORTA=0X00; //开灯 for(;;) { EnableInterrupts; } } 我用的是MC9S12D64芯片 我上面程序弄的 是 1S 为什么我在试验箱上的现象就感觉好几秒 为什么 求大神解答 |