高级会员 
 
主题
回帖0
积分3453
阅读权限30
注册时间2009-8-20
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
 
/***************************************************************************** 
MCU:ATMEGA8 
时钟:外8MHZ 
******************************************************************************/ 
#include <avr/io.h> 
#include <avr/interrupt.h> 
 
#define uchar unsigned char 
#define SET_LED PORTD&=0xfe 
#define CLR_LED PORTD|=0x01 
static uchar g_bCount=0; 
static uchar g_bDirection=0; 
 
SIGNAL(SIG_OVERFLOW0) 
{ 
   g_bCount++; 
} 
 
int main(void) 
{ 
 DDRD=_BV(PD0); 
 PORTD=_BV(PD0); 
  
 TCNT0=0; 
 TCCR0=_BV(CS02)|_BV(CS00); 
 TIMSK=_BV(TOIE0); 
 sei(); 
  
 while(1) 
 { 
//--------------------------- 
  if(g_bCount>14) 
  { 
   if(g_bDirection) 
    SET_LED,g_bDirection=0; 
   else 
    CLR_LED,g_bDirection=1; 
   
   g_bCount=0; 
//---------------------------- 
  } 
 } 
} 
 
 
 
这段程序是书上的一段例子,红色字体段本来在中断程序中的,我将其移到了主循环中 
问题是这段程序在主循环中不能正确工作,感觉上无法取得全局变量的值,为什么呢?找了很久,没有找到错误的地方,头都大了 
兄弟帮着看看 |   
 
 
 
 |