在用MC68HC908JL8的产品中:定时器延时不稳定情况?
- UID
- 340839
- 性别
- 男
|
在用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编辑过] |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
TOF并不是定时器启动/停止控制位,而是溢出标志位。 |
|
|
|
|
|
- UID
- 340839
- 性别
- 男
|
谢谢提醒,终于弄好了
在添加一个
T1SC_STOP=0启动计数
T1SC_STOP=1停止计数
即可解决
非常感谢 版主
|
|
|
|
|
|