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

在用MC68HC908JL8的产品中:定时器延时不稳定情况?

在用MC68HC908JL8的产品中:定时器延时不稳定情况?

求助 : 在用MC68HC908JL8的产品中有出现定时器延时不稳定情况?程序如下,各位高手帮忙指点


#include /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include

#define in_T _PTD.Bits.PTD4//输入信号(周期方波)
#define control_T _PTD.Bits.PTD3//输出信号
#define check_T _PTD.Bits.PTD5//PTD5

/******************************************************/
/*本程序想实现:在输入一个周期方波T信号中,同步输出5个T宽度的信号方波 ;但在程序定时+判断时候,波行漂移很大,不知道是何原因 ?
情况如下:
1: 如果我不加: while(in_T==0);//等待输入信号高电平
信号很正常,但输出方波不能和源信号T同步.
2: 加了后却出现定时时间老是变动,也不能同步,不知道为何?
3: 我也用过扑捉中断方式,但我要执行其他动作的时候,会当机的?

*/
/******************************************************/

void main(void)
{

   _CONFIG2.Byte=0x11;//
   _CONFIG1.Byte=0x09;//disable cop
  DisableInterrupts; /* enable interrupts DisableInterrupts*/

   //--------INSET PORT In/Out PIN-------?
   DDRD=0xCB; //set I/O IND4/PD5 OUTD3/PD1/PD0
   PTD=0;

  //-------------------------------------
  asm LDA T1SC
  T1SC=0X82;//time 控制 CS_PIN=1;
  T1MOD=0x5D41;// 48ms overflow
  T1SC_TOF=0; //启动定时

 while(1)
  {
  T1MOD=0x5D41; //重新配置数据50MS
  T1SC_TOF=0; //启动定时
  control_T=1;//p1_2


  //延时部分4.7个T时间


  while(T1SC_TOF!=1);//等待时间溢出
  while(in_T==0);//等待输入信号高电平
  //************************//
  T1MOD=0x5D41; //重新配置数据50MS
  T1SC_TOF=0; //启动定时
  control_T=0;//p1_2


  //延时部分4.7个T时间

  while(T1SC_TOF!=1);//等待时间溢出
  while(in_T==0);//等待输入信号高电平 

  }

/* please make sure that you never leave main */
}

[此贴子已经被作者于2007-2-1 11:22:10编辑过]

[此贴子已经被作者于2007-2-1 11:43:55编辑过]

freescale 的新手
TOF并不是定时器启动/停止控制位,而是溢出标志位。
海纳百川  有容乃大
谢谢提醒,终于弄好了
在添加一个
T1SC_STOP=0启动计数
T1SC_STOP=1停止计数
即可解决
非常感谢 版主

freescale 的新手
返回列表