娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM8單片機(jī)+EV1527無線315&433通用遙控解碼

發(fā)布者:SereneJourney最新更新時間:2021-11-12 來源: eefocus關(guān)鍵字:STM8  單片機(jī)  EV1527 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

STM8_無線315&433通用解碼


單片機(jī)程序如下:

/*

*********************************************************************************************************

*

*模塊名稱 : EV1527遙控解碼

*上升沿觸發(fā) 觸發(fā)中斷后延時一段時間后檢測引腳電平從而判斷0 1

采集上升沿觸發(fā)后第6 10 14     個振蕩周期時的引腳電平 RF98

PT2262 連續(xù)觸發(fā)是每個周期的間隔在15MS左右

EV1527   寬電平時間 500US 窄 250us 同步碼 5.7MS

*********************************************************************************************************

*/

#include "EV1527.h"

#include "led.h"

#include "tim1.h"

u8  EV1527_Status=0;                 //接收處理狀態(tài)

u8  EV1527_Receive_Count=0;          //接收數(shù)據(jù)位計(jì)數(shù)

Receive_Data  EV1527_Receive_Data[48];      //24位的脈沖

u8  EV1527_receive_ok=0;             //接收完成標(biāo)志

//u8  EV1527_gather_count=3;           //每個碼位采集3次

//u8  EV1527_code[3];                  //用來暫時存儲采集3次得到的值

//u8  EV1527_repeat;                   //重復(fù)觸發(fā)計(jì)數(shù)

u8  EV1527_check_level_bit;          //外部中斷觸發(fā)(上升沿)標(biāo)志。有外部中斷觸發(fā)后則開始檢測引腳電平是否有變化。

u16 Interval_tim_high=0;             //上升沿觸發(fā)后高電平時間

u16 Interval_tim_low=0;              //上升沿觸發(fā)后低電平時間

u8  EV1527_pin_state_buf;            //引腳定義緩存

u16 EV1527_time_out_buf;             //定時器超時時間緩存

u16 TongBuMa_low=0;

u16 a_count=0;              

bool  LearningModel=FALSE;           //學(xué)習(xí)模式

bool  INT_bit=FALSE;

// 定時器2配置函數(shù)

void EV1527_TIM1_Config(void)

{

  TIM1_TimeBaseInit(8,TIM1_COUNTERMODE_UP,50000,0); //8分頻,定時50MS,1uS的分辨率

  TIM1_ARRPreloadConfig(ENABLE);

  TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);

  TIM1_Cmd(ENABLE);//DISABLE

}

/*

    初始化

*/

void EV1527_Init()

{

          /* 輸入模式 */

    GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);                 //配置浮空輸入。

        /* 將GPIOD端口設(shè)置為下降沿觸發(fā)中斷-*/

    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//下降沿觸發(fā)。

    GPIO_Init(LED_PORTD, (LED_2|LED_3), GPIO_MODE_OUT_PP_HIGH_FAST );   

    EV1527_TIM1_Config();

}

/*

********************************************************************************

            定時器溢出中斷內(nèi)處理

********************************************************************************

*/

void EV1527_TIM_IT_Updata_Handdle(void)

{

    TIM1_SetCounter(0);

    EV1527_Status=0;

    EV1527_Receive_Count=0;

    //EV1527_repeat=0;

    //EV1527_Receive_Data=0;

    Interval_tim_low=0;   

    EV1527_time_out_buf=0;   

   // TIM1_Cmd(DISABLE);   

    TIM1_ClearITPendingBit(TIM1_IT_UPDATE);   

   

}


/*

    外部中斷觸發(fā)函數(shù)

開始接收地址碼跟數(shù)據(jù)碼

*/

void EV1527_ChuLi(void)

{      

   //for(EV1527_Receive_Count=0;EV1527_Receive_Count<48;EV1527_Receive_Count++)

  EV1527_Receive_Count=0;

  while(EV1527_Receive_Count<48)

  {   

    while((EV1527_port->IDR &EV1527_pin)&&(EV1527_Status==1));         //如果是高電平就等待  

    Interval_tim_high=TIM1_GetCounter();                               //記錄高電平時間     

    TIM1_SetCounter(0);

    EV1527_Receive_Data[EV1527_Receive_Count].Width=Interval_tim_high;

    EV1527_Receive_Data[EV1527_Receive_Count].Level=1;                 //保存到數(shù)組中                  

    EV1527_Receive_Count++;         

    while(!(EV1527_port->IDR &EV1527_pin)&&(EV1527_Status==1));       //如果是低電平就等待   

    Interval_tim_low=TIM1_GetCounter();                               //記錄高電平時間  

    TIM1_SetCounter(0);

    EV1527_Receive_Data[EV1527_Receive_Count].Width=Interval_tim_low;

    EV1527_Receive_Data[EV1527_Receive_Count].Level=0;                 //保存到數(shù)組中     

    EV1527_Receive_Count++;

    if(EV1527_Status==0)

    {

      EV1527_Receive_Count=49;//超時退出

    }

  }

  if(EV1527_Status==0)

  {

    EV1527_receive_ok=0;

    EV1527_Receive_Count=0;  

    GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);//配置上啦輸入。

    EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//下降沿觸發(fā)。

    TIM1_SetCounter(0);      

  }

  else

  {

    EV1527_receive_ok=1;

  }

}


void EV1527_Receive_Handle(void)

{   

  if(INT_bit==TRUE)

  {

    INT_bit=FALSE;  

    /* 開啟定時器 0 記錄低電平持續(xù)的時間,并檢測是否為同步碼 */     

    a_count=0;

    TongBuMa_low=0;

    EV1527_Status=1;

    while(!(EV1527_port->IDR &EV1527_pin)&&(EV1527_Status==1));   //如果是低電平就等待      

    if(EV1527_Status==TRUE) TongBuMa_low=TIM1_GetCounter();       //記錄低電平時間

    TIM1_SetCounter(0);                                           //從新計(jì)時。

    /* 檢測是否為同步碼*/

    if((TongBuMa_low>=5000)&&(TongBuMa_low<=38000))               //檢測前一個低電平時間,是否符合同步碼標(biāo)

                                                                  //是同步碼 關(guān)閉外部中斷,并開始接收地址碼跟數(shù)據(jù)碼

    {                                   

      EV1527_ChuLi();     

    }

    else                                                         //不是,則重新打開中斷,繼續(xù)檢測同步碼

    {

      EV1527_Status=0;

      EV1527_Receive_Count=0;  

      GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_PU_IT);          //配置上啦輸入。

      EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOC, EXTI_SENSITIVITY_FALL_ONLY);//下降沿觸發(fā)。

      TIM1_SetCounter(0);                                        //定時器計(jì)數(shù)值清零

    }

  }

  

}


/*

    數(shù)據(jù)處理

*/

u8 EV1527_Process()

{

  u8 EV1527_Data=0;

  

  if(EV1527_receive_ok>=1)

  {

    u8 i=0;

    u8 beishu=0;

    u8 EV1527_DataTemp[24]={0};

    u8 EV1527_addTemp_high=0;

    u8 EV1527_addTemp_low=0;

//    High_Low  Level_0,Level_1;        //電平   

    u16       Width_0,Width_1;        //寬度


    while(i<48)

    {

     // Level_0= EV1527_Receive_Data[i].Level;

      Width_0=EV1527_Receive_Data[i].Width;

      i++;

    //  Level_1= EV1527_Receive_Data[i].Level;

      Width_1=EV1527_Receive_Data[i].Width;      

      beishu=(Width_0>Width_1)?(Width_0/Width_1):(Width_1/Width_0);

      if(beishu>=2)//如果兩個寬度的倍數(shù)大于等于2說明是有效電平

      {

        EV1527_DataTemp[i/2]= (Width_0>Width_1)?1:0;

      }      

      else

      {

        i=50;

      }

      i++;

//      if(i>=46)

//      {

//        Level_0= EV1527_Receive_Data[i].Level;

//      }

    }

    if(i<49)

    {

      //解析地址

      for(i=0;i<20;i++)

      {  

        if(i<10)//解析高位  EV1527_address_high

        {

          if(EV1527_DataTemp[i]==1)        // 置一

          {

            EV1527_addTemp_high<<=1;

            EV1527_addTemp_high=EV1527_addTemp_high|0x01;                          

          }

          else if(EV1527_DataTemp[i]==0)      //置零

          {

            EV1527_addTemp_high<<=1;

          }   

        }

        else //解析低位

        {

          if(EV1527_DataTemp[i]==1)        // 置一

          {

            EV1527_addTemp_low<<=1;

[1] [2]
關(guān)鍵字:STM8  單片機(jī)  EV1527 引用地址:STM8單片機(jī)+EV1527無線315&433通用遙控解碼

上一篇:STM8S005K6單片機(jī)點(diǎn)亮流水燈程序
下一篇:STM8單片機(jī)+EV1527無線315&433通用遙控解碼程序

推薦閱讀最新更新時間:2025-06-11 15:54

STM8單片機(jī)+RC522電路原理圖+讀寫卡源代碼
基于stm8的ds1302模塊千萬別把數(shù)據(jù)寫在第3個區(qū),不然卡就鎖住了,只能寫在第2個區(qū) 電路原理圖如下: stm8單片機(jī)源碼: /* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/ #include stm8s.h #include stm8s_clk.h #include intrinsics.h #include stm8s
[單片機(jī)]
<font color='red'>STM8</font><font color='red'>單片機(jī)</font>+RC522電路原理圖+讀寫卡源代碼
STM8單片機(jī)串口發(fā)送引腳和接收引腳分開使用
在使用STM8S003單片機(jī)時,需要用到ADC采樣功能,STM8S003總共有5個ADC采樣口,但是其中兩個采樣口是和串口復(fù)用的,如果當(dāng)ADC口用,就不能用串口,如果當(dāng)串口用,就不能用ADC口。 通過芯片管腳的原理圖可以看到PD5口可以當(dāng)作模擬采樣第5通道使用,也可以用當(dāng)做串口發(fā)送口使用。PD6口可以當(dāng)做模擬采樣第6通道使用,也可以當(dāng)做串口接收口使用。 在項(xiàng)目中需要將串口當(dāng)做AD口使用,但是也需要串口向外發(fā)送監(jiān)控?cái)?shù)據(jù)。AD功能和串口功能需要同時使用,于是想到,串口只用到了發(fā)送引腳,那么能不能將串口的接收引腳當(dāng)做AD功能用。這樣PD5口作為串口發(fā)送引腳使用,PD6口作為模擬采樣第6通道使用。 先寫一個簡單的測試程序測試一
[單片機(jī)]
<font color='red'>STM8</font><font color='red'>單片機(jī)</font>串口發(fā)送引腳和接收引腳分開使用
STM8 ADC轉(zhuǎn)換模式-------帶緩存的連續(xù)模式
STM8單片機(jī)ADC支持5種轉(zhuǎn)換模式:單次模式,連續(xù)模式,帶緩存的連續(xù)模式,單次掃描模式,連續(xù)掃描模式。 連續(xù)和帶緩存的連在連 換模式中,將ADC設(shè)為連續(xù)模式,該模式是通過置位 ADC_CR1寄存器的 ADON 位來啟動的。 ● 如果緩存功能被使能(DBUF=1),那么某個選定滿數(shù)據(jù)緩存,當(dāng)緩存被填滿時,EOC(轉(zhuǎn)換結(jié)束)標(biāo)志被置位,如果EOCIE位已被置位,則會產(chǎn)生一個中斷,然后一個新的轉(zhuǎn)換自動開始。如果某個數(shù)據(jù)緩存寄存器在被讀走之前被覆蓋,OVR標(biāo)志將置1。 如果要停止連續(xù)轉(zhuǎn)換,可以復(fù)位清零CONT位來停止轉(zhuǎn)換或者復(fù)位清零ADON位來關(guān)閉ADC的電 源。 使用連續(xù)模式帶緩存功能查詢方式讀取數(shù)據(jù)代碼如下: #
[單片機(jī)]
STM8學(xué)習(xí)筆記---Modbus通信協(xié)議簡單移植
Modbus是一種串行通信協(xié)議,在工業(yè)中應(yīng)用是比較廣泛的。關(guān)于Modbus的介紹網(wǎng)上資料很多,這里就不細(xì)說了。剛開始接觸的時候看Modbus的介紹,光是協(xié)議的介紹有幾百頁,還有各種命令,各種鏈路層的應(yīng)用,看了幾天,越看越糊涂,越看越不會用。 最后在單片機(jī)上移植成功后才感覺Modbus協(xié)議沒那么復(fù)雜,如果剛開始學(xué)的時候,沒必要把Modbus協(xié)議中每個功能都去了解。就把它當(dāng)做簡單的串口協(xié)議,只使用最簡單的幾個命令就行了。熟悉之后再慢慢了解其他功能。 下面就從單片機(jī)串口通信角度去理解Modbus協(xié)議,及如何將協(xié)議移植到單片機(jī)上。 先看看Modbus的協(xié)議 從大的方面來講,協(xié)議總共由4部分組成: 地址、功能、數(shù)據(jù)、校驗(yàn)。
[單片機(jī)]
<font color='red'>STM8</font>學(xué)習(xí)筆記---Modbus通信協(xié)議簡單移植
STM8 外部中斷配置方法
簡介:STM8 外部中斷配置方法 1:引用STM8 的中斷庫 #include stm8s_exti.h 2:配置外部中斷的觸發(fā)管腳 GPIO_Init(LEDS_PORT,MB,GPIO_MODE_IN_FL_IT ); 或者 GPIO_Init(LEDS_PORT,MB,GPIO_MODE_IN_PU_IT )... 1:引用STM8 的中斷庫 #include stm8s_exti.h 2:配置外部中斷的觸發(fā)管腳 GPIO_Init(LEDS_PORT,MB,GPIO_MODE_IN_FL_IT ); 或者 GPIO_Init(LEDS_PORT,MB,GPIO_MODE_IN_PU_IT );
[單片機(jī)]
STM8 中I2C讀寫函數(shù)
void I2C_write(u8 Addr, u8 *WriteData, u8 length) { /* Send STRAT condition */ I2C_GenerateSTART(ENABLE); /* Test on EV5 and clear it */ while(!I2C_CheckEvent(I2C_EVENT_MASTER_START_SENT)); /* Send EEPROM address for write */ I2C_Send7bitAddress(Addr, I2C_DIRECTION_TX); /* Test on EV6 and clear it */ while(!
[單片機(jī)]
STM8 RAM
我關(guān)于實(shí)現(xiàn)IAP的理解,如果有誤,希望可以得到大家的斧正 1.IAP部分程序和應(yīng)用程序分開兩個項(xiàng)目編寫。 2.應(yīng)用程序部分編譯前要修改ICF文件,使其代碼安排到IAP程序區(qū)外,如0x9000 3.IAP項(xiàng)目編譯前也要修改ICF文件 a.修改代碼編譯后所在ROM中的位置,如:0x8000-0x8FFF b.按網(wǎng)友dianzidog 給出的方法,實(shí)現(xiàn)ram運(yùn)行代碼 ////////////////////////摘自網(wǎng)友dianzidog的帖子 /////////////////////////////////// icf文件里面 initialize by copy { ro section MyCod
[單片機(jī)]
今年嵌入式展,MCU開啟神仙打架
這幾天,德國Embedded World國際嵌入式展正式召開。和往年一樣,今年的嵌入式展各大MCU巨頭又開啟了神仙打架模式。 可以說,這些巨頭發(fā)布的產(chǎn)品,一個比一個夸張。 TI:小,實(shí)在是太小了 跟其他廠商的策略不一樣,德州儀器(TI)推出了一款全球最小的MCU——MSPM0C1104,進(jìn)一步擴(kuò)展了其MSPM0 MCU產(chǎn)品組合。 這款MCU沒別的,就是小,很小,非常小。其采用晶圓芯片級封裝 (WCSP) ,面積僅為 1.38mm2,相當(dāng)于一粒黑胡椒。TI稱這款MCU比業(yè)界目前最小的MCU還小38%。具體有多小呢,看下面的圖就懂了。 別看它這么小,性能也不含糊,該有的功能都有。通過TI官網(wǎng)介紹,MSPM0C110
[嵌入式]
今年嵌入式展,<font color='red'>MCU</font>開啟神仙打架
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章
隨便看看

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 合水县| 南京市| 铜川市| 松阳县| 新邵县| 荣昌县| 西平县| 平顶山市| 云林县| 云浮市| 五指山市| 辽阳市| 彭山县| 海南省| 华池县| 班戈县| 洛隆县| 疏勒县| 云龙县| 乐至县| 田林县| 博爱县| 余干县| 辽宁省| 承德县| 堆龙德庆县| 崇明县| 洛南县| 城固县| 鹤峰县| 绥芬河市| 黑龙江省| 宁蒗| 衡南县| 屏南县| 金坛市| 顺义区| 萨迦县| 安福县| 左权县| 通江县|