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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3053|回復: 0
打印 上一主題 下一主題
收起左側

新得不能再新的新手問題,在哪里手插入判斷?

[復制鏈接]
跳轉到指定樓層
樓主
ID:29383 發表于 2013-2-12 21:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

我是一新手,從網上找到一程序,如下:

  1. [br]1 /*------------------------------------------------------------*- [br]2 紅外收發.C [br]3 ------------------------------------------------------------ [br]4 遙控器測試 [br]5 -*------------------------------------------------------------*/ [br]6 [br]7 #include <reg52.h> [br]8 [br]9 // --- 紅外接收一體化輸出口 ---------------------------------- [br]10 sbit IR_Out = P3^2; [br]11 bit START_Flag = 0; [br]12 bit BOOT_REPEATING_CODE_Flag = 0; [br]13 unsigned char DATA[4] = {0}; [br]14 bdata unsigned char TEMP_BIT; [br]15 [br]16 sbit B0 = TEMP_BIT^0; [br]17 sbit B1 = TEMP_BIT^1; [br]18 sbit B2 = TEMP_BIT^2; [br]19 sbit B3 = TEMP_BIT^3; [br]20 sbit B4 = TEMP_BIT^4; [br]21 sbit B5 = TEMP_BIT^5; [br]22 sbit B6 = TEMP_BIT^6; [br]23 sbit B7 = TEMP_BIT^7; [br]24 [br]25 // --- 有無遙控信號判斷函數 ---------------------------------- [br]26 bit START_Judge(); [br]27 [br]28 // --- 連發碼判斷函數 ---------------------------------------- [br]29 bit BOOT_REPEATING_CODE_Judge(); [br]30 [br]31 // --- "0"和"1"識別 ------------------------------------------ [br]32 bit H_L_LEVEL_Judge(); [br]33 [br]34 // --- 串口初始化 -------------------------------------------- [br]35 void UART_Initial(); [br]36 [br]37 void DELAY_Us(unsigned int Us) [br]38 { [br]39     unsigned int x; [br]40     for(x = 0; x <= (Us/200-1); x++); [br]41 } [br]42 void DELAY_Ms(unsigned int Ms) [br]43 { [br]44     unsigned int x,y; [br]45     for(x = 0; x <= (Ms-1); x++) [br]46     { [br]47         for(y = 0; y <= 120; y++); [br]48     } [br]49 } [br]50 [br]51 void main() [br]52 { [br]53     unsigned char i; [br]54     UART_Initial(); [br]55     IR_Out = 1; [br]56 [br]57     while(1) [br]58     {         [br]59         START_Flag = START_Judge(); [br]60         BOOT_REPEATING_CODE_Flag = BOOT_REPEATING_CODE_Judge(); [br]61         if ( START_Flag && !BOOT_REPEATING_CODE_Flag ) [br]62         {             [br]63             for(i =0;i <4; i++) [br]64             {                 [br]65                 B0 = H_L_LEVEL_Judge(); [br]66                 B1 = H_L_LEVEL_Judge(); [br]67                 B2 = H_L_LEVEL_Judge(); [br]68                 B3 = H_L_LEVEL_Judge(); [br]69                 B4 = H_L_LEVEL_Judge(); [br]70                 B5 = H_L_LEVEL_Judge(); [br]71                 B6 = H_L_LEVEL_Judge(); [br]72                 B7 = H_L_LEVEL_Judge();                                 [br]73                 DATA[i] = TEMP_BIT; [br]74             } [br]75             for(i =0;i <4; i++) [br]76             { [br]77                 SBUF = DATA[i]; [br]78                 while( TI == 0 ); [br]79                 TI = 0; [br]80             } [br]81         }     [br]82          [br]83                 } [br]84     } [br]85 [br]86 void UART_Initial() [br]87 { [br]88     SCON = 0x50;             // SCON: 模式 1, 8-bit UART, 使能接收 [br]89 [br]90     TMOD |= 0x20;             // TMOD: timer 1, mode 2, 8-bit reload [br]91 [br]92     TH1 = 0xFD;             // TH1: reload value for 9600 baud @ [br]93                             // 11.0592MHz [br]94     TR1 = 1;                 // TR1: timer 1 run [br]95 [br]96     EA = 0;                 // 關閉總中斷 [br]97     ES = 0;                 // 關閉串口中斷 [br]98 } [br]99      [br]100 [br]101 bit START_Judge() [br]102 { [br]103     bit TEMP_Flag = 1; [br]104     unsigned char i = 0; [br]105 [br]106 //在正常無遙控信號時,一體化紅外接收頭輸出是高電平,程序一直在循環。 [br]107 while ( IR_Out == 1); [br]108 [br]109     //重復10次,目的是檢測在6876~8352微秒內如果出現高電平就退出解碼程序 [br]110     for(i =0;i <9; i++) [br]111     { [br]112         DELAY_Us(800);        // 測試實際延時約為764~928us [br]113         if ( IR_Out == 1 ) [br]114         { [br]115             TEMP_Flag = 0; [br]116             break; [br]117         } [br]118     } [br]119      [br]120     return TEMP_Flag; [br]121 } [br]122 [br]123 bit BOOT_REPEATING_CODE_Judge() [br]124 { [br]125     bit TEMP_Flag = 1; [br]126     while( IR_Out == 0 ) ;    // 等待高電平避開9毫秒低電平引導脈沖 [br]127 [br]128     DELAY_Ms(1);            // 測試實際延時約為1.007ms [br]129     DELAY_Ms(1);            // 測試實際延時約為1.007ms [br]130     DELAY_Us(200);            // 0.086ms [br]131     DELAY_Us(200);            // 0.086ms     [br]132     DELAY_Us(200);            // 0.086ms [br]133                             // 共計2.272ms     [br]134 [br]135     if( IR_Out == 0 ) [br]136     { [br]137         TEMP_Flag = 1;        // 是連發碼 [br]138     } [br]139     else [br]140     { [br]141         TEMP_Flag = 0;        // 不是連發碼,而是引導碼 [br]142     } [br]143     return TEMP_Flag; [br]144 } [br]145 bit H_L_LEVEL_Judge() [br]146 { [br]147     while( IR_Out == 0 );    // 等待地址碼第一位的高電平信號 [br]148     DELAY_Us(800);            // 測試實際延時約為764~928us [br]149     if ( IR_Out == 1) [br]150     { [br]151         DELAY_Ms(1);        // 測試實際延時約為1.007ms [br]152         return 1; [br]153     } [br]154     else [br]155     { [br]156         return 0; [br]157     } [br]158 }
