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

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

QQ登錄

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

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

單片機(jī)紅外遙控解碼程序更換IO口后不能解碼,請(qǐng)教大佬們一下,在此感激不敬。

[復(fù)制鏈接]
ID:959051 發(fā)表于 2021-11-26 18:04 | 顯示全部樓層 |閱讀模式
代碼是紅外解碼程序,用的P3.2口,外部中斷0。我想更換到P5.5 外部中斷3.但是更換后就不能解碼了。請(qǐng)問(wèn)大佬們,除了更換到外部中斷3,和IO口以外,還要更改定時(shí)器嗎? 這個(gè)代碼不更改IO口是能正常使用。在STC8G1A08中使用。

單片機(jī)源程序如下:
  1. #include "IR.h"
  2. //用12M晶震
  3. unsigned char ir_flag = 0;
  4. unsigned char ircode[4]; //紅外代碼接收緩沖區(qū)
  5. unsigned int HighTime,LowTime;
  6. void IR_Init(void)
  7. {
  8.         IR_INPUT = 1;
  9. //        INTCLKO = 0x20;  //外部中斷3
  10.         IT0 = 1; //下降沿觸發(fā)
  11.         EX0 = 1; //打開(kāi)外部中斷        
  12.         AUXR &= 0x7F;
  13.         TMOD &= 0xF0;
  14.         TMOD |= 0x01; //設(shè)置T0 工作方式1
  15.         TR0 = 0;
  16.         EA = 1; //開(kāi)總中斷
  17.         
  18. }

  19. void EX0_ISR(void) interrupt 0
  20. {
  21.         ir_flag = 1;
  22.         EX0 = 0;
  23.         TH0 = 0;  //定時(shí)器清零 為定時(shí)作準(zhǔn)備
  24.         TL0 = 0;  
  25.         TR0 = 1;  //打開(kāi)定時(shí)器0 計(jì)算引導(dǎo)碼的低電平時(shí)間 9ms
  26.         while(IR_INPUT == 0);
  27.         TR0 = 0; //關(guān)閉定時(shí)器
  28.         LowTime = TH0*256+TL0; //計(jì)算低電平時(shí)間 us
  29.         if(((LowTime>8500)&&(LowTime<9500))!=1)  //大于8.5ms小于9.5ms 就是正常的,否則退出
  30.         {
  31.                 EX0 = 1;
  32.                 return;
  33.         }
  34.         TH0 = 0;  //定時(shí)器初值清零 為定時(shí)作準(zhǔn)備
  35.         TL0 = 0;  
  36.         TR0 = 1;  //打開(kāi)定時(shí)器0 計(jì)算引導(dǎo)碼的高電平時(shí)間 4.5ms
  37.         while(IR_INPUT);  //等待高電平結(jié)束
  38.         TR0 = 0;
  39.         HighTime = TH0*256+TL0; //計(jì)算高電平時(shí)間 us
  40.         if((HighTime > 4000)&&(HighTime < 5000)) //引導(dǎo)碼正常,則接收4個(gè)字節(jié)
  41.         {                                
  42.                 ir_flag = ir_read(ircode);               
  43.         }
  44.         EX0 = 1;

  45. }


  46. bit ir_read(unsigned char *pbuf)
  47. {
  48.         unsigned char i,j;
  49.         unsigned char temp = 0;

  50.                 //接收4個(gè)字節(jié)的數(shù)據(jù)
  51.                 for(i = 0;i<4;i++)
  52.                 {
  53.                         //接收一個(gè)字節(jié) 8bit
  54.                         for(j=0;j<8;j++)
  55.                         {
  56.                                 temp = temp >> 1;
  57.                                 TH0 = 0;
  58.                                 TL0 = 0;
  59.                                 TR0 = 1;
  60.                                 while(IR_INPUT == 0);
  61.                                 TR0 = 0;
  62.                                 LowTime = TH0*256+TL0; //數(shù)據(jù)的低電平時(shí)間 載波的時(shí)間
  63.                                 
  64.                                 TH0 = 0;
  65.                                 TL0 = 0;
  66.                                 TR0 = 1;
  67.                                 while(IR_INPUT);
  68.                                 TR0 = 0;
  69.                                 HighTime = TH0*256+TL0; //高電平時(shí)間 us
  70.                                 
  71.                                 if((LowTime < 360)||(LowTime > 680))
  72.                                         return 0;
  73.                                 if((HighTime > 500)&&(HighTime < 600))
  74.                                         temp = temp & 0x7f; //0111 1111
  75.                                 if((HighTime > 1500)&&(HighTime < 1800))
  76.                                         temp = temp | 0x80; //1000 0000
  77.                         }
  78.                         pbuf[i] = temp;
  79.                         temp = 0;
  80.                 }
  81.                 if((pbuf[0]+pbuf[1]) == 255)  //校驗(yàn)數(shù)據(jù)正確性
  82.                         if((pbuf[2]+pbuf[3]) == 255)
  83.                                 return 1;               
  84.                
  85.                 return 0;
  86. }
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-11-26 18:53 | 顯示全部樓層
主程序呢? 著代碼不用主程序的么??

