亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? radar.c

?? 倒車雷達的原理圖與源碼
?? C
字號:
/*
***************************************************************************************************
* Copyright (C),2007
* Author        : YanZhongsan
* Email         : yanzhongsan@gmail.com
* Date          : 2007-10-17
* File name     : radar.c
* Description   : Radar communication file
* Version       : V 1.0
* Others        : System use extral crystal oscillator 11.0592MHz
***************************************************************************************************
*/

/****head files****/
#include "includes.h"
#include "HT1621B.h"
#include "radar.h"
#include "key.h"

/***golbal data define*****/
volatile UCHAR_8 Radar_counter;
UCHAR_8 Radar[4];
UCHAR_8 RadarDisBuf[2];
UCHAR_8 Alarm;
UCHAR_8 SendBack=0xF0;
UCHAR_8 Radar_time;

/*
***************************************************************************************************
* Function name : Radar_communication
* Description   : Conmunication with the host,use single wire
* Note          : This function is used to receive the data from the radar host,and then send the
*               : back message
* Parameters    : None
* Returns       : None,the routine will use the golbal data Radar[4] for store the data received
* Attribute     : Public function
* Others        : None
***************************************************************************************************
*/
void Radar_communication(void)
{
    UCHAR_8 temp[4]={0xFF,0xFF,0xFF,0xFF};
    UCHAR_8 i,j;

    WDR();

    if (RADAR_LINE_IS_HIGH)
    {
        return;
    }

    SET_RADAR_IN;
    TIMER2_BEGIN;

    SET_T2_290us;
    Radar_counter=1;
    while (RADAR_LINE_IS_LOW&&Radar_counter) WDR();//等待響應條件

    if (RADAR_LINE_IS_LOW)
    {
        Back:
        TIMER2_STOP;
        TIMER1_BEGIN;
        return ;
    }

    SET_RADAR_OUT;//轉I/O口為輸出
    SET_RADAR_LOW;//拉低總線,響應同步
    DELAY_1us(64);
    SET_RADAR_HIGH;//拉高總線等待開始位
    SET_RADAR_IN;//轉I/O口為輸入

    SET_T2_70us;
    Radar_counter=1;
    while (RADAR_LINE_IS_HIGH&&Radar_counter);//等待起始位
    if (0==Radar_counter)
    {
        goto Back;
    }

    DELAY_1us(40);

    TIMER1_STOP;
    for (i=0;i<4;i++)
    {
        WDR();
        for (j=0;j<8;j++)
        {
            temp[i]<<=1;
            SET_T2_70us;
            Radar_counter=1;
            if (RADAR_LINE_IS_HIGH)
            {
                while (RADAR_LINE_IS_HIGH&&Radar_counter);
                if (0==Radar_counter)
                {
                    goto Back;
                }
                temp[i] &= 0xFE;
            }
            else
            {
                while (RADAR_LINE_IS_LOW&&Radar_counter);
                if (0==Radar_counter)
                {
                    goto Back;
                }
                temp[i] |= 0x01;
            }

            DELAY_1us(35);//如果無法通信或通信不良請調節此處
        }
    }

    i=temp[0]+temp[1]+temp[2];
    if (i!=temp[3])
    {
        goto Back;
    }

    SET_RADAR_OUT;
    SET_RADAR_HIGH;
    DELAY_1us(10);
    WDR();

    SET_RADAR_LOW;
    SET_T2_32us;
    Radar_counter=1;
    while (Radar_counter);

    j=SendBack;

    for (i=0;i<8;i++)
    {

        if (j&0x80)
        {
            SET_RADAR_LOW;
            SET_T2_32us;
            Radar_counter=1;
            while (Radar_counter);
            SET_RADAR_HIGH;
            SET_T2_32us;
            Radar_counter=1;
            while (Radar_counter);
        }
        else
        {
            SET_RADAR_HIGH;
            SET_T2_32us;
            Radar_counter=1;
            while (Radar_counter);
            SET_RADAR_LOW;
            SET_T2_32us;
            Radar_counter=1;
            while (Radar_counter);
        }
        j<<=1;
    }
    SET_RADAR_HIGH;
    SET_RADAR_IN;

    TIMER2_STOP;
    TIMER1_BEGIN;

    for (j=0;j<4;j++)
    {
        Radar[j]=temp[j];
    }
    Radar_data_trade();
    return ;
}

