找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1594|回復(fù): 2
收起左側(cè)

大佬們幫忙看看這個(gè)紅外模塊的單片機(jī)程序?qū)?

[復(fù)制鏈接]
ID:923440 發(fā)表于 2021-8-27 11:20 | 顯示全部樓層 |閱讀模式

這是hx1838紅外處理程序,請(qǐng)問(wèn)哪里有問(wèn)題?

void ir_init(void)
        {

                IRIN = 1;//初始化紅外接收頭為1

                INTCLkO = 0x10;//開(kāi)啟INT2為下降沿觸發(fā)

                EA = 1;

        }





void  EX2_ISR() interrupt 10//紅外中斷函數(shù)
        {
                unsigned char i;
                unsigned char j;
                unsigned int cnt;
                unsigned char temp = 0;

        if(IRIN == 0)
        {
        //判斷9ms的高電平
        cnt = 0;
        while(IRIN == 0)
        {
                cnt++;
                Delay10us();
                if(cnt > 1000)//超時(shí)判斷
                return ;
        }

        cnt = 0;
        //4.5ms
        while(IRIN)
        {
                cnt++;
                Delay10us();
                if(cnt > 500)//超時(shí)等待
                return ;
        }
        //開(kāi)始接受紅外信號(hào)
        for( i = 0; i<4; i++)
        {

                for( j = 0; j<8;j++)
                {
                        cnt = 0;
                        while(IRIN == 0)//560us
                        {
                                cnt++;
                                Delay10us();
                                if(cnt > 60)
                                return ;
                        }

                        Delay600us();//延時(shí)600us判斷是高電平還是電平
                        if(IRIN)
                        {
                                        temp |= 1<<j;//數(shù)據(jù)是從低位開(kāi)始傳輸
                                        cnt = 0;
                                while(IRIN)
                                {
                                        cnt++;
                                        Delay10us();
                                        if(cnt > 110)
                                        return ;
                                }
                        }

                }
                        ircode[ i] = temp;
                        temp = 0;
        }
                Delay600us();
                if(ircode[2] != ~ircode[3])//判斷命令碼是不是接受正確
                        return;

        }

回復(fù)

使用道具 舉報(bào)

ID:923440 發(fā)表于 2021-8-27 11:21 | 顯示全部樓層
這里處理ircode[2]數(shù)據(jù)感覺(jué)沒(méi)有接收到為什么
回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2021-8-28 11:21 | 顯示全部樓層
在中斷里亂或多用延時(shí)或循環(huán)都是比較可怕的事。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表