久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1596|回復: 1
打印 上一主題 下一主題
收起左側

編譯錯誤error C141: syntax error near '=', expected '__asm'

[復制鏈接]
跳轉到指定樓層
樓主
ID:1109192 發表于 2024-3-10 11:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有沒有大佬幫忙看一下怎么解決

單片機源程序如下:
#include <reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
sbit KEY_OPEN = P3^3; //引腳定義
sbit KEY_CLOSE = P3^5;

sbit LED_GREEN = P2^1;
sbit LED_RED = P2^2;

sbit BUZZER = P2^0;

#define BUZZER_ON (BUZZER = 0)
#define BUZZER_OFF (BUZZER = 1)

sbit SHAKE_PIN = P1^1; //震動傳感器
sbit HC_SR501 = P1^0; //人體活動傳感器
sbit RELAY_LOCK = P2^3; //電磁鎖


bit g_irFlag = 0; //紅外接收標志,收到一幀正確數據后置1
unsigned char g_irCode[4];

unsigned char refreshFlag = 0; //更新顯示標志
unsigned char setFlag = 0; //設置參數標志
bit lockFlag = 1; //鎖的狀態標志
bit monitorFlag = 0; //監控標志
bit alarmFlag = 0; //報警標志

unsigned char time500msCnt = 0;
unsigned char time500msCnt2 = 0;

bit oldPinState = 0;
bit nowPinState = 0;

char dis0[16]; //定義顯示區域臨時存儲數組

void CheckKey(void);
void CheckBluetooth(void);
void Timer1_Init(void); //定時器初始化

void main(void)
{
    IR_INPUT = 1;      110.c(49): error C141: syntax error near '=', expected 'hdata'   ,110.c(49): error C141: syntax error near '=', expected '__asm'

    Timer1_Init();
    IR_Init();
    Uart_Init();
    LCD_Init();   //初始化液晶
    DelayMs(200); //延時有助于穩定
    LCD_Clear();  //清屏

    LCD_DispStr(0, 0, "    Welcome!    ");
    DelayS(1);
    LCD_DispStr(0, 0, "   Waiting...   ");
    DelayS(5);

    err_num = GSM_Init(); //GSM初始化

    DelayMs(10);
    if (gsm_init_flag) //初始化完成
    {
        err_num = GSM_Text_Mode(); //GSM 設置Text模式
    }
    DelayMs(10);
    if (gsm_config_flag)
    {
        err_num = GSM_Delete_Sms("1"); //刪除短信1
    }
    DelayMs(10);
    if (!(gsm_init_flag || gsm_config_flag || gsm_delete_flag)) // AT命令報錯
    {
        BUZZER_ON;
        LCD_DispStr(0, 0, " Init Err Num  ");
        LCD_WriteData((int)err_num+'0');
        DelayS(1);
        BUZZER_OFF;
    }
    else
    {
        LCD_DispStr(0, 0, "    Init OK!    ");
    }

    DelayS(3);

    EEPROM52_Init(); //初始化電話號碼
    LCD_DispStr(0, 0, "     Status     ");

    while (1) //主循環
    {
        gsm_receive_process(); //gsm接收處理

        if (lockFlag == 1) //已上鎖
        {
            LED_RED = 0;
            LED_GREEN = 1;
            RELAY_LOCK = 1; //關閉鎖
            if (alarmFlag == 0)
            {
                if (HC_SR501 == 0 && SHAKE_PIN == 0) //有人且震動
                    monitorFlag = 1;

                if (monitorFlag == 1) //進入監控狀態
                {
                    if (time500msCnt >= 10 && time500msCnt <= 20) //進入監控模式后的5s~10s,持續監測
                    {
                        if (HC_SR501 == 0 && SHAKE_PIN == 0) //再次檢測到有人且震動
                        {
                            alarmFlag = 1;
                            time500msCnt = 0;
                            BUZZER_ON;
                            LCD_DispStr(0, 1, "    Warning!    ");
                            GSM_Send_Sms(phone1, "Please pay attention to your car!");
                            DelayMs(10);
                        }

                    }
                    else if (time500msCnt > 20) //超過10s沒檢測到
                    {
                        monitorFlag = 0; //退出監控
                        time500msCnt = 0;
                    }
                }
                else
                {
                    time500msCnt = 0;
                    BUZZER_OFF;
                }
            }
            else //報警模式
            {
                if (time500msCnt >= 120) //響鈴1分鐘退出報警模式
                {
                    alarmFlag = 0;
                }
            }
        }
        else
        {
            LED_RED = 1;
            LED_GREEN = 0;
            alarmFlag = 0;
            monitorFlag = 0;
            RELAY_LOCK = 0; //打開鎖
            BUZZER_OFF;

        }

        if (refreshFlag == 1) //刷新界面
        {
            refreshFlag = 0;
            TR1 = 0;

            if (lockFlag == 1) //已上鎖
            {
                if (alarmFlag == 0)
                {
                    if (monitorFlag == 1) //進入監控狀態
                    {
                        time500msCnt++;
                    }
                    else
                    {
                        time500msCnt = 0;
                        LCD_DispStr(0, 1, "      Lock      ");
                    }
                }
                else //報警模式
                {
                    time500msCnt++;
                }
            }
            else
            {
                LCD_DispStr(0, 1, "      Open      ");
                if (time500msCnt2 > 0)
                {
                    time500msCnt2--;
                }
                else
                {
                    RELAY_LOCK = 0; //關閉鎖
                    LED_RED = 0;
                    LED_GREEN = 1;
                    lockFlag = 1;
                }
            }

            TR1 = 1;
        }

        CheckKey();       //檢測按鍵
    }
}