復制代碼

 

 

以上代碼能順利解出我手頭所有遙控器的遙控碼,且無重復值;

問題是,我在什么地方加入代碼,只判斷第三字節,且能實現如下功能:

第一次按一個鍵,代碼可以產生一個動作;再按這個鍵,代碼可以產生另外的動作。。。。。高手迅速指點

 

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视视频在线观看入口直接观看 | 亚洲欧美久久 | 97精品一区二区 | 国产精品久久久久婷婷二区次 | 久久久久久中文字幕 | 国产精品久久一区 | 国产黄a一级 | 亚洲一区欧美 | 黄色精品 | 欧美一区二区三区免费在线观看 | 一区二区精品在线 | 人人cao| 91精品久久久久久久久中文字幕 | 羞羞视频在线观看 | 亚洲视频在线播放 | 香蕉视频在线播放 | 国产精品久久久乱弄 | 亚洲免费一区二区 | 黑人巨大精品欧美一区二区免费 | 91原创视频 | 久草网站 | 国产亚洲一区二区在线观看 | 在线观看国产视频 | 欧美一区二区三区大片 | 亚洲国产精品99久久久久久久久 | 久久精品国产一区二区 | 精品国产精品三级精品av网址 | 国产精品a一区二区三区网址 | 成人精品一区二区三区四区 | 二区三区av | 2019天天干天天操 | 日韩国产在线观看 | 国产精品久久久久无码av | 国内自拍视频在线观看 | 91看片网站| 9999国产精品欧美久久久久久 | 水蜜桃久久夜色精品一区 | 特级黄一级播放 | 国产二区精品视频 | 在线观看国产 | 欧美精品啪啪 |