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

一个ECT的输入捕捉问题。

一个ECT的输入捕捉问题。

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

void initECT(void){
TSCR1 |= BM_TEN;/*使能主自由计算器*/
TSCR2 |= 0x04;/*预分频系数为16*/
TIOS =0x00; /* 全部通道用做输入捕捉*/
TCTL4=0x01;/*输入捕捉通道0引脚捕捉上升边沿*/
}


void main(void) {
DDRB=0xff;

initECT();
while(1){
PORTB=0x0f;
while(TFLG1==0x01){
PORTB=~(PORTB);
TFLG1=0x01 ; /*写1清除标志位*/
}
}

在输入引脚连上信号发生器的1KHZ,4.9V方波,在调试程序时候,逐步调试时候,程序在while(TFLG1==0x01){ }程序段反复运行,那么TFLG1=0x01 清楚标志位不就没用了?把程序整体运行时,灯泡不变换,始终在PORTB=0x0f;这句的状态,进不了while(TFLG1==0x01){ }程序段,这是什么问题呢?标志位怎么老出希奇古怪的问题呢



}
你可以将while(TFLG1==0x01)改成while(TFLG1_C0F==0x01)试试。再检查一下硬件连接是否正确。
海纳百川  有容乃大
版主,我已经知道问题所在了,在逐步调试时候看灯泡亮暗不可取,在我的程序中,输入信号频率和128的执行频率的不匹配让我们难以看到闪的动作。可以用别的方法解决。

下面我想用中断方式而不是轮询方式。但是拜读前面关于中断的帖子和我手上的数据手册有下列问题还不明白,盼斑竹或哪位大虾指点。
1.在使用中断时候要么使用void interrupt 10 time2(void){}方式,其中10应该是中断号
吧,可是我在手册中没找到中断号与中断类型(如输入捕捉通道0中断)的对应关系,斑竹
知道具体下载网页的话可以贴出网址么?(飞思卡尔网站上我暂时没找到)
2。中断方式二是不用中断号而去修改向量表向量。我下的DG128的数据手册中没有具体的向量表哪个地址对应哪个中断类型啊,可以告诉下载网页么?
谢谢了
问题2已经解决,手册找到了,但是上面问题1还存在,手册上面没有中断号与中断源的对应关系啊。
请看文档《9S12DT128DGV2.pdf》第81页的中断矢量表。复位矢量的中断号为0,余下的依次类推。中断矢量地址在表中也已列出。
海纳百川  有容乃大
怎么能用while(TFLG1==0x01)呢?应该是while(TFLG1==0x00)吧
返回列表