9s12DG128 的ECT模块程序 请大侠指教
- UID
- 137865
- 性别
- 男
|
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编辑过] |
|
|
|
|
|
- UID
- 137865
- 性别
- 男
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 137865
- 性别
- 男
|
我理解的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;
}
} |
|
|
|
|
|
- UID
- 137865
- 性别
- 男
|
大侠都去过5.1了吗?
这应该是ECT模块非常简单的一个程序,难道没有人用过吗?
另 :事件计数方式和门方式中哪一个适合对脉冲信号计数? |
|
|
|
|
|
- UID
- 129750
- 性别
- 女
|
|
|
|
|
|