⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 IARAVR多项功能测试+protues调试例程
💻 C
字号:
#define ENABLE_BIT_DEFINITIONS   
#include <iom16.h> 
#include <math.h>
#include "ATMEGA16.H"
unsigned char  adc_mux = 0x00 ,timer=0,a=0;
unsigned int   count=0;
unsigned long data=0;
int temp=0;
unsigned long mux;
//初始化定时器
void InitTimer(void)
{
   /*------------timer0------------*/
/*   TCCR0 = (1<<WGM01)|(1<<CS01)|(1<<CS00);
   OCR0  = FREQUENCY/64/1000-1;
   TIMSK |= (1<<OCIE0);*/
   /*------------timer1------------*/
   /*------------timer2------------*/
   TCCR2 = (1<<WGM21)|(1<<CS20);
   OCR2  = 0xfa;
   TIMSK |= (1<<OCIE2);
}

//定时器中断
#pragma vector = TIMER2_COMP_vect
    __interrupt void TOver0_isr( void )
{

   timer++;
   if(timer==180)
   { 
      a++;
      if(a == 32)
        a = 0;
       
   //PORTB = ~PORTB;
       AD_START;
       timer = 0;
       //temp=127;
       mux=temp*temp;//temp;
       data+=mux;
       count++;
       if(count==9600)
       {
          count=0;
          data=data/9600;
          data=sqrt(data);
          data = 0; 
       }
   }
}

void init_adc(void)
{	
    AD_RESET; 
    ADMUX =(adc_mux&0x1f)|(1<<REFS0)|(1<<REFS1);  //参考电压为内部2.56
    SET_ADCLK_64 ;//64分频,AD时钟187.5KHz
    //ADchanel(0);
}

#pragma vector=ADC_vect
    __interrupt void adc_isr( void )
{
       temp=ADC-512;
}

//初始化通讯口
void InitCOM(void)
{
   //初始化寄存器
   UCSRA = 0x00;
   UCSRB = (1<<RXCIE)|(1<<TXCIE);  //允许发送和接收及发送和接收中断
   UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //异步操作无校验位+8位数据位+1位停止位 
   UCSRC &= 0x7f;
   UBRRH  = 0x00;
   UBRRL  = 0x77;
}

void main(void)
{
  
  InitTimer();
  init_adc();
  DDRB = 0xff;
  DDRC = 0xff;
//  InitCOM();
   _EINT; 
  while(1)
  {
       /*temp=127;
       mux=temp*temp;//temp;
       data+=mux;*/
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -