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

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

QQ登錄

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

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

用單片機(jī)串口2去測(cè)試紅外hx1838的按鍵值,但是為什么在電腦上不顯示

[復(fù)制鏈接]
ID:923440 發(fā)表于 2021-8-23 21:18 | 顯示全部樓層 |閱讀模式
求大佬幫忙看看這個(gè)程序哪里出現(xiàn)了問(wèn)題,主要是紅外按鍵再數(shù)碼管上不顯示,所以想先再串口上調(diào)通。求解答
單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include<intrins.h>

  3. #define uchar unsigned char
  4. #define uint  unsigned int


  5. #define FOSC 11059200UL
  6. #define BRT (65536 - FOSC / 9600 / 4)



  7. sfr INTCLkO = 0x8f;
  8. //#define EX2 0x10;


  9. sfr AUXR = 0x8e;
  10. sfr T2H = 0xd6;
  11. sfr T2L = 0xd7;
  12. sfr S2CON = 0x9a;
  13. sfr S2BUF = 0x9b;

  14. sfr IE2 = 0xaf;

  15. sfr P0M1 = 0x93;
  16. sfr P0M0 = 0x94;
  17. sfr P1M1 = 0x91;
  18. sfr P1M0 = 0x92;
  19. sfr P2M1 = 0x95;
  20. sfr P2M0 = 0x96;
  21. sfr P3M1 = 0xb1;
  22. sfr P3M0 = 0xb2;
  23. sfr P4M1 = 0xb3;
  24. sfr P4M0 = 0xb4;
  25. sfr P5M1 = 0xc9;
  26. sfr P5M0 = 0xca;



  27. bit busy;
  28. char wptr;
  29. char rptr;
  30. uint buffer[8];
  31. uint recv_flag=0;
  32. uint machine_step=0;
  33. uint recv_cnt=0;
  34. uint a,b,c;
  35. int s=0;
  36. uint temp;

  37. void Delay500ms();
  38. void delay_140us( void );
  39.                                                                                                                                        

  40. void Uart2Isr() interrupt 8
  41. {
  42. if (S2CON & 0x02)
  43. {
  44. S2CON &= ~0x02;
  45. busy = 0;
  46. }
  47. if (S2CON & 0x01)
  48. {
  49. S2CON &= ~0x01;
  50. buffer[wptr++] = S2BUF;
  51. wptr &= 0x0f;
  52. }
  53. }

  54. void Uart2Init()
  55. {
  56. S2CON = 0x10;
  57. T2L = BRT;
  58. T2H = BRT >> 8;
  59. AUXR = 0x14;
  60. wptr = 0x00;
  61. rptr = 0x00;
  62. busy = 0;
  63. }
  64. void Uart2Send(char dat)
  65. {
  66. while (busy);
  67. busy = 1;
  68. S2BUF = dat;
  69. }

  70. void Delay10us()                //@12.000MHz
  71. {
  72.         unsigned char i;

  73.         _nop_();
  74.         i = 2;
  75.         while (--i);
  76. }


  77. void Delay600us()                //@12.000MHz
  78. {
  79.         unsigned char i, j;

  80.         i = 2;
  81.         j = 39;
  82.         do
  83.         {
  84.                 while (--j);
  85.         } while (--i);
  86. }

  87. uchar jz;
  88. sbit IRIN =P3^6;//紅外接收頭
  89. uchar ircode[4];
  90. uchar ir_flag = 0;


  91. void ir_init(void)
  92.         {
  93.                
  94.                 IRIN = 1;//初始化紅外接收頭為1
  95.                
  96.                 INTCLkO = 0x10;//開(kāi)啟INT2為下降沿觸發(fā)

  97.                 EA = 1;

  98.         }
  99.         
  100.         
  101.         


  102. void EX2_ISR() interrupt 10//紅外中斷函數(shù)
  103.         {
  104.                 unsigned char i;
  105.                 unsigned char j;
  106.                 unsigned int cnt;
  107.                 unsigned char temp = 0;
  108.                
  109.         if(IRIN == 0)
  110.         {
  111.         //判斷9ms的高電平
  112.         cnt = 0;
  113.         while(IRIN == 0)
  114.         {
  115.                 cnt++;
  116.                 Delay10us();
  117.                 if(cnt > 1000)//超時(shí)判斷
  118.                 return ;
  119.         }
  120.         
  121.         cnt = 0;
  122.         //4.5ms
  123.         while(IRIN)
  124.         {
  125.                 cnt++;
  126.                 Delay10us();
  127.                 if(cnt > 500)//超時(shí)等待
  128.                 return ;
  129.         }
  130.         //開(kāi)始接受紅外信號(hào)
  131.         for( i = 0; i<4; i++)
  132.         {

  133.                 for( j = 0; j<8;j++)
  134.                 {
  135.                         cnt = 0;
  136.                         while(IRIN == 0)//560us
  137.                         {
  138.                                 cnt++;
  139.                                 Delay10us();
  140.                                 if(cnt > 60)
  141.                                 return ;
  142.                         }
  143.                         
  144.                         Delay600us();//延時(shí)600us判斷是高電平還是電平
  145.                         if(IRIN)
  146.                         {
  147.                                         temp |= 1<<j;//數(shù)據(jù)是從低位開(kāi)始傳輸
  148.                                         cnt = 0;
  149.                                 while(IRIN)
  150.                                 {
  151.                                         cnt++;
  152.                                         Delay10us();
  153.                                         if(cnt > 110)
  154.                                         return ;
  155.                                 }
  156.                         }        

  157.                 }
  158.                         ircode[i] = temp;
  159.                         temp = 0;
  160.         }
  161.                 Delay600us();
  162.                 if(ircode[2] != ~ircode[3])//判斷命令碼是不是接受正確
  163.                         return;        
  164.                
  165.         }
  166. //            switch(        ircode[2])   
  167. //        {
  168. //            case 0x19:jz=0;break;
  169. //                                                case 0x45:jz=1;break;
  170. //                                                case 0x46:jz=2;break;
  171. //                                                case 0x47:jz=3;break;
  172. //                                                case 0x44:jz=4;break;
  173. //                                                case 0x40:jz=5;break;
  174. //                                                case 0x43:jz=6;break;
  175. //                                                case 0x07:jz=7;break;
  176. //                                                case 0x15:jz=8;break;
  177. //                                                case 0xD9:jz=9;break;
  178. //                                                default:break;
  179. //        }

  180.       Uart2Send(ircode[2]); //把命令碼通過(guò)串口發(fā)送出去
  181.         }

  182.         

  183. void main()
  184. {
  185.         

  186.         P0M0 = 0x00;
  187. P0M1 = 0x00;
  188. P1M0 = 0x00;
  189. P1M1 = 0x00;
  190. P2M0 = 0x00;
  191. P2M1 = 0x00;
  192. P3M0 = 0x00;
  193. P3M1 = 0x00;
  194. P4M0 = 0x00;
  195. P4M1 = 0x00;
  196. P5M0 = 0x00;
  197. P5M1 = 0x00;

  198.   ir_init();
  199.         
  200.         
  201.         
  202.         
  203.         Uart2Init();
  204. IE2 = 0x01;
  205. EA = 1;

  206.         
  207.         
  208.     while(1)
  209.                 {
  210.                         
  211.                
  212. //                        if(XXX>10)
  213. //                        {
  214. //                                XXX = 0;
  215. //                                TM1637_writeCammand(0x44);
  216. //                TM1637_writeData(0xc1, SEGData[0]);
  217. //          TM1637_writeCammand(0x8a);
  218.                         
  219.                         
  220. //                        if (rptr != wptr)
  221. // {
  222. // Uart2Send(buffer[rptr++]);
  223. // rptr &= 0x0f;
  224. // }
  225.                         
  226.                         
  227.                         //        xs(jz);

  228.    }
  229.                
  230.         
  231.    }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:923440 發(fā)表于 2021-8-23 21:21 | 顯示全部樓層
