Board logo

标题: 9s12DG128 的ECT模块程序  请大侠指教 [打印本页]

作者: vigorip    时间: 2006-4-25 10:38     标题: 9s12DG128 的ECT模块程序  请大侠指教

#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#include "main_asm.h" /* interface to the assembly module */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void main(void) {

ICSYS=0x03; /*工作方式为锁存,累加器记满后自动翻转为0 */

/*脉冲累加器*/
TIOS=0x07; /*使能7通道*/
PACTL=0x54;  /*使用16位计数器,以输入脉冲为工作频率f=43.5hz,t=23ms*/
DLYCT=0x00;/*不使用delay*/

for(;;) {
 /*定时器   t=1s*/
MCCTL=0x5C;/*使能MCNT,f=6mfz*/
MCCNT=0xffff;

 
}
}

 

 

 


 

[此贴子已经被作者于2006-4-25 10:38:07编辑过]


作者: vigorip    时间: 2006-4-25 10:46

请大侠点拨一下问题在哪
作者: strongchen    时间: 2006-4-25 11:19

你的问题是什么?
作者: vigorip    时间: 2006-4-25 17:34

我理解的ECT模块中的累加器事件计数模式是:
使用引脚PT7,
若使用PACLK即输入的脉冲信号频率作为累加器的工作时钟,
若工作在锁存方式,当MCNT计数到零时,累加器的值送到保持寄存器中,并将累加器清0,
若读一次保持寄存器,可将保持寄存器的值清0.

以下是程序,但总读不出保持寄存器的值.请大侠指教,问题出在哪里?



#include /* common defines and macros */
#include /* derivative information */
#include "main_asm.h" /* interface to the assembly module */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
char i,j;
void main(void) {
for(;;) {


ICSYS=0x03; /*工作方式为锁存,累加器记满后自动翻转为0 */



********/*脉冲累加器*/***********
TIOS=0x07; /*使能7通道*/
PACTL=0x54; /*使用16位计数器,以输入脉冲为工作频率*/

***************/*定时器 t=2s*/**********
MCCTL=0x46; /*使能MCNT,f=6mfz*/
while(MCCNT!=0x0000);
while(MCCNT==0x0000);
i=PA2H;
j=PA3H;
}
}
作者: vigorip    时间: 2006-4-28 14:36

大侠都去过5.1了吗?
这应该是ECT模块非常简单的一个程序,难道没有人用过吗?
另 :事件计数方式和门方式中哪一个适合对脉冲信号计数?
作者: yl84304070    时间: 2006-4-29 10:39

事件计数方式




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0