智能车制作

标题: 千年不遇奇葩问题 请大神高手 支招解决,小弟不胜感激!!!!!! [打印本页]

作者: hi棠    时间: 2014-3-1 14:37
标题: 千年不遇奇葩问题 请大神高手 支招解决,小弟不胜感激!!!!!!
本帖最后由 hi棠 于 2014-3-1 14:44 编辑

一个简单的定时器 程序  想 通过中断 读一些 数据和清一些标志位 ,但是 奇葩的事情 就这样发生了 ,当在中断中 清标志位 或给全局变量赋值时 单片机就自动复位。调了 两天还是不知何解,求帮助!
[attach]56313[/attach]
主函数
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include "sci.h"  
#include "TIM.h"




void main(void) {
  /* put your own code here */
  
//  SCIInit();
   initPIT();
   DDRB = 0xff;
        EnableInterrupts;


  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

定时器中断
#include "TIM.h"
#include "sci.h"



extern  uint8 tempR = 0;
extern  uint8 tempL = 0;
static  uint8 counflag = 0;


//initPIT:X128定时器0初始化函数------------------------------------------*
//功 能: *
//    8位计数器分频1us的时基                                              *
//参 数:无 * //返 回:无                                                   *
//说 明:                                                                  *
// 最大定时时间为65535us
//------------------------------------------------------------------------*
void initPIT(void)
{
        
//    PITCFLMT|= 0x83;                     /*0x83=1(PITE)000 0011(PFLMT[1:0])ITE:使能PITPFLMT强制加载8位计数器值*/
    PITCFLMT_PITE = 0;                      //关闭PIT模块
    PITCE |= 0x01;                       /*使能定时器0,开始定时*/
    PITMUX &= 0xfe;                      /*定时器0对应8位计数器0*/
    PITMTLD0 = 8-1;                     //设定8-bit MICRO Timer0寄存器,它每次从40降到0,花费时间为40*0.025=1us
    PITLD0 =TIMING*1000-1;               //定时周期=TIMING ms
    PITINTE|= 0x01;                      /*使能定时器0的time-out中断*/
    PITFLT |=0x01;                       //强制加载   16定时器的值
    PITCFLMT_PITE = 1;                      //关闭PIT模块

}




/*定时器0超时中断函数*/
#pragma CODE_SEG NON_BANKED

void interrupt 66 PIT0_RE(void)
{
static  uint8 tempew ;
  
  PACTL_PAEN=0;                                     // 输入脉冲计数禁止
//   PORTB=PACNT;
//  tempL = PACNT;
//  tempR = PORTA;

  PHELCONRST = 1;

  PACNT=0X00;                                     // 脉冲数据寄存器清零
  PACTL_PAEN=1;                                     // 输入计数允许
   PITTF_PTF0 = 1;                                  /*清除中断标志位      必须清      */
  PHELCONRST = 0;   
  counflag = 1;

}
     大家看看有木有问题啊

作者: hi棠    时间: 2014-3-1 15:14
有没有大神指导一下啊




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2