智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1738|回复: 3
打印 上一主题 下一主题

PIT周期中断问题

[复制链接]

13

主题

60

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1842
威望
877
贡献
507
兑换币
557
注册时间
2013-1-21
在线时间
229 小时
跳转到指定楼层
1#
发表于 2013-1-23 16:07:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求高手们看下这个程序。我是想实现通过按键调节闪烁灯的闪烁时间(跟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;
  }
}

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
2#
发表于 2013-1-23 17:12:20 | 只看该作者
亲 你这只有一个大括号啊

************************************************************/
//注意:请在这里修改你需要定时的周期时间
/************************************************************/
   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模块
}
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
3#
发表于 2013-1-23 17:12:38 | 只看该作者
穆旦阿斗 发表于 2013-1-23 17:12
亲 你这只有一个大括号啊

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

左括号似乎没有啊
回复 支持 反对

使用道具 举报

13

主题

60

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1842
威望
877
贡献
507
兑换币
557
注册时间
2013-1-21
在线时间
229 小时
4#
 楼主| 发表于 2013-1-23 22:45:18 | 只看该作者
谢谢,但改了好像也有错误啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-4 16:43 , Processed in 0.047126 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表