欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 會九齊的進來看看 [打印本頁]

作者: 1481509156    時間: 2024-8-26 20:09
標題: 會九齊的進來看看
有誰會寫九齊的,接私單的聊下,我這邊有幾個項目,因為不熟悉有些BUG。

作者: 藍藍小星星    時間: 2024-8-27 00:58
發(fā)出來看看
作者: 莫忠良    時間: 2024-8-27 09:46
九齊多年,你有什么問題
作者: 大麥豆    時間: 2024-8-27 11:40
有什么問題可以先發(fā)出來討論一下

作者: 1481509156    時間: 2024-8-29 11:34
九齊使用內(nèi)部1/4通道讀取電壓,參考電壓是2V,怎么得到2V時的ADC值
作者: 1481509156    時間: 2024-8-29 11:36
九齊IC為何&&都用不了?我用定時器給433解碼,接收到的32位數(shù)據(jù)都不準,因為判斷時只能用大于或小于,不能局限在一個區(qū)間內(nèi)
作者: 1481509156    時間: 2024-8-29 11:41
莫忠良 發(fā)表于 2024-8-27 09:46
九齊多年,你有什么問題

九齊用定時器給433解碼,發(fā)現(xiàn)截取到的32數(shù)值對不上。懷疑是判斷問題,問下九齊怎么操作可以&&運算,我之前用定時器同時兩個計數(shù),發(fā)現(xiàn)對時間有影響,變不準了
作者: Y_G_G    時間: 2024-8-29 13:01
1481509156 發(fā)表于 2024-8-29 11:41
九齊用定時器給433解碼,發(fā)現(xiàn)截取到的32數(shù)值對不上。懷疑是判斷問題,問下九齊怎么操作可以&&運算,我之 ...

&&這個我一直在用,并沒有發(fā)現(xiàn)什么問題呀
你首先要了解九齊的硬件資源,它可不是STC或者STM32,片上資源非常有限的,有的RAM才48個字節(jié)......,4層硬件堆棧,隨便點代碼就溢出了
作者: 1481509156    時間: 2024-8-29 15:00
Y_G_G 發(fā)表于 2024-8-29 13:01
&&這個我一直在用,并沒有發(fā)現(xiàn)什么問題呀
你首先要了解九齊的硬件資源,它可不是STC或者STM32,片上資源非 ...

