搜索
bottom↓
回复: 1

请教马老师和各位高手定时器0,1,2的问题,

[复制链接]

出0入0汤圆

发表于 2009-7-22 09:14:23 | 显示全部楼层 |阅读模式
atmega16,三个定时器同时工作,有问题!

//////一旦加入定时器1,数码管就不正常,屏蔽定时器1后,就正常,忘高手帮忙看下,
////定时器0负责延时一定的时间,定时器0负责延时一定的时候,并且延时时间变化(key变化),
////定时器2负责led显示。

void init_devices(void)
{
CLI();

MCUCR=0x02; //int0中断下降沿使能!
GICR=0xc0;


//timer0_init(); ///////////timer0_ovf初始化
//TIMSK=0X41; /////timer0_ovf and timer2_ovf  
TIMSK=0X45;   /////timer0_ovf and timer2_ovf and timer1_ovf

TCCR0=0X00;
TCNT0=0X64;   ////溢出设置10ms,16M分频1024
TCCR0=0X05;  

TCCR1B=0X00;
TCNT1H=0XC2;
TCNT1L=0XF7;   /////设置初始值C2F7
OCR1AH=0X00;
OCR1AL=0X00;
OCR1BH=0X00;
OCR1BL=0X00;
TCCR1A=0X00;
TCCR1B=0X05;   ////timer1_ovf溢出设置1s,16M分频1024

//TIMSK=0x40;
TCNT2=0x00;
TCCR2=0x05;

SEI();
}



#pragma interrupt_handler timer0_ovf:10  
                    //tiemer0_ovf溢出中断
void timer0_ovf(void)
{
TCNT0=0X64;
//interrupt_count=100*abon;     /////
interrupt_count--;
  if(interrupt_count<2)
  {
  interrupt_count=0; ///interrupt_count置0
  TCCR0=0X00;   ////定时器0停止
  }
}


#pragma interrupt_handler timer1_ovf:9  
                    //tiemer1_ovf溢出中断
void timer1_ovf(void)
{
TCNT1H=0XC2;
TCNT1L=0XF7;      
//interrupt_count=100*abon;     /////
  key--;
  if(key==0)           ////////当key=0时,定时器1停止
  {on=0;  
  TCCR1B=0X00;   ////定时器1停止
  }
}


#pragma interrupt_handler timer2_ovf:5
                  //tiemer2_ovf溢出中断
void timer2_ovf()
{
int sreg_temp;
  sreg_temp=SREG;

  display();//显示led
   
  SREG=sreg_temp;  
}




main()
{first=0;
for(;;)
{
...........

if((1.2*ie<large<4*ie)&&(!first)) /////见电压的最大值对应的时间给key,只执行一次。
  {  
    if(large<1.31*ie)
    {key=10;//延时10秒
       first=1;
      }
    else if(large<1.38*ie)
      {key=10;//延时10秒
       first=1;
      }
    else if(large<1.44*ie)
      {key=10;//延时10秒
       first=1;
      }
    else if(large<1.50*ie)
      {key=10;//延时10秒
       first=1;
      }
    else if(large<2*ie)
      {key=5;//延时5秒
       first=1;
      }
    else if(large<3*ie)
      {key=5;//延时5秒
       first=1;
      }
    else  
      {key=5;//延时5秒
                    first=1;
      }
         
        TCCR1B=0X00;
      TCNT1H=0XC2;
      TCNT1L=0XF7;   /////设置timer1_ovf初始值C2F7
      OCR1AH=0X00;
      OCR1AL=0X00;
      OCR1BH=0X00;
      OCR1BL=0X00;
        TCCR1A=0X00;
      TCCR1B=0X05; //////timer1_ovf 启动开始工作
           
  }
     
    if(on==0)  
        {
        gengxin();
        pai();
        if(1.2*ie<large<4*ie)
        sd=0b01000000; signal=0x7f;temp=111;
        baojing(); //PC6亮,故障显示8111
        }
}

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-7-24 00:28:03 | 显示全部楼层
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=1116671&bbs_page_no=1&bbs_id=1003

下载基本的东西先仔细学习参考一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-15 22:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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