智能车制作

标题: 中断计数问题 [打印本页]

作者: 志恒    时间: 2013-5-7 19:52
标题: 中断计数问题
我写的中断计数程序,从中断出来后再进入For循环,为啥只能执行for循环中的第一条语句????
作者: 穆旦阿斗    时间: 2013-5-7 20:33
额  是不是中断里面的计算过大了? 进入中断后你把使能关了,要出中断的时候再开试试
作者: clan    时间: 2013-5-8 15:10
看看程序
作者: 志恒    时间: 2013-5-9 15:11
clan 发表于 2013-5-8 15:10
看看程序

void main(void)   
{  
  uint data=12345;

  DDRA=0XFF;  
  DDRB = 0xFF;                //设置PB(0-7)方向为输出   
  PORTB = 0xFF;               //设置PB(0-7)输出高电平   

  sysclock_init();

  PWM_Init();
  lcd_initial();
  write_command(0x2C);
  dsp_single_colour(0x00,0x00);//改变数据,显示不同的背景



  DDRP_DDRP1 = 0;             //设置PP0口方向为输入   
  PERP_PERP1 = 1;             //设置PP0口拉设备启用   
  PPSP_PPSP1 = 1;             //打开PP0口上拉   
  PIEP_PIEP1 = 1;             //设置PP0口中断使能   

  EnableInterrupts;           //打开中断   
  for(;;)
  {  
    arrey1[0]=arrey[speed/10000];
    arrey1[1]=arrey[speed/1000%10];
    arrey1[2]=arrey[speed/100%10];
    arrey1[3]=arrey[speed/10%10];
    arrey1[4]=arrey[speed%10];
    Display_ASCII8X16(25,50,arrey1);

//   PORTB_PB0 = 1;            //打开LED   
  }              

}



//中断函数  
#pragma CODE_SEG __NEAR_SEG NON_BANKED//将中断函数置于非分页区内,地址空间超过了16位的寻址空间64K,但是它的中断向量地址只有16位,所以中断程序要执行,就得在它16位的寻址空间也即非分页区内,这就是为什么会将S12的中断函数置于非分页区的原因。   
interrupt 56 void IRQ_ISR(void)       //56为PP口中断向量号,它是由文件"mc9s12g128.h"中定义的宏,可在这个文件中搜索"VectorNumber"查找各个中断的中断向量号   
{   
uint time;

  DisableInterrupts;                  //关闭中断                     
  PIFP_PIFP1 = 1;                     //清除PP0的中断标志位   
//  PORTB_PB0 = 0;                      //关闭LED   
//  delayms(1000); //延时以至于可以观察到效果

   time++;

   speed=time;

  EnableInterrupts;                   //打开中断   
}  
#pragma CODE_SEG DEFAULT              //将后续代码置于默认区域内


作者: 志恒    时间: 2013-5-9 15:12
穆旦阿斗 发表于 2013-5-7 20:33
额  是不是中断里面的计算过大了? 进入中断后你把使能关了,要出中断的时候再开试试

好的,我试试看,谢谢了!

作者: 穆旦阿斗    时间: 2013-5-9 15:25
speed=time? time还是动态局部变量?  这个中断是测速??  
作者: clan    时间: 2013-5-9 23:19
志恒 发表于 2013-5-9 15:11
void main(void)   
{  
  uint data=12345;

你多长时间进入一次中断,可能中断里面写的东西太多了,时间就不准了,没法进中断




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