/*
***************************************************************************************************
* Function name : Radar_data_trade
* Description   : 雷達數據處理函數,根據接收到的數據更新報警級別以及顯示
* Note          : None
* Parameters    : None
* Returns       : None
* Attribute     : Public function
* Others        : None
***************************************************************************************************
*/
void Radar_data_trade(void)
{
    UCHAR_8 i,j,k;
    //dis[0]: bit0:T1 bit1:T2 bit2:T3 bit3:T4 bit4:T5 bit5:T6 bit6:T7 bit7:T8
    //dis[1]: bit0:T9 bit1:T10 bit2:T11 bit3:T12
    UCHAR_8 dis[2];

    WDR();

    RadarKey();

    Radar_time = 25;

    if (TESTBIT(SysFlag,Fir_Bit))
    {
        CLEARBIT(SysFlag,Fir_Bit);

        HT1621BClearAll();
    }

    if ((26<(Radar[1]&0x1F))&&(0x0F==(Radar[2]&0x0F)))
    {
        switch (Radar[0]&0x30)
        {
            case 0x00:
                SendBack = 0xCC;
                break;

            case 0x10:
                SendBack = 0xDD;
                break;

            case 0x20:
                SendBack = 0xEE;
                break;

            case 0x30:
                SendBack = 0xFF;
                break;

            default:
                SendBack = 0xCC;
                break;
        }

        if (TESTBIT(Radar[2]&0xF0,4))
        {
            HT1621BWritedata(0x02,LED_CODE[10]);//左中探頭錯誤
        }
        else
        {
            HT1621BWritedata(0x02,0x02);//左中探頭正常
        }

        if (TESTBIT(Radar[2]&0xF0,5))
        {
            HT1621BWritedata(0x04,LED_CODE[10]);//右中探頭錯誤
        }
        else
        {
            HT1621BWritedata(0x04,0x02);//右中探頭正常
        }

        if (TESTBIT(Radar[2]&0xF0,6))
        {
            HT1621BWritedata(0x00,LED_CODE[10]);//左一探頭錯誤
        }
        else
        {
            HT1621BWritedata(0x00,0x02);//左一探頭正常
        }

        if (TESTBIT(Radar[2]&0xF0,7))
        {
            HT1621BWritedata(0x06,LED_CODE[10]);//右一探頭錯誤
        }
        else
        {
            HT1621BWritedata(0x06,0x02);//右一探頭正常
        }
        return ;
    }

    i=Radar[1]&0x1F;//左邊距離
    j=Radar[2]&0x1F;//右邊距離
    (i>j)?(k=j):(k=i);


    if (k>=16)
    {
        Alarm=0;
    }
    else if (k>=10)
    {
        Alarm=3;
    }
    else if (k>=6)
    {
        Alarm=2;
    }
    else
    {
        Alarm=1;
    }

    if (TESTBIT(Radar[0],0))
    {
        //倒車數據
        if (i>=16)//左邊距離
        {
            dis[0] = 0x00;
            dis[1] = 0x00;
        }
        else if (i>=10)
        {
            dis[0] = 0x00;
            dis[1] = 0x01;
        }
        else if (i>=6)
        {
            dis[0] = 0x80;
            dis[1] = 0x01;
        }
        else
        {
            dis[0] = 0xC0;
            dis[1] = 0x01;
        }

        if (j>=16)//右邊距離
        {
            dis[0] |= 0x00;
        }
        else if (j>=10)
        {
            dis[1] |= 0x08;
        }
        else if (j>=6)
        {
            dis[1] |= 0x0C;
        }
        else
        {
            dis[1] |= 0x0E;
        }
    }
    else
    {
        //前行數據
        dis[1] = 0x00;
        if (i>=16)//左邊距離
        {
            dis[0] = 0x00;
        }
        else if (i>=10)
        {
            dis[0] = 0x04;
        }
        else if (i>=6)
        {
            dis[0] = 0x06;
        }
        else
        {
            dis[0] = 0x07;
        }

        if (j>=16)//右邊距離
        {
            dis[0] |= 0x00;
        }
        else if (j>=10)
        {
            dis[0] |= 0x20;
        }
        else if (j>=6)
        {
            dis[0] |= 0x30;
        }
        else
        {
            dis[0] |= 0x38;
        }
    }

    if (k>=26)
    {
        HT1621BWritedata(0x00,0x82);
        HT1621BWritedata(0x02,0x82);
        HT1621BWritedata(0x04,0x02);
        HT1621BWritedata(0x06,0x82);
    }
    else
    {
        HT1621BWritedata(0x00,0x80);
        HT1621BWritedata(0x02,LED_CODE[k/10]);
        HT1621BWritedata(0x04,LED_CODE[k%10]&0x7F);
        HT1621BWritedata(0x06,0x80);
    }
    HT1621BWritedata(0x18,dis[0]);
    HT1621BWritedata(0x1A,dis[1]);

    if (TESTBIT(SysFlag,Mute_Bit))
    {
        HT1621BWritedata(20,0x00);//顯示十位數,不顯示喇叭
    }
    else
    {
        HT1621BWritedata(20,0x80);//顯示十位數,顯示喇叭
    }
}
/*
***************************************************************************************************
* Function name : RadarAlarm
* Description   : 無源蜂鳴器報警
* Note          : 僅由定時器0的20ms中斷函數調用此函數
* Parameters    : const UCHAR_8 * const addr:中斷計時函數中的20ms計數器指針
* Returns       : None
* Attribute     : Spcial function just for timer0 interrupt
* Others        : None
***************************************************************************************************
*/
void RadarAlarm(const UCHAR_8 * const time_p)
{
    if (TESTBIT(Radar[0],7)&&(!TESTBIT(SysFlag,Mute_Bit)))//主機沒有語音芯片,由顯示屏蜂鳴器完成報警音提示
    {
        switch (Alarm)
        {
            case 0:
                TIMER0_STOP;
                break;

            case 1:
                TIMER0_BEGIN;
                break;

            case 2:
                if (0x00==(*time_p)%5)
                {
                    if (TIMER0_IS_RUNNING)
                    {
                        TIMER0_STOP;
                    }
                    else
                    {
                        TIMER0_BEGIN;
                    }
                }
                break;

            case 3:
                if (0x00==(*time_p)%10)
                {
                    if (TIMER0_IS_RUNNING)
                    {
                        TIMER0_STOP;
                    }
                    else
                    {
                        TIMER0_BEGIN;
                    }
                }
                break;

            case 4:
                if (0x00==(*time_p)%15)
                {
                    if (TIMER0_IS_RUNNING)
                    {
                        TIMER0_STOP;
                    }
                    else
                    {
                        TIMER0_BEGIN;
                    }
                }
                break;

            default:
                break;
        }
    }
    else
    {
        TIMER0_STOP;
    }
}