換到 P5.5的話, 主程序里記得要加:
P5M0 = 0;
P5M1 = 0;
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2021-11-26 19:10 | 顯示全部樓層
188610329 發(fā)表于 2021-11-26 18:53
主程序呢? 著代碼不用主程序的么??

換到 P5.5的話, 主程序里記得要加:

主程序里面設(shè)置了雙向口輸出P5M0 = 0;
P5M1 = 0;
回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2021-11-26 21:03 | 顯示全部樓層
沒(méi)有把更換到外部中斷3的程序貼出來(lái),不好解答,只要按說(shuō)明書(shū)配置好INIT3的觸發(fā)方式和中斷號(hào),應(yīng)該是沒(méi)有問(wèn)題的
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2021-11-26 21:19 | 顯示全部樓層
csmyldl 發(fā)表于 2021-11-26 21:03
沒(méi)有把更換到外部中斷3的程序貼出來(lái),不好解答,只要按說(shuō)明書(shū)配置好INIT3的觸發(fā)方式和中斷號(hào),應(yīng)該是沒(méi)有問(wèn) ...

外部中段3就是前面注釋了那句。INTCLKO = 0x20;  //外部中斷3  這個(gè)就是開(kāi)啟外部中段3,然后之前的是外部中斷0, 外部中段0有兩句,就是IT0 = 1;EX0 = 1;我就是把這兩句注釋了,換成INTCLKO = 0x20;換了后就不行了。IO口也都配置了 是準(zhǔn)雙向口。定時(shí)器沒(méi)動(dòng)。不知道這個(gè)是什么原因。
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2021-11-26 21:20 | 顯示全部樓層
本帖最后由 guoqiang881245 于 2021-11-26 21:28 編輯
csmyldl 發(fā)表于 2021-11-26 21:03
沒(méi)有把更換到外部中斷3的程序貼出來(lái),不好解答,只要按說(shuō)明書(shū)配置好INIT3的觸發(fā)方式和中斷號(hào),應(yīng)該是沒(méi)有問(wèn) ...

外部中段3 為什么就一句呢,外部中斷0 和1 都有單獨(dú)的開(kāi)關(guān)。
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2021-11-26 21:21 | 顯示全部樓層
guoqiang881245 發(fā)表于 2021-11-26 21:19
外部中段3就是前面注釋了那句。INTCLKO = 0x20;  //外部中斷3  這個(gè)就是開(kāi)啟外部中段3,然后之前的是外部 ...

我沒(méi)有配置中段號(hào) 我暈 ,大意了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99精品久久久 | 91丨国产| 亚洲色图网址 | 91视频在线观看 | 国产激情偷乱视频一区二区三区 | www成人免费 | 亚洲福利一区二区 | 日韩中文一区二区三区 | 日韩欧美一二三区 | 免费毛片网 | 91久久国产综合久久 | 中文字幕日韩一区 | 午夜影院在线观看 | 黄色大片免费观看 | 国久久 | 国产成人精品一区二区在线 | 欧美一区二区三区 | 日韩精品在线免费 | 成人欧美一区二区 | 精品久久久久久亚洲综合网站 | 成人午夜激情 | 亚洲国产精品久久人人爱 | 久久久www | 日韩在线欧美 | 欧美久久一区二区三区 | 一区二区三区国产好 | 中文字幕 在线观看 | 亚洲成人日韩 | 免费一区二区三区 | 欧美成人免费电影 | 久久毛片 | 日本五月婷婷 | 欧美精品一区二区免费视频 | 久久久久一区二区三区四区 | 九色综合网| 91精品国产91久久久久久 | 欧美日韩成人网 | 日韩在线视频观看 | av在线成人 | 中文字幕男人的天堂 | 日韩精品一区二区三区中文字幕 |