中级会员
- 积分
- 234
- 威望
- 198
- 贡献
- 32
- 兑换币
- 10
- 注册时间
- 2008-9-30
- 在线时间
- 2 小时
|
<>我写的测速及显示在一块板子上有结果,换了块板子就不行了!单步运行时进不了中断,其中一块板子可以!(我用的是MC9SDG128开发板)</P><P>请帮我解决下!!?</P><P>///////////////////////////////////////////////////////////////////<BR>//PT4输入捕捉测速程序,PT4口输入脉冲<BR>//说明此程序用于总线时钟在8M情况下,若总线时钟有变化,改分频参数和模数常数以得到精确定时<BR>///////////////////////////////////////////////////////////////////<BR>#include <hidef.h> /* common defines and macros */<BR>#include <mc9s12dg128.h> /* derivative information */<BR>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"</P><P>#define TIME_INTER 500 <BR>unsigned int Get_pulse; //脉冲个数<BR>unsigned int V;<BR>unsigned int number_count;<BR>unsigned char LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};<BR>unsigned char i,j;<BR>unsigned int data[4];<BR>unsigned char dat[]={0x70,0xB0,0xD0,0xE0};</P><P><BR>void main(void) <BR>{ DDRA=0xff;<BR> PORTA=0x00;<BR> DDRM=0XFF;<BR> PTM=0X00;<BR> DisableInterrupts;<BR> PWM_Init() ;<BR> TIOS=0x00; //输入捕捉<BR> TCTL3=0x02; //通道4下降沿触发<BR> TSCR2=0X07; //分频,用来给TCNT作时间参考<BR> TSCR1=0x80; //Timer Enable<BR> TIE=0X10; //初始化定时器开启<BR> TFLG1=0x10; <BR> MCFLG_MCZF=1;<BR> MCCTL = MCCTL&0Xfb; //模数计数器禁止运行<BR> MCCTL = 0Xe3; //允许中断,模数计数方式 返回时重新加载所用的常数,分频常数为16 <BR> MCCTL = MCCTL|0X04; //模数计数器使能<BR> MCCNT = 1000; //(1/16M)*8*1000 <BR> MCCTL = MCCTL|0X08 ; //把模数常数寄存器的值加载到模数计数器FLMC;<BR> EnableInterrupts;<BR> for(;;)<BR> { for(i=0;i<3;i++)<BR> {V=Get_pulse*21;<BR> data[2]=V/1000; <BR> data[1]=(V/100)%10; <BR> data[0]=((V/10)%10);<BR> //data[0]=V%10;<BR> PTM=dat<i>;<BR> PORTA=LED[data<i>];<BR> for(j=0;j<20;j++);<BR> } <BR> } <BR>}</P><P><BR>#pragma CODE_SEG NON_BANKED<BR>void interrupt 26 MDC_ISR(void) <BR>{ <BR> static unsigned int count=0;<BR> count++;<BR> if( count==TIME_INTER) //1秒取一次<BR> {<BR> Get_pulse = number_count;<BR> number_count=0;<BR> count=0;<BR> }<BR> <BR> MCFLG = 0x80;<BR> }</P><P><BR>void interrupt 12 PT4_Capture(void) <BR>{ <BR> TFLG1=0x10; <BR> number_count++;<BR>}</P><P><BR> </P> |
|