這個(gè)紅外是用的nec協(xié)議的
回復(fù)

使用道具 舉報(bào)

ID:752974 發(fā)表于 2021-8-24 08:17 | 顯示全部樓層
用十六進(jìn)制數(shù)顯示看看,因?yàn)橛泻芏郃SCII是不可顯示的。
回復(fù)

使用道具 舉報(bào)

ID:923440 發(fā)表于 2021-8-24 09:25 | 顯示全部樓層
munuc_w 發(fā)表于 2021-8-24 08:17
用十六進(jìn)制數(shù)顯示看看,因?yàn)橛泻芏郃SCII是不可顯示的。

你好,怎么把接收的數(shù)據(jù)用16進(jìn)制表示
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2021-8-24 14:41 | 顯示全部樓層
51c_yang 發(fā)表于 2021-8-24 09:25
你好,怎么把接收的數(shù)據(jù)用16進(jìn)制表示

你用什么串口軟件?
回復(fù)

使用道具 舉報(bào)

ID:923440 發(fā)表于 2021-8-24 20:35 | 顯示全部樓層
lkc8210 發(fā)表于 2021-8-24 14:41
你用什么串口軟件?

STC-ISP呀
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧一区| 色婷婷综合成人av | 色视频一区二区 | 中文字幕亚洲视频 | 福利视频一区 | 亚洲成人av在线 | 精品国产免费一区二区三区演员表 | 男人的天堂视频网站 | 亚洲精品一区二区三区蜜桃久 | 亚洲欧美日韩在线一区二区 | 日本不卡免费新一二三区 | 天天色天天色 | 黄色一级视频 | 在线成人免费视频 | 另类 综合 日韩 欧美 亚洲 | 日日碰狠狠躁久久躁96avv | 国产免费一区二区三区最新6 | 国产二区精品视频 | 噜久寡妇噜噜久久寡妇 | 日韩五月天 | 黄色综合| 国产一区在线免费 | 中文字幕精品一区二区三区在线 | 日韩精品一区二区三区在线观看 | 中文字幕精品一区二区三区精品 | 免费看91| 精品自拍视频在线观看 | 日本免费在线看 | 成人av色 | 中文区中文字幕免费看 | 雨宫琴音一区二区在线 | 亚洲成人99 | 国产精品精品视频一区二区三区 | 日本精品一区二区三区在线观看视频 | 国产精品视频中文字幕 | 欧美日韩在线一区二区三区 | 午夜在线精品偷拍 | 亚洲二区在线 | 亚洲精品国产成人 | 亚洲一区免费在线 | 天天射色综合 |