首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]8位脉冲累加器如何设置?

[求助]8位脉冲累加器如何设置?

本人打算用8位脉冲累加器PACB。将PWM0口与PT1口相连,即用PWM0产生脉冲,用ECT1口进行脉冲累加,然后用串口将其显示出来。这样可以吗?以下是我的全部源程序。
但在试验时遇到一个问题:点击RUN不能执行,即马上复位。点击STEP单步执行,可以执行,每进入中断就发一个数,但发送的数据好象有误。如果取消脉冲累加,就完全正常了。这是怎么回事?



#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

void init_PWM(void)
{
PWME=0X00;
PWMPRCLK=0x01;
PWMSCLA=100;
PWMCLK=0x01;
PWMPOL=0x01;
PWMCAE=0x00;
PWMPER0=200;
PWMDTY0=100;
PWME=0x01;
}

void init_SCI(void)
{
SCI0BDH=0x00;
SCI0BDL=0x34;
SCI0CR1=0;
SCI0CR2=0x0C;
}

void init_ECT (void)
{
TSCR1_TEN=0;
TSCR2=0x07;
TIOS_IOS0=1;
TC0=0x7A12;
TIE_C0I=1;

TIOS_IOS1=0;
TCTL4=0x04;
PBCTL_PBEN=0; //16位脉冲累加器B禁止
PACN1=0; //PACN清零
ICPAR_PA1EN=1; //设置八位脉冲累加器PA1EN
PBCTL_PBOVI=1; //肞A1EN中断使能

DLYCT=0x01; //延时
TSCR1_TEN=1;
}

void interrupt 8 READCOUNT(void)
{
TFLG1_C0F=1; //比较中断标志清零
TC0+=0X7A12;
while(!(SCI0SR1_TDRE))
;
SCI0DRL=PACN1;
}

void main(void)
{
init_SCI();
init_PWM();
init_ECT();
EnableInterrupts;
for(;;)
{}
}
有同感啊
我的也这样哦
高手门快给指点指点啊

应该是中断函数的地址选错了,中断源是PAI的那个吧.不是IOC的那个中断源.

返回列表