智能车制作

标题: PIT周期中断问题 [打印本页]

作者: ccsshu    时间: 2013-1-23 16:07
标题: PIT周期中断问题
求高手们看下这个程序。我是想实现通过按键调节闪烁灯的闪烁时间(跟PIT周期中断有关)。它提示的错误时说在 ‘  PITMTLD0 = 0x08;     //8位定时器0初值’ 这里,PITMTLD0的格式跟其他的不一样。现在有点急,麻烦各位啦。


/*---------------------------------------------------------*/
#include <hidef.h>     
#include "derivative.h"     
#define LED_D1 PORTB         //定义LED灯的引脚
#define LED_D1_dir DDRB      //定义LED灯对应引脚的方向寄存器
#define UP PTIH_PTIH0       //
#define UP_dir DDRH_DDRH0    //

unsigned char i;
unsigned int count;    //定义一个正整型变量,用于计数
void PIT_init(void)     //定时器初始化函数
{
  PITCFLMT = 0x00;   //禁止PIT模块
  PITCE_PCE0 = 1;    //使能定时器通道0 //负责控制信号的输入和输出叫做使能
  PITMUX_PMUX0 = 0;     //定时器通道0使用8位定时器0加16位定时器0
}
void init_key(void)     //
{
     UP_dir =0;       //设置为输入
   
     PPSH = 0x00;        //极性选择寄存器,选择下降沿;
     PIFH = 0x0f;     //对PIFH的每一位写1来清除标志位;
     PIEH = 0x0f;        //中断使能寄存器;
}

/************************************************************/
//注意:请在这里修改你需要定时的周期时间
/************************************************************/
  PITMTLD0 = 0x08;     //8位定时器0初值
  PITLD0 = 0x03f7;     //16位定时器0初值
//定时周期 = (PITMTLD0 + 1)*(PITLD0 + 1)/ 总线时钟
//定时周期 = (0x07 + 1)*(0x03E7 + 1)/ 8M = 1ms
////////////////////////////////////////////////////////////////

  PITINTE = 0x01;     //开PIT定时器中断(通道0)
  PITCFLMT = 0x80;   //使能PIT模块    //PITCFLMT = 0x00;   禁止PIT模块
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt 66 void PIT_time0(void)   //VectorNumber_Vpit0   1ms定时中断
{
  PITTF_PTF0 = 1;      //中断标志清0
  if(up==0)
   {
    count++;           //每毫秒中断一次 计数器count加一
   }
  if(count==500)     //500ms=0.5秒
  {
    count=0;         //清零
    i = ~i;          // i取反一次
  }
}

void main(void)
{
  init_key();           //
  PIT_init();         //初始化定时器
  LED_D1_dir = 1;
EnableInterrupts;
  for(;;)
  {
     LED_D1 = i;
  }
}


作者: 穆旦阿斗    时间: 2013-1-23 17:12
亲 你这只有一个大括号啊

************************************************************/
//注意:请在这里修改你需要定时的周期时间
/************************************************************/
   PITMTLD0 = 0x08;     //8位定时器0初值
   PITLD0 = 0x03f7;     //16位定时器0初值
//定时周期 = (PITMTLD0 + 1)*(PITLD0 + 1)/ 总线时钟
//定时周期 = (0x07 + 1)*(0x03E7 + 1)/ 8M = 1ms
////////////////////////////////////////////////////////////////

  PITINTE = 0x01;     //开PIT定时器中断(通道0)
   PITCFLMT = 0x80;   //使能PIT模块    //PITCFLMT = 0x00;   禁止PIT模块
}
作者: 穆旦阿斗    时间: 2013-1-23 17:12
穆旦阿斗 发表于 2013-1-23 17:12
亲 你这只有一个大括号啊

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

左括号似乎没有啊
作者: ccsshu    时间: 2013-1-23 22:45
谢谢,但改了好像也有错误啊




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