智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4631|回复: 5
打印 上一主题 下一主题

求教:哪位大侠帮忙写一个脉冲累加器的程序?谢谢.

[复制链接]

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
221
QQ
威望
197
贡献
24
兑换币
0
注册时间
2008-8-6
在线时间
0 小时
跳转到指定楼层
1#
发表于 2009-3-10 12:10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟初学者,脉冲累加器部分看不懂.能否帮忙写一个程序.用来统计给定时间内脉冲的个数?

14

主题

586

帖子

0

精华

禁止发言

事人

积分
3226
威望
988
贡献
1966
兑换币
62
注册时间
2008-9-5
在线时间
136 小时
2#
发表于 2009-3-10 13:24:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

80

主题

1045

帖子

0

精华

跨届大侠

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

Rank: 10Rank: 10Rank: 10

积分
10332

论坛元老奖章

QQ
威望
2905
贡献
6151
兑换币
4515
注册时间
2008-6-7
在线时间
638 小时
3#
发表于 2009-3-10 18:36:01 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
349
威望
255
贡献
70
兑换币
48
注册时间
2009-2-22
在线时间
12 小时
4#
发表于 2009-3-23 18:25:05 | 只看该作者
同样需求啊
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

注册会员

Rank: 2

积分
197
威望
175
贡献
22
兑换币
0
注册时间
2009-6-19
在线时间
0 小时
5#
发表于 2009-6-19 15:18:41 | 只看该作者
谢谢chiusir 了,
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
QQ
威望
229
贡献
49
兑换币
0
注册时间
2009-3-22
在线时间
45 小时
6#
发表于 2009-6-24 01:52:59 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

#define PITTIME  5000//设定为约50MS定时
unsigned int vTmpPIT=0;
unsigned int sudu=0;

void pllclk(void)//24MHz,外部时钟为16MHz
{
       CLKSEL=0X00;//锁相环时钟关
       PLLCTL=0xe1;
       SYNR=2;//PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
       REFDV=1;
       PLLCTL=0X60;
       asm  NOP;
       asm  NOP;
       asm  NOP;
       while((CRGFLG&0X08)==0);//时钟校正同步
       CLKSEL=0X80;//锁相环开
}
void initIOBoutput(void)//IO口初始化,B口为输出
{
    DDRB=0XFF;
    PORTB=0XFF;
}
void initPIT(void)//定时中断初始化函数 50MS定时中断设置
{
    PITCFLMT_PITE=0; //定时中断通道0关
    PITCE_PCE0=1;//定时器通道0使能
    PITMTLD0=240-1;//8位定时器初值设定。240分频,在24MHzBusClock下,为0.1MHz。10us.
    PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS
    PITINTE_PINTE0=1;//定时器中断通道0中断使能
    PITCFLMT_PITE=1;//定时器通道0使能
}
void initPACA(void)//初始化脉冲累加器A
{
  PACTL=0X50;     //PT7上升沿脉冲计数
  TCTL3=0x40;     //c-输入捕捉7上升沿有效,            
  //TCTL4=0xc0;     //4 0表示ICx禁止, 1表示上升沿, 2表示下降沿, 3表示任何沿      
  TIE  =0x00;     //每一位对应相应通道中断允许,0表示禁止中断
  TIOS =0x00;     //每一位对应通道的: 0输入捕捉,1输出比较
  PACNT =0x00;
}
void initPWM(void)//初始化电机
{
PWME=0X00;
PWMCTL=0XC0;
PWMCLK=0X00;
PWMPOL=0XFF;//起始输出高电平
PWMCAE=0X00;//左对齐方式
PWMPRCLK=0X33;
PWMPER45=9999;
PWMDTY45=4999;
PWME=0XA0;
}

void main(void)
{
  pllclk();
  initIOBoutput();
  initPWM();
  initPACA();
  initPIT();
  EnableInterrupts;
  for(;;) {} /* wait forever */
  
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
    vTmpPIT++;
    if(vTmpPIT==20)  //延时50*20=1000MS
    {   
     sudu=PACNT;
     initPACA();
     PORTB=~sudu;
     vTmpPIT=0;
    }
     PITTF_PTF0=1;//清中断标志位
}


//这是XS128的程序,测的是1s内的脉冲数.脉冲接PT7
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 00:23 , Processed in 0.103508 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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