智能车制作
标题:
求教:哪位大侠帮忙写一个脉冲累加器的程序?谢谢.
[打印本页]
作者:
pjgmwlmy
时间:
2009-3-10 12:10
标题:
求教:哪位大侠帮忙写一个脉冲累加器的程序?谢谢.
小弟初学者,脉冲累加器部分看不懂.能否帮忙写一个程序.用来统计给定时间内脉冲的个数?
作者:
50833713
时间:
2009-3-10 13:24
提示:
作者被禁止或删除 内容自动屏蔽
作者:
chiusir
时间:
2009-3-10 18:36
http://www.znczz.com/viewthread. ... p;page=1&extra=
作者:
dalefang
时间:
2009-3-23 18:25
同样需求啊
作者:
zjcc
时间:
2009-6-19 15:18
谢谢chiusir 了,
作者:
yala1987
时间:
2009-6-24 01:52
#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
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2