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

📄 init_devices.c

📁 一个倒车雷达的程序 使用的是AVR单片机。 在include.h文件里面定义 #define CPU_F 4 //4MHZ 定义外晶振的频率 #define GOOD //40K
💻 C
字号:
/**********************/
/*   初始化与中断入口  */
/**********************/
#include "include.h"
void Init_port(void)
{ 
    DDRB  = 0x3f;
    //DDRB  = 0x1f;
    PORTB = 0x00;
    
    DDRC  = 0x00;
    PORTC = 0x00;
    
    DDRD  = 0xef;
    PORTD = 0x00;
}


void Init_timer0(void)
{
    TCNT0 = 0xed;
    TCCR0A = 0x00;
    TCCR0B = 0x05; 
}


#pragma vector=TIMER0_OVF_vect
__interrupt void timer0_ovf_isr(void)
{
   TCNT0 = 0xed;
   if(BACK)
    {
     if(count_XXms) count_XXms--;
     if(TIME) TIME--;
    }
   else
    { 
      count_XXms=0;
      TIME=0;
    }
}


void Init_timer1(void)
{
    TCNT1=65329;
    TCCR1A = 0x00;
    TCCR1B = 0x00; 
}
#pragma vector=TIMER1_OVF_vect//58.5us
__interrupt void timer1_ovf_isr(void)
{
  TCNT1=65329;
  TCNT1_count++;
}

void Init_timer2(void)
{
    TCNT2 = 231; 
    TCCR2A = 0x00;
    TCCR2B = 0x00;
}

#pragma vector=TIMER2_OVF_vect
__interrupt void timer2_ovf_isr(void)
{
  RedCon++;
  RedCon1++;
}

void Init_watchdog(void)
{
    WDR();//为什么要两次呢?
    WDTCSR = 0x18;//对WDCE 和 WDE写1, 修改看门狗允许
    WDTCSR = 0x0E;// 再对WDE写1 启动看门狗关置分频系数  1秒 复位
    /*
    以下为关闭看门狗的步骤:
1. 在同一个指令内对 WDCE和 WDE 写 "1“,即使 WDE 已经为 "1“
2. 在紧接的4 个时钟周期之内对 WDE写 "0”。这会禁用看门狗。
    */
}

void init_handle(void)
{
      if(Busy) dist=buzzer;
      device_code=1;
      Sound_out;//busy设为输入
      mute(1);
      end_TG();
      key=EEPROMread(chAddress);
      if(key>3){key=3;}//初始化:无论有没有返回的显示器都是语音+锋鸣
      data_8[0]=data_8[1]=data_8[2]=data_8[3]=26;
      DDRB  = 0x1f;
      PORTB = 0X00;            
}


uchar BACK_scan(void)
 {
   if(BACK)
    {
      delayms(10);
      if(BACK) return (1);  
    }
   return (0);
 }


void Init_devices(void)
{
    CLI();   
    Init_port();
    Init_watchdog();
    Init_timer0();
    Init_timer1();
    Init_timer2();
    MCUCR = 0x00;       

    ACSR = 0x80;      
    EIMSK = 0x00;
    EIFR = 0x00;

    TIMSK0 = 0x01; 
    TIMSK1 = 0x01; 
    TIMSK2 = 0x01; 

    PCMSK0 = 0x00; 
    PCMSK1 = 0x00; 
    PCMSK2 = 0x00;
    PCICR = 0x00;
    SEI();
}




⌨️ 快捷键说明

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