智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1504|回复: 2
打印 上一主题 下一主题

新手刚学XS128单片机,弄了个PIT程序,为什么就进入不了PIT程序呢?

[复制链接]

3

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
762
威望
402
贡献
222
兑换币
239
注册时间
2013-9-14
在线时间
69 小时
毕业学校
清华大学
跳转到指定楼层
1#
发表于 2013-9-14 16:27:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define LED PORTB
#define LED_dir DDRB
#define  BUS_CLOCK                   32000000           //总线频率
#define  OSC_CLOCK                   16000000           //晶振频率
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
unsigned char data=0x01;
unsigned int cycle=0;
/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CLKSEL &= 0x7f;       //set OSCCLK as sysclk
    PLLCTL &= 0x8F;       //Disable PLL circuit
    CRGINT &= 0xDF;
   
    #if(BUS_CLOCK == 40000000)
      SYNR = 0x44;
    #elif(BUS_CLOCK == 32000000)
      SYNR = 0x43;     
    #elif(BUS_CLOCK == 24000000)
      SYNR = 0x42;
    #endif

    REFDV = 0x81;         //PLLCLK=2×OSCCLK×(SYNDIV+1)/(REFDIV+1)=64MHz ,fbus=32M
    PLLCTL =PLLCTL|0x70;  //Enable PLL circuit
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08)); //PLLCLK is Locked already
    CLKSEL |= 0x80;        //set PLLCLK as sysclk
}

/*************************************************************/
/*                     PIT模块初始化函数                     */
/*************************************************************/
void init_PIT(){
PITMTLD0=249;     //为0通道8位计数器赋值
PITLD0=63999;     //为0通道16位计数器赋值   //(249+1)*(63999+1)=16000000个总线周期=0.5秒
PITMUX_PMUX0=0;   //第0通道使用微计数器0
PITCE_PCE0=1;
PITINTE_PINTE0=1;
PITCFLMT=0x80;    //使能周期中断定时器
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void PIT_INTER(void)
{
  if(PITTF_PTF0 == 1)
    PITTF_PTF0 = 1;    //清除标志位
  cycle+=1;
  if(cycle==2)
  {
      cycle=0;
      data=data<<1;
      if(data==0)
          data=0x01;
      LED = ~data;

  }
  
}
#pragma CODE_SEG DEFAULT


/*************************************************************/
/*                         主函数                            */
/*************************************************************/
void main(void) {
DisableInterrupts;
LED_dir=0xff;       //设置为输出
LED=~data;
INIT_PLL();
EnableInterrupts;
init_PIT();
for(;;)
  {
  }
}

200

主题

2621

帖子

1

精华

杰出人士

蜗牛

Rank: 12Rank: 12Rank: 12

积分
12488

优秀会员奖章活跃会员奖章论坛骨干奖章论坛元老奖章在线王奖章资源大师奖章

QQ
威望
5973
贡献
3101
兑换币
1999
注册时间
2011-10-21
在线时间
1707 小时
2#
发表于 2013-9-14 17:05:40 | 只看该作者
写上中断号试试。
//////////////////////////////PIT定时器初始化/////////////////////////////////////////////////////
void Pit0_Init(void)
{
  PITCFLMT_PITE=0; //disable PIT
  
//  PITCE_PCE0=1; //enable timer channel 0
//  PITCE_PCE1=1; //enable timer channel 1
//  PITCE_PCE2=1; //enable timer channel 2
  PITCE_PCE3=1; //enable timer channel 3
                                                                       
//  PITMUX_PMUX0=0; //ch0 connected to micro timer 0
//  PITMUX_PMUX1=0; //ch1 connected to micro timer 0
//  PITMUX_PMUX2=0; //ch2 connected to micro timer 0
  PITMUX_PMUX3=0; //ch3 connected to micro timer 0

  PITMTLD0=255 ; //micro time base 0 equals 255 clock cycles
  PITMTLD1=255 ; //micro time base 0 equals 255 clock cycles
  
//  PITLD0=0x61a8; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.
//  PITLD1=1245; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.
//  PITLD2=249; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.
  PITLD3=249; //time-out period = (PITMTLD + 1) * (PITLD + 1) / fBUS.
  
//  PITINTE_PINTE0=1; //enable interupt channel 0
//  PITINTE_PINTE1=1; //enable interupt channel 1
//  PITINTE_PINTE2=1; //enable interupt channel 2
  PITINTE_PINTE3=1; //enable interupt channel 2
  
  PITCFLMT_PITE=1; //enable PIT
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 69 PIT3_ISR(void)
{
}
一共四个66-69.
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
762
威望
402
贡献
222
兑换币
239
注册时间
2013-9-14
在线时间
69 小时
毕业学校
清华大学
3#
 楼主| 发表于 2013-9-14 17:53:54 | 只看该作者
qinlu123 发表于 2013-9-14 17:05
写上中断号试试。
//////////////////////////////PIT定时器初始化///////////////////////////////////// ...

谢谢啊 ,原来是我没在project里面定义地址,找了高手帮我解决了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 13:32 , Processed in 0.043016 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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