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

📄 prosignal.c

📁 超声波测距仪套件 电路图、GCC源代码资料
💻 C
字号:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/signal.h>
#include "MAIN.h"
#include "3310LCD.h"
#include "MISC.h"


SIGNAL(SIG_INPUT_CAPTURE1)
{
    static unsigned int  cappre,capcur,capfst;
    capcur=ICR1;
    switch (CAPCNT)
    {
    case 0:
        capfst=capcur;
        cappre=capcur;
        CAPCNT++;
        break;
    case 1:
    case 2:
        if (((capcur-cappre)<26)&&((capcur-cappre)>=23))
            CAPCNT++;
        else
            CAPCNT=0;
        cappre=capcur;
        break;
    case 3:
        CAP_ST =OK;
        CAPTIME=capfst;
        TIMSK &=~(1<<TICIE1); //disenable ICP
        break;
    }
}

SIGNAL(SIG_OVERFLOW1)
{
    CAP_ST=OVER;
    RUN_ST=OVER;
    TIMSK&=~(1<<TOIE1); //disenable OVF
}

SIGNAL(SIG_UART_RECV)
{
    //uart has received a character in UDR
    unsigned char c;
    c=UDR;
}
SIGNAL(SIG_INTERRUPT0)
{
    //external interupt on INT0
    MCUCR |= (1<<ISC01); //INT0电平--->降沿
    MODE_ST++;
    MODE_ST&=0x01;
}

SIGNAL(SIG_INTERRUPT1)
{
    //external interupt on INT1
    unsigned char Volt,Volt1,key;
    ADMUX=(0x60|ADCKEY);			//0x60:选择VCC参考电压 左对齐
    _delay_loop_2(400*FREQ/4);
    ADCSRA|=0x40;					//启动AD转换
    while ((ADCSRA & 0x10)==0);		//等待AD转换结束
    ADCSRA|=0x10;					//clear
    Volt=ADCL; 						//dumy
    Volt=ADCH;
    _delay_loop_2(100*FREQ/4);
    ADCSRA|=0x40;					//启动AD转换
    while ((ADCSRA & 0x10)==0);		//等待AD转换结束
    ADCSRA|=0x10;					//clear
    Volt1=ADCL; 					//dumy
    Volt1=ADCH;
    if (Volt!=Volt1)
        return;
    //0,23,43,59,73,85,96,105
    if      (Volt< 10)
        key=1;
    else if (Volt< 35)
        key=2;
    else if (Volt< 55)
        key=3;
    else if (Volt< 65)
        key=4;
    else if (Volt< 80)
        key=5;
    else if (Volt< 90)
        key=6;
    else if (Volt<100)
        key=7;
    else
        key=8;
    if (key==3)
        GAIN+=10;
    if (key==4)
        GAIN++;
    if (key==5)
        BLANK++;
    if (key==6)
        BLANK--;
    if (key==7)
        GAIN--;
    if (key==8)
        GAIN-=10;
}



⌨️ 快捷键说明

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