注册会员
- 积分
- 199
- 威望
- 177
- 贡献
- 22
- 兑换币
- 0
- 注册时间
- 2009-1-11
- 在线时间
- 0 小时
|
<>这段代码是要测量脉冲的宽度,用定时器溢出中断来进行中断次数记录,最后用中断次数乘以定时器每一溢出所需时间的脉宽。元件是mc9s12dg128b,飞思卡尔的芯片。检查了N*N次,都有这样一个错误:</P><P>L1822: Symbol _FUFLOAT in file .....(FILE NAME) is undefined.</P><P>求各位高手指教,感激不尽啊——————</P><P> </P><P>#include <hidef.h> /* common defines and macros */<BR>#include <mc9s12dg128.h> /* derivative information */<BR>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"</P><P><BR>unsigned int tofcnt;<BR>unsigned int pw;</P><P>void MCUInit(void){<BR> asm cli;<BR> DDRB=0XFF;<BR> PORTB=0XFF;<BR> asm sei;<BR>}</P><P> </P><P>void ECTInit(void) {<BR> asm cli;<BR> TIOS=0X00;<BR> TSCR1_TEN=1;//定时器使能<BR> TSCR1_TSWAI=0;<BR> TSCR1_TSFRZ=0;//冻结与等待模式下正常计数<BR> TSCR1_TFFCA=1;//自动清零<BR> TCTL3=0XFF;<BR> TCTL4=0XFF;//同时捕捉上升沿下降沿<BR> TIE=0X00;//各通道不允许中断<BR> TSCR2=0X07;//禁止中断,128分频<BR> TFLG1=0X00;//通道无中断<BR> TFLG2_TOF=0;//定时器溢出中断标志位<BR> TC0=0; //输入捕捉寄存器0置零<BR> //DLYCT=0X00;//延迟计数256总线时钟<BR> asm sei;<BR>}</P><P> </P><P><BR>void main(void) {<BR> unsigned int ini_time=0,end_time=0,time=0,count=0;<BR> float pw=0.0;<BR> MCUInit();<BR> ECTInit();<BR> tofcnt=0;<BR> <BR> EnableInterrupts;</P><P> while(count!=2) {<BR> if(TFLG1=0X01) //脉冲由IC0通道输入捕捉<BR> {<BR> TFLG1=0X01;//清零<BR> time=TC0;<BR> count++;<BR> }<BR> while(count==1)<BR> { <BR> ini_time=time;//记录脉冲开始时定时器值<BR> if(TFLG1=0X01) //检测下降沿是否到来<BR> {<BR> count++;<BR> TFLG1=0X01;//清零<BR> end_time=TC0;<BR> break;<BR> }<BR> <BR> TSCR2 |=0X87;//允许定时器溢出中断 <BR> }<BR> count=0;<BR> TSCR2 &=0X87;//禁止定时器溢出中断<BR> pw=(tofcnt*65536-ini_time+end_time)*128/8000000;<BR> pw=SCI0DRL;;//等待发送 <BR> }<BR> /* please make sure that you never leave this function */<BR>}</P><P> </P><P>#pragma CODE_SEG__NEAR_SEG NON_BANKED<BR>void interrupt 16 TofItrpt(void) {<BR> <BR> asm cli;<BR> TFLG2_TOF=1;//中断标志位清零<BR> tofcnt++;<BR> //SCI0DRL=tofcnt;<BR> <BR> //PORTB=tofcnt;<BR> asm sei;<BR> <BR>}<BR>#pragma CODE_SEG DEFAULT</P><P> </P> |
|