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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

大佬們,求教下應廣單片機的編程

[復制鏈接]
跳轉到指定樓層
樓主
ID:1138032 發表于 2024-11-29 13:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有沒有懂應廣單片機433解碼的大佬,幫忙改下小弟的代碼芯片是lgs152,接收芯片是rr285
#include        "extern.h"



#define         IR_KEY1                        0x61
#define         IR_KEY2                        0x68
#define         IR_KEY3                        0x66
#define         IR_KEY4                        0x62
#define         IR_KEY5                        0x65
#define         IR_KEY6                        0x64

#define         IR_LOCK     0X01    //接收鎖定
#define         IR_DOWN     0X02    //接收完成
#define         IR_UP              0X04    //按鍵釋放


LED_OUT        =>        PA.7
RF        =>        PA.0

Byte Timer_100us;
Byte js_1s;
Byte fg_500ms,fg_1s;
Byte fg_05s;
Byte fg_05s_old;
Byte LED_ON;
Byte LED_ON_CNT;


Byte Ir_Code;
Byte Ir_Status;
Byte Ir_Rx_Buf[3] = {0, 0, 0};

Byte Test_Buf[3] = {0x51, 0xAA, 0x46};

BIT fg_Rec_Start;
Byte QF_Fun(Byte dat)
{
        Byte i=8,t=0;
        Byte res = 0;
        while(i--)
        {
                res <<= 1;
                t = dat & 1;
                res |= t;
                dat >>= 1;
        }
        return res;
}

void IR_Receive() //100us
{
        static Word Ir_H_Time = 0;
        static Word Ir_L_Time = 0;
        static Byte Ir_Bit_Cnt = 0;
        if(RF)
        {
                Ir_H_Time++;
                Ir_L_Time = 0;
                if((Ir_Status & IR_LOCK) && (Ir_H_Time >= 500))        //50ms
                {
                        Ir_Status &= ~IR_LOCK;
                        Ir_Status |= IR_UP;
                        fg_Rec_Start = 0;
                }

                if(Ir_H_Time >= 500){
                        Ir_H_Time = 500;
                        fg_Rec_Start = 0;
                }
        }
        else
        {
                if(fg_Rec_Start == 0){
                        Ir_L_Time++;
                        if((Ir_L_Time>=100) && (Ir_L_Time<=130))        //起始碼
                        {
                                Ir_L_Time = 0;
                                Ir_Bit_Cnt = 0;
                                fg_Rec_Start = 1;
                                Ir_Rx_Buf[0] = 0;
                                Ir_Rx_Buf[1] = 0;
                                Ir_Rx_Buf[2] = 0;
                        }
                }
                else{
                        if(Ir_H_Time)
                        {
                                if(!(Ir_Status&IR_LOCK))
                                {
                                        Ir_Rx_Buf[Ir_Bit_Cnt >> 3] >>= 1;
                                        if((Ir_H_Time>=10) && (Ir_H_Time<=13))                //邏輯1
                                        {
                                                Ir_Rx_Buf[Ir_Bit_Cnt >> 3] |= 0x80;
                                        }
                                       
                                        Ir_Bit_Cnt++;
                                        if(Ir_Bit_Cnt >= 24)
                                        {
                                                Ir_Bit_Cnt = 0;
                                                fg_Rec_Start = 0;
                                                
                                                Ir_Rx_Buf[0] = QF_Fun(Ir_Rx_Buf[0]);
                                                Ir_Rx_Buf[1] = QF_Fun(Ir_Rx_Buf[1]);
                                                Ir_Rx_Buf[2] = QF_Fun(Ir_Rx_Buf[2]);

                                                //用戶碼和操作碼都正確
                                                if((Ir_Rx_Buf[0] == 0x89) && (Ir_Rx_Buf[1] == 0xDC))
                                                {
                                                        Ir_Code = Ir_Rx_Buf[2];
                                                        if((Ir_Code == IR_KEY1) || (Ir_Code == IR_KEY2) || (Ir_Code == IR_KEY3) || (Ir_Code == IR_KEY4) || (Ir_Code == IR_KEY5) || (Ir_Code == IR_KEY6))
                                                        {
                                                                Ir_Status |= IR_DOWN | IR_LOCK;
                                                                Test_Buf[0] = Ir_Rx_Buf[0];
                                                                Test_Buf[1] = Ir_Rx_Buf[1];
                                                                Test_Buf[2] = Ir_Rx_Buf[2];

                                                                Ir_Rx_Buf[0] = 0;
                                                                Ir_Rx_Buf[1] = 0;
                                                                Ir_Rx_Buf[2] = 0;

                                                                LED_ON = 1;
                                                                fg_05s = 1;
                                                                fg_05s_old = 1;
                                                                LED_ON_CNT = 0;
                                                                js_1s = 0;
                                                        }                                                                                                                                
                                                }               
                                        }
                                }
                                
                        }
                }
                Ir_H_Time = 0;
        }
        PAC        |=        0B1111_1110;        //PA0 : RF_IN
        PAPH =        0B1000_0001;
}