我用定時器計時,用 if(TIMER >10 && TIMER <15)為啥不行?我在同一個定時器里計時兩個數(shù),它的定時時間就減少了好多,沒有什么規(guī)律。而且有臨界點。比如取8時計時可能400us,取9時有時會到1.2ms
作者: Y_G_G    時間: 2024-8-29 22:28
1481509156 發(fā)表于 2024-8-29 15:00
我用定時器計時,用 if(TIMER >10 && TIMER

九齊不是STC,片上資源是非常有限的,而且,九齊的匯編指令是精簡指令,一個簡單的C語言運算,它可能要花上幾百個時鐘來完成的
比如 %取模就很耗時間,所以,能不在中斷中處理就盡量不要在中斷中處理,特別是uS級別的中斷
你貼上完整的代碼看一下
作者: 1481509156    時間: 2024-8-30 11:43
Y_G_G 發(fā)表于 2024-8-29 22:28
九齊不是STC,片上資源是非常有限的,而且,九齊的匯編指令是精簡指令,一個簡單的C語言運算,它可能要花上幾 ...

void isr(void) __interrupt(0)
{
       
        if(INTFbits.T1IF)                                // 定時器0中斷 132 = 1MS
        {
                if(RFDecodeOK == 0)
                {
                        if(!RX_DATA)
                        {
                                IR_Time_L++;
                                IR_Time_H=0;
                                if(JumpFlag && IR_Time_L > 4)
                                {
                                        JumpFlag=0;
                                }
                        }
                        else
                        {
                                IR_Time_H++;
                                if(!JumpFlag && IR_Time_H > 4)
                                {
                                        JumpFlag=1;
                                        soft_decode();
                                        IR_Time_L=0;
                                        IR_Time_H=0;
                                }
                        }
                }       
            INTF= (unsigned char)~(C_INT_TMR1);                     // 清除T0IF標志位
        }

}
/******************************定時器配置*************************************************/
void Timer1_INIT(void)
{
        TMRH = 0;
        TMR1 = 48;                        //50us
        T1CR1 = 0x03;
        T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div4;
        INTE = 0x08;
}
/******************************中斷*************************************************/
#define K1_NUM1  0x5A          //短按
#define K1_NUM2  0xA5        //長按
#define K2_NUM1  0X55        //短按
#define K2_NUM2  0XAA          //長按

void soft_decode()                        //解碼
{
                static unsigned char RxBitCnt = 0;        //接收數(shù)據(jù)位
                static unsigned long RxData = 0;        //數(shù)據(jù)緩沖
                if(IR_State==0)               
                {
                        if((IR_Time_L >= 19) && (IR_Time < 25))
                        {
                                IR_State=1;
                                RxData=0;
                                RxBitCnt=0;
                               
                        }
                        else
                        {
                                IR_State=0;
                        }
                }
                else if(IR_State==1 && RxBitCnt < 32)                       
                {
                       
                        if((IR_Time_L > 6) && (IR_Time_L < 9))  //50us*6=300
                        {
                                RxData = RxData<<1;
                                RxBitCnt++;                       
                        }
                        else if((IR_Time_L > 11) && (IR_Time_L < 14))
                        {
                                RxData = RxData<<1;
                                RxData |=1;
                                RxBitCnt++;               
                        }
                        else
                        {
                                RxBitCnt=0;
                                IR_State=0;
                        }
                        if(IR_cnt>=32)
                        {
                                RxBitCnt=0;
                                IR_State=0;
                                RxUserCode = RxData >> 24;
                                if(RxUserCode == K1_NUM1)
                                {
                                        RFDecodeOK = 1;
                                        RX_flag = 1;
                                }
                                else if(RxUserCode == K1_NUM2)
                                {
                                        RFDecodeOK = 1;
                                        RX_flag = 2;
                                }
                                else if(RxUserCode == K2_NUM1)
                                {
                                        RFDecodeOK = 1;
                                        RX_flag = 3;
                                }
                                else if(RxUserCode == K2_NUM2)
                                {
                                        RFDecodeOK = 1;
                                        RX_flag = 4;
                                }
                        }       
                }
}
void soft_decodetask(void)
{
        static unsigned int RxTimerCnt = 0;
        if(RFDecodeOK)
        {
                RFDecodeOK = 0;
                if(RX_flag==1){LED123=0;}
                if(RX_flag==2){LED123=1;}
                if(RX_flag==3){LED123=0;}
                if(RX_flag==4){LED123=1;}       
        }
        if(RFDecodeOK)
        {
                RxTimerCnt++;
                if(RxTimerCnt >= 2000)
                {
                        RxTimerCnt=0;
                        RFDecodeOK=0;
                }
        }
       
}
作者: 1481509156    時間: 2024-8-30 11:44
Y_G_G 發(fā)表于 2024-8-29 22:28
九齊不是STC,片上資源是非常有限的,而且,九齊的匯編指令是精簡指令,一個簡單的C語言運算,它可能要花上幾 ...

大哥,匯編太古老了,我不會啊
作者: Y_G_G    時間: 2024-8-30 14:21
1481509156 發(fā)表于 2024-8-30 11:44
大哥,匯編太古老了,我不會啊

不是叫你看匯編,是告訴你工作原理
1: 進入定時器中斷之后,要馬上清除中斷標志位像這樣
if(INTFbits.T1IF)                                // 定時器0中斷 132 = 1MS
        {
           INTFbits.T1IF = 0;
           TMR1 = 48;    //如果是定時模式,還要寫入重載值
         ...........
    }

2:soft_decode();這個函數(shù),想辦法放在主函數(shù),不要放在中斷中執(zhí)行




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1