/*
***************************************************************************************************
* Function name : RadarKey
* Description   : Radar key trade
* Note          : 當主機有語音芯片時,按鍵調節主機語音,當主機沒有語音芯片時,按鍵調節屏幕報警音
* Parameters    : None
* Returns       : None
* Attribute     : Public function
* Others        : None
***************************************************************************************************
*/
void RadarKey(void)
{
    if (TESTBIT(ButtonFlag,KEY3_BIT))
    {
        ButtonFlag = 0;

        if (TESTBIT(Radar[0],7))//主機沒有語音芯片,由顯示屏蜂鳴器完成報警音提示
        {
            if (TESTBIT(SysFlag,Mute_Bit))
            {
                CLEARBIT(SysFlag,Mute_Bit);
            }
            else
            {
                SETBIT(SysFlag,Mute_Bit);
            }
        }
        else
        {
            SendBack += 0x11;

            if (SendBack<0xCC)
            {
                SendBack = 0xCC;
                SETBIT(SysFlag,Mute_Bit);//設置系統靜音標志
            }
            else
            {
                CLEARBIT(SysFlag,Mute_Bit);
            }
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本精品免费观看高清观看| 91搞黄在线观看| 国产成人免费视频网站| 99精品久久久久久| 大白屁股一区二区视频| 99久久婷婷国产综合精品| 欧美日韩高清影院| 久久久久成人黄色影片| 国产午夜精品理论片a级大结局| 亚洲视频1区2区| 免费观看91视频大全| 免费观看91视频大全| 91一区在线观看| 日韩片之四级片| 依依成人精品视频| 激情综合一区二区三区| 色婷婷久久99综合精品jk白丝| 欧美一卡2卡三卡4卡5免费| 国产精品免费人成网站| 美女视频一区在线观看| 色婷婷国产精品| 日韩一区二区三区观看| 国产精品―色哟哟| 久久电影网站中文字幕| 在线观看三级视频欧美| 精品国产伦一区二区三区观看体验| 亚洲同性gay激情无套| 老色鬼精品视频在线观看播放| 色综合天天做天天爱| 国产性天天综合网| 免费在线看一区| 色噜噜狠狠色综合欧洲selulu| 久久日韩精品一区二区五区| 偷窥少妇高潮呻吟av久久免费| 高清国产午夜精品久久久久久| 欧美一区二区在线不卡| 国产欧美1区2区3区| 久久精品国产精品青草| 欧美一区二区三区色| 亚洲午夜免费电影| 色网站国产精品| 综合av第一页| 欧洲激情一区二区| 亚洲精品欧美激情| 色婷婷国产精品| 亚洲精品免费播放| 一本久久a久久精品亚洲| 中文字幕人成不卡一区| 不卡一区二区在线| 日本一区二区三区电影| 国产精品1区2区3区| 精品久久久久一区| 国内精品国产成人| 欧美激情一区在线| 国产91露脸合集magnet| 国产精品午夜久久| 国产成人av网站| 日本一区二区电影| 99久久伊人精品| 亚洲色欲色欲www在线观看| 91麻豆免费在线观看| 亚洲美女区一区| 欧美日韩精品欧美日韩精品一| 婷婷综合在线观看| 精品久久久久久久久久久院品网 | 51精品久久久久久久蜜臀| 免费观看在线综合| 1000精品久久久久久久久| 欧美日韩国产美女| 成人午夜精品在线| 美腿丝袜在线亚洲一区| 国产精品日日摸夜夜摸av| 欧美日韩激情一区| 福利视频网站一区二区三区| 亚洲高清在线精品| 国产精品久久久久影院老司 | 91香蕉国产在线观看软件| 日韩av不卡一区二区| 成人欧美一区二区三区视频网页| 欧美另类z0zxhd电影| 成人一区在线观看| 精品亚洲porn| 亚洲国产精品自拍| 国产精品久久三| 欧美电视剧免费全集观看| 欧美综合一区二区三区| 懂色av中文一区二区三区| 美女视频黄 久久| 亚洲一区二区三区中文字幕在线| 国产欧美日产一区| 日韩精品一区二区三区中文精品| 欧洲av一区二区嗯嗯嗯啊| 丁香激情综合五月| 精品在线免费视频| 日产国产高清一区二区三区| 亚洲人成亚洲人成在线观看图片| 久久综合九色综合欧美就去吻 | 亚洲一区二区三区四区在线| 国产免费久久精品| 亚洲精品在线观| 91精品国产免费| 欧美日韩国产影片| 日本久久电影网| 99re8在线精品视频免费播放| 国产一区二区三区在线观看免费 | 亚洲欧美日韩国产中文在线| 精品国产污网站| 91精品国产乱码| 欧美区一区二区三区| 欧美性色欧美a在线播放| www.亚洲精品| 99久久国产综合精品色伊| 成人激情午夜影院| 成人国产精品视频| 成人精品视频.| 99热精品国产| 99精品国产热久久91蜜凸| 成人av午夜电影| 福利电影一区二区| 成人开心网精品视频| 成人av午夜电影| 色综合天天性综合| 91看片淫黄大片一级在线观看| 色av一区二区| 欧美精品粉嫩高潮一区二区| 69堂成人精品免费视频| 日韩欧美一二区| 久久久天堂av| 国产精品国产三级国产有无不卡| 中文字幕五月欧美| 一区二区三区四区在线免费观看| 亚洲国产中文字幕在线视频综合| 亚洲成在人线免费| 美洲天堂一区二卡三卡四卡视频| 国产在线一区二区综合免费视频| 国产精品一区二区三区99| 99视频在线观看一区三区| 色就色 综合激情| 欧美一区二区福利在线| 久久新电视剧免费观看| 中文字幕一区二区三区四区 | 亚洲丝袜自拍清纯另类| 亚洲一区二区三区在线看| 蜜桃一区二区三区四区| 国产乱码精品一品二品| 91农村精品一区二区在线| 欧美三级一区二区| 久久综合国产精品| 亚洲精品免费视频| 久久精品国产秦先生| 成人网在线免费视频| 欧美日韩精品一区二区三区蜜桃| 欧美大片一区二区三区| 亚洲欧洲国产日本综合| 日韩国产欧美在线播放| 成人国产电影网| 欧美日韩国产精品自在自线| 久久精品人人做人人爽人人| 亚洲自拍另类综合| 国产一区二区三区香蕉| 久久久精品一品道一区| 亚洲激情一二三区| 国产精品一品二品| 欧美老肥妇做.爰bbww| 欧美激情自拍偷拍| 美女mm1313爽爽久久久蜜臀| 91美女片黄在线观看| 2020国产精品久久精品美国| 亚洲综合小说图片| 国产99久久久久| 欧美电视剧在线观看完整版| 亚洲一区二区三区四区的| av一本久道久久综合久久鬼色| 欧美成人激情免费网| 天堂一区二区在线| 在线观看精品一区| 国产欧美日韩久久| 国精产品一区一区三区mba桃花| 欧美三级电影网| 亚洲女与黑人做爰| 成人av网址在线观看| 国产日韩欧美麻豆| 久久精品二区亚洲w码| 欧美浪妇xxxx高跟鞋交| 一卡二卡三卡日韩欧美| a级高清视频欧美日韩| 久久久久久久久久久久久夜| 美女视频黄免费的久久 | 欧美又粗又大又爽| 国产精品久久久久久久久动漫| 国产精品白丝jk白祙喷水网站| 日韩一区和二区| 青青青爽久久午夜综合久久午夜| 欧美性色综合网| 亚洲成人动漫一区| 8v天堂国产在线一区二区| 性做久久久久久久久| 欧美精选一区二区| 蜜桃精品视频在线| 日韩欧美资源站|