void LED_Blink(byte cnt)
{
        LED_OUT = 1;
        if(fg_05s){
                LED_OUT = 0;
        }

        if(fg_05s_old != fg_05s){
                fg_05s_old = fg_05s;
                if(!fg_05s){
                        LED_ON_CNT++;
                        if(LED_ON_CNT >= cnt){
                                LED_ON_CNT = 0;
                                LED_ON = 0;
                        }
                }
        }
}




void   Timer2_Init(void)
{
        tm2ct = 0;
        tm2b = 4;
        $ TM2C IHRC,Disable,Period;
        $ TM2S 8bit,/64,/5;
        INTRQ.TM2 = 0;
        INTEN.TM2 = 1;
        ENGINT;
}


void        FPPA0 (void)
{
        .ADJUST_IC        SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V,Init_RAM;

        PAC        =        0B1111_1110;        //PA0 : RF_IN
        PAPH=        0B1000_0001;
        LED_OUT = 1;

        Timer2_Init();
        while (1)
        {
                if(LED_ON){
                        if(Ir_Code == IR_KEY1){
                                LED_Blink(1);
                        }
                        else if(Ir_Code == IR_KEY2){
                                LED_Blink(2);
                        }
                        else if(Ir_Code == IR_KEY3){
                                LED_Blink(3);
                        }
                        else if(Ir_Code == IR_KEY4){
                                LED_Blink(4);
                        }
                        else if(Ir_Code == IR_KEY5){
                                LED_Blink(5);
                        }
                        else if(Ir_Code == IR_KEY6){
                                LED_Blink(6);
                        }
                }
                else{
                        LED_OUT = 1;
                        LED_ON_CNT = 0;
                }
        }
}

void        Interrupt (void)
{
        pushaf;

        if(Intrq.TM2)
        {        
                //TM2 Trig 周期:100us
                Timer_100us++;
                if(Timer_100us>=200)
                {
                        Timer_100us        =        0;

                        js_1s++;
                        if(js_1s == 25){
                                if(fg_05s)        fg_05s = 0;
                                else                fg_05s = 1;

                                fg_500ms = 1;
                        }
                        else if(js_1s >= 50){
                                js_1s = 0;
                                fg_1s = 1;
                                if(fg_05s)        fg_05s = 0;
                                else                fg_05s = 1;
                        }
                }

                IR_Receive();

                //-------------------
                Intrq.TM2 = 0;
        }

        popaf;
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1091035 發表于 2025-2-20 17:01 | 只看該作者
大佬你這個程序是沒有配對部分的嗎
回復

使用道具 舉報

板凳
ID:1138032 發表于 2025-3-29 11:51 | 只看該作者
Mrjork 發表于 2025-2-20 17:01
大佬你這個程序是沒有配對部分的嗎

沒有,這是我之前用來測試的程序
回復

使用道具 舉報

地板
ID:879809 發表于 2025-4-1 15:12 | 只看該作者
這么冷門的芯片上網大概率是問不到答案的,找原廠FAE咨詢吧。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲91| 免费精品在线视频 | 欧美日韩福利视频 | 国产视频亚洲视频 | 九九精品视频在线 | 在线只有精品 | 日本精品一区二区三区视频 | 亚洲精品在线观看视频 | 毛片黄片免费看 | 国产精品久久 | 欧美aⅴ | 嫩草一区二区三区 | 日本亚洲精品 | 久久久久久久久综合 | 欧美一区二区在线播放 | 高清一区二区三区 | 免费v片 | 久久久久久久久久久久91 | 国产最新网址 | 色视频成人在线观看免 | 亚洲精品二三区 | 久久精品视频12 | 狠狠ri | 九九导航| 91在线免费视频 | 亚洲人人 | 久久99精品久久久久久国产越南 | 国产二区在线播放 | 欧美精品日韩精品国产精品 | 久久久九九九九 | 超碰人人在线 | 日干夜操| 亚洲国产一区二区三区在线观看 | 国产高清精品在线 | 丁香六月伊人 | 中文字幕国产视频 | 日韩国产精品一区二区三区 | 亚洲欧洲精品一区 | 激情五月婷婷综合 | 亚洲444eee在线观看 | 日韩精品视频一区二区三区 |