void CheckKey(void)
{
    static unsigned char rekey = 0;
    if ((KEY_OPEN == 0) || (KEY_CLOSE == 0)) //檢測到按鍵按下
    {
        DelayMs(10); //小抖動
        if (rekey == 0)
        {
            if (KEY_OPEN == 0) //檢測是否按下
            {
                rekey = 1;
                lockFlag = 0;
                time500msCnt2 = 20; //開鎖20*500ms=10s
            }
            else if (KEY_CLOSE == 0) //
            {
                rekey = 1;
                lockFlag = 1;
            }

        }
    }
    else
    {
        rekey = 0; //防止重復檢測到按鍵
    }

    if (g_irFlag == 1 && g_irCode[2] == IRCodeMap[0][0])
    {
        lockFlag = 0;
        g_irFlag = 0;
        time500msCnt2 = 20; //開鎖20*500ms=10s
    }
    else if (g_irFlag == 1 && g_irCode[2] == IRCodeMap[2][0])
    {
        lockFlag = 1;
        g_irFlag = 0;
    }
}


/**************************************************************************************************
*************************************紅外解碼定時器程序********************************************
**************************************************************************************************/
//外部中斷解碼程序_外部中斷0
void Ext0_Interrupt(void) interrupt 0
{

    unsigned char i, j;
    unsigned char byt;
    unsigned int time;

    time = IR_GetLowTime();

    if ((time < 7833) || (time > 8755))
    {
        IE0 = 0;
        return;
    } //找到啟始碼

    time = IR_GetHighTime();

    if ((time < 3686) || (time > 4608)) //時間判定范圍為4.0~5.0ms,
    {                                   //超過此范圍則說明為誤碼,直接退出
        IE0 = 0;
        return;
    }
    //接收并判定后續的4 字節數據
    for (i = 0; i < 4; i++) //循環接收4 個字節
    {
        for (j = 0; j < 8; j++) //循環接收判定每字節的8 個bit
        {
            //接收判定每bit 的560us 低電平
            time = IR_GetLowTime();
            if ((time < 313) || (time > 718)) //時間判定范圍為340~780us,
            {                                 //超過此范圍則說明為誤碼,直接退出
                IE0 = 0;
                return;
            }
            //接收每bit 高電平時間,判定該bit 的值
            time = IR_GetHighTime();
            if ((time > 313) && (time < 718)) //時間判定范圍為340~780us,
            {                                 //在此范圍內說明該bit 值為0
                byt >>= 1;                    //因低位在先,所以數據右移,高位為0
            }
            else if ((time > 1345) && (time < 1751)) //時間判定范圍為1460~1900us,
            {                                        //在此范圍內說明該bit 值為1
                byt >>= 1;                           //因低位在先,所以數據右移,
                byt |= 0x80;                         //高位置1
            }
            else //不在上述范圍內則說明為誤碼,直接退出
            {
                IE0 = 0;
                return;
            }
        }
        g_irCode[ i] = byt; //接收完一個字節后保存到緩沖區
    }
    g_irFlag = 1; //接收完畢后設置標志
    IE0 = 0;    //退出前清零INT0 中斷標志
}
/**************************************************************************************************
***************************************************************************************************
**************************************************************************************************/


/*------------------------------------------------
                    定時器初始化子程序
------------------------------------------------*/
void Timer1_Init(void)
{
    TMOD &= 0x0F; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
    TMOD |= 0x10; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
    TH1 = (65536 - 18432) / 256; //重新賦值 20ms
    TL1 = (65536 - 18432) % 256;
    EA = 1;  //總中斷打開
    ET1 = 1; //定時器中斷打開
    TR1 = 1; //定時器開關打開
}
/*------------------------------------------------
                定時器中斷子程序
------------------------------------------------*/
void Timer1_Interrupt(void) interrupt 3
{
    static unsigned char time20ms  = 0;
    TH1 = (65536 - 18432) / 256; //重新賦值 20ms
    TL1 = (65536 - 18432) % 256;
    time20ms++;

    if (time20ms >= 25)
    {
        refreshFlag = 1;
        time20ms = 0;
    }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2024-3-10 14:54 | 只看該作者
IR_INPUT沒有定義。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线免费 | 午夜影院操 | 国产日韩av一区二区 | 羞羞的视频免费观看 | 亚洲午夜视频在线观看 | 天堂一区二区三区 | 亚洲国产一区在线 | 日韩成人影院在线观看 | 狠狠色综合网站久久久久久久 | 艹逼网 | 天天天天操 | 麻豆久久久久久 | 亚洲 欧美 综合 | 欧美一区二区三区久久精品视 | 色男人的天堂 | 欧美成人影院在线 | 午夜影院在线观看 | 久久尤物免费一区二区三区 | 亚洲国产自产 | 国产精品久久久久久久久久久久 | 国产激情在线 | 国产精品一区二区欧美黑人喷潮水 | 精品久久99| 国产精品成人国产乱一区 | 亚洲欧美中文字幕 | 亚洲欧洲在线观看视频 | 99视频免费在线 | 99精彩视频 | 九色视频网 | 天天艹| 国产精品久久久久久二区 | 日本不卡一区 | av免费网址| 欧美成人免费在线视频 | 玖玖在线免费视频 | 中文字幕国产精品视频 | 韩日av在线 | 欧美久久久久久 | 精品视频在线观看 | 中文精品视频 | 成人精品鲁一区一区二区 |