智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2917|回复: 2
打印 上一主题 下一主题

测速及显示

[复制链接]

0

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

80

主题

1045

帖子

0

精华

跨届大侠

北京龙邱智能科技有限公司

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
2#
发表于 2008-12-11 22:55:04 | 只看该作者

Re:测速及显示

你参考一下我的IOC的例程,加上时钟中断,应该可以搞定
回复 支持 反对

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
3#
发表于 2008-12-12 03:07:59 | 只看该作者

Re:测速及显示

<>显示在一块板子上有结果,那么最有可能是板子问题.</P><P>可能的话,找第三块板子试一下.</P><P>这个程序相当简单的,</P>
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|亿加合和智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-5-5 12:45 , Processed in 0.160480 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表