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

QL4中定时器的设置问题

QL4中定时器的设置问题

我用QL4的定时器功能,但是不知道为什么就是调不通,下面是我写的程序,请各位大侠指点!void interrupt tim_isr(void)
{
        count++;
     if(count==0x20)                      
     {
     
           TB_PTB2=1;


}
     else  if(count==0x40 )                     
     {
     
            TB_PTB2=0;
            count=0 ;
     }                             
    TSC_TOF=0;
  
    }


  void tim_init(void)
{
   TSC_TSTOP=1;
   
   TSC=0x43;       
    
   TMODH=0x0F;      /*计数器高位初始化*/
  
   TMODL=0xA0;      /*计数器低位初始化*/
 
  TSC_TSTOP=0;      /*定时器开启*/
}


 

1、程序调不通主要表现在哪里?没有中断?
2、中断向量填写准确了? 全局中断用CLI放开了?
3、芯片是否正常工作?程序正常运行了吗?定时器寄存器的值都准确写入了?
我把程序固化进芯片后,我的PTB_PTB2脚上接上发光二极管,刚开始运行还可以发光,说明进了中断,但是一会就灭了,然后就没有反应了。全局中断已经开了,用的是EnableInterrupts;。中断向量用的是FFF2。你帮我分析一下,谢谢版主!

[此贴子已经被作者于2006-8-15 10:03:17编辑过]

你的程序应该是让LED闪烁,它闪烁了吗?你是否设置中断调试过?
海纳百川  有容乃大
对阿,刚开始闪烁了,但是一会后就没有反应了,而且我测了一下引脚信号,发现发出的不是方波,而是毛刺,不知道为什么!请版主指点!
那位如果有时间能否指点一下啊,我的联系方式是,QQ:23555016,MSN:tianzhu_zhang@hotmail.com,希望大家能帮我一下,谢谢
闪烁了几次?大概闪烁了多长时间?你的总线频率是多少?根据你的总线频率,闪烁周期应该是多大?
海纳百川  有容乃大
其实也不是闪烁了,应该是毫秒级的吗,我用示波器测只是两个毛刺,然后LED就比较暗,而且一会以后毛刺也没有了,灯也就不亮了。总线频率应该是12M吧,因为我就设置了一个OSCTRIM=0xC0;版主能不能找个例程给我看看啊,小弟不胜感激!老师现在天天催我呢!急死我了!
各位大侠救我啊!
QL4的最大总线频率应该是8M,你怎么会是12M?你用的是什么振荡器,内部还是外部?
海纳百川  有容乃大
我是看资料上OSCSC默认值是那样,但是我看库文件里只定义了OSCSTAT - Oscillator Status and Control Register; 0x00000036 ***/
typedef union {
byte Byte;
struct {
byte ECGST :1; /* External Clock Status Bit */
byte ECGON :1; /* External Clock Generator On Bit */
byte BFS :1; /* Bus Frequency Select Bit */
byte :1;
byte :1;
byte :1;
byte :1;
byte :1;
} Bits;
} OSCSTATSTR;
我都不知道该怎么设置!版主帮忙啊,谢谢了!
我的程序是这样子的,现在只是想用一下定时器,希望各位指教!
void PORT_INIT(void)
{
DDRB_DDRB4=0;/*LIN模块输入端口*/
DDRB_DDRB5=1;/*LIN模块输出端口*/
DDRB_DDRB6=1;/*LIN模块使能端*/
DDRB_DDRB3=1;
DDRB_DDRB2=1;
DDRB_DDRB1=1;
DDRB_DDRB0=1;

PTB_PTB5=0;
PTB_PTB3=0;
PTB_PTB2=0;
PTB_PTB1=0;
PTB_PTB0=0;
PTB_PTB6=1;/*MC33399被使能*/



}

/***********************************************/
void init_hardware(void)
{

OSCTRIM=0xC0;
}
/*******************************************/







/****************************************************/
void interrupt tim_isr(void)
{
TSC_TOF=0;
PTB_PTB3=0;
count++;

if(count==10) /*设置延时次数*/

{

/*定时器中断指示灯*/
PTB_PTB0=1;
PTB_PTB1=0; /*计数器轻零*/
PTB_PTB2=0;
PTB_PTB3=0;
}
if(count==20) /*设置延时次数*/

{
PTB_PTB0=0;
PTB_PTB1=1; /*计数器轻零*/
PTB_PTB2=0;
PTB_PTB3=0;
/*计数器轻零*/
}
if(count==30) /*设置延时次数*/

{

/*定时器中断指示灯*/
PTB_PTB0=0;
PTB_PTB1=0; /*计数器轻零*/
PTB_PTB2=1;
PTB_PTB3=0;
/*计数器轻零*/
} /*计数器加1*/
else{
PTB_PTB0=0;
PTB_PTB1=0; /*计数器轻零*/
PTB_PTB2=0;
PTB_PTB3=1;
count=0 ;
}




}

void tim_init(void)
{

TSC_TRST=1;

TMODH=0x0F; /*计数器高位初始化*/

TMODL=0xA0; /*计数器低位初始化*/
TSC=0x43;
TSC_TSTOP=0;

}


/*****************************************************/
void main(void)
{

DisableInterrupts;
CONFIG1=0x09;
CONFIG2=0x00;
init_hardware();
PORT_INIT();

EnableInterrupts;

tim_init();
while(1){;

}

}/*结束主程序*/


把你的整个PROJECT打包贴上来看看。
海纳百川  有容乃大
我的PROJECT,谢谢版主
没有传上来。
海纳百川  有容乃大
我上传的东西怎么老是到一半就不行了,请版主给个联系方式,我给你发过去,谢谢版主!
返回列表