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

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

QQ登錄

只需一步,快速開始

搜索
查看: 1660|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)任意IO解碼5104紅外碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:592337 發(fā)表于 2023-4-14 17:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. void infrared_5104(void);
  2. void infrared_task(void);

  3. #define        infrared_io        P42

  4. #define        user_code        0x0d

  5. #define        decode_ok        infrared5104_struct.decode_ok
  6. #define        state_old        infrared5104_struct.state_old
  7. #define        wait_rest        infrared5104_struct.wait_rest
  8. #define        bit_num            infrared5104_struct.bit_num

  9. struct{
  10.         unsigned char decode_ok:1;
  11.         unsigned char state_old:1;
  12.         unsigned char wait_rest:1;
  13.         unsigned char bit_num:4;
  14. }infrared5104_struct;

  15. unsigned char infrared_count,infrared_5104_buf;

  16. void infrared_5104(void)
  17. {//置于125us定時(shí)器中斷中執(zhí)行
  18.         if(wait_rest)
  19.         {
  20.                 if(infrared_io == 1)
  21.                 {
  22.                         ++infrared_count;
  23.                         if(infrared_count >= 200)
  24.                         {
  25.                                 infrared_count = 0;
  26.                                 bit_num = 0;
  27.                                 wait_rest = 0;
  28.                         }
  29.                 }
  30.                 else
  31.                 {
  32.                         infrared_count = 0;
  33.                 }
  34.                 return;
  35.         }
  36.         if(infrared_io == 0 && infrared_count < 16)
  37.         {
  38.                 infrared_count++;
  39.         }
  40.         if(state_old != infrared_io)
  41.         {
  42.                 state_old = infrared_io;
  43.                 if(state_old == 1)
  44.                 {//判斷低電平計(jì)數(shù)
  45.                         if(infrared_count >= 2 && infrared_count <= 13)
  46.                         {
  47.                                 infrared_5104_buf <<= 1;
  48.                                 infrared_5104_buf &= 0xfe;
  49.                                 if(infrared_count >= 8)
  50.                                 {//bit1
  51.                                         infrared_5104_buf |= 0x01;
  52.                                 }
  53.                                 bit_num++;
  54.                                 if(bit_num == 4)
  55.                                 {
  56.                                         infrared_5104_buf &= 0x0f;
  57.                                         if(infrared_5104_buf != user_code)
  58.                                         {//用戶碼
  59.                                                 wait_rest = 1;
  60.                                         }
  61.                                 }
  62.                                 else if(bit_num == 12)
  63.                                 {
  64.                                         decode_ok = 1;
  65.                                         wait_rest = 1;
  66.                                 }
  67.                         }
  68.                         else
  69.                         {
  70.                                 wait_rest = 1;
  71.                         }
  72.                 }
  73.                 infrared_count = 0;
  74.         }
  75. }

  76. void infrared_task(void)
  77. {
  78.         if(decode_ok)
  79.         {
  80.                 decode_ok = 0;
  81.         }
  82. }


復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
17740048467 + 12 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:255559 發(fā)表于 2023-4-15 08:42 | 只看該作者
以前用過5204解碼,想學(xué)習(xí)一下這個(gè)程序,是不是代碼不全?
回復(fù)

使用道具 舉報(bào)

板凳
ID:592337 發(fā)表于 2023-4-26 11:28 | 只看該作者
hurbocn 發(fā)表于 2023-4-15 08:42
以前用過5204解碼,想學(xué)習(xí)一下這個(gè)程序,是不是代碼不全?

這就是全部代碼。因?yàn)槲疫@邊經(jīng)常用那種OTP的1K,空間跟RAM很少,所以才寫了這個(gè)。能達(dá)到解碼需求,同時(shí)耗費(fèi)的資源盡量少即可。總共用了3個(gè)RAM。但是這種寫法會(huì)略微多點(diǎn)ROM。如果RAM足夠就可以把結(jié)構(gòu)體里那些變量換成全局變量,這樣占用ROM就會(huì)減少,占用CPU時(shí)間也更少。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久午夜精品福利一区二区 | aaa一区 | 神马福利| 91av入口| 欧美激情精品久久久久 | 天天操 夜夜操 | 久久大香| 天天干天天爱天天 | 草久久久| 日韩欧美久久精品 | 日韩成人在线视频 | 人人九九精 | 91伊人网 | 国产精品美女久久久久aⅴ国产馆 | 国产高清在线精品一区二区三区 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 一区二区三区高清 | 日韩高清中文字幕 | 午夜在线小视频 | 国产高清一区二区三区 | 国产一区二区三区网站 | 色播av| 天天躁日日躁狠狠很躁 | 五月婷婷色 | 欧美1级 | 久久久国产精品一区 | 日韩一区二区三区在线观看视频 | 国产精品久久久久久久久 | 成人精品在线观看 | 亚洲黄色av | 国产激情综合五月久久 | 欧美一区不卡 | 国产欧美一区二区三区在线播放 | 精品av | 2020亚洲天堂 | 日韩三区在线观看 | 欧美不卡网站 | 99久久精品免费看国产高清 | 99亚洲国产精品 | 日本中出视频 | 久久久成 |