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

9s12DG128 的ECT模块程序  请大侠指教

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编辑过]

请大侠点拨一下问题在哪
你的问题是什么?
海纳百川  有容乃大
我理解的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;
}
}
大侠都去过5.1了吗?
这应该是ECT模块非常简单的一个程序,难道没有人用过吗?
另 :事件计数方式和门方式中哪一个适合对脉冲信号计数?
事件计数方式
返回列表