最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請大家?guī)臀蚁胍幌牒玫乃惴?/h1>

作者:yeool 欄目:單片機
請大家?guī)臀蚁胍幌牒玫乃惴?br>是這樣的,我用3片74HC240擴展了24通道的數(shù)字輸入口。我怕外部輸入有干擾,所以我想了這樣一個方法,我每隔n毫秒對輸入口進行掃描,當(dāng)連續(xù)10次掃描某一通道的值不變時便認為是正確的讀數(shù)。
   我想的方法是每一個通道用一個8位的變量進行計數(shù),然后再每一通道進行分別判斷和計數(shù),但是這樣我覺得24個通道很繁瑣,大家有沒有什么好方法,用C51。


2樓: >>參與討論
2shift
繁瑣的東西有時候很好用
 
3樓: >>參與討論
yeool
11
我想的是大家有什么好方法實現(xiàn),像我這樣做的話每一次掃描的時間也比較長。

4樓: >>參與討論
hexiaoxiao
好象沒什么好方法
為什么掃描十次呢?

5樓: >>參與討論
yeool
回樓上
抗干擾啊,當(dāng)連續(xù)10次值不變時便認為是正確的讀數(shù)

6樓: >>參與討論
yeool
我寫了一個,大家看看有沒有更簡潔的方法
uint8 xdata PORT_DIO0 _at_ ADDR_DIO0;
uint8 xdata PORT_DIO1 _at_ ADDR_DIO1;
uint8 xdata PORT_DIO2 _at_ ADDR_DIO2;
uint8 xdata PORT_DIO3 _at_ ADDR_DIO3;

uint8  Dio_in_Data0;
uint8  Dio_in_Data1;
uint8  Dio_in_Data2;
uint8  Dio_in_Data3;

uint8  IoInTimer[24];
uint8  code  SHIELD[8]=  {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};


void IoIn(void){
     uint8 InData;
     uint8 i;

     InData = PORT_DIO0;
     for(i=0;i<8;i++){
         if (((Dio_in_Data0^InData) & SHIELD[i]) == 0){
               IoInTimer[i]=0;
         }
         else{
               IoInTimer[i]++;
               if(IoInTimer[i]>10){
                  Dio_in_Data0^=SHIELD[i];
                  IoInTimer[i]=0;  
               }    
         }
     }

     InData = PORT_DIO1;
     for(i=0;i<8;i++){
         if (((Dio_in_Data1^InData) & SHIELD[i]) == 0){
               IoInTimer[i+8]=0;
         }
         else{
               IoInTimer[i+8]++;
               if(IoInTimer[i+8]>10){
                  Dio_in_Data1^=SHIELD[i];
                  IoInTimer[i+8]=0;  
               }    
         }
     }

      InData = PORT_DIO2;
     for(i=0;i<8;i++){
         if (((Dio_in_Data2^InData) & SHIELD[i]) == 0){
               IoInTimer[i+16]=0;
         }
         else{
               IoInTimer[i+16]++;
               if(IoInTimer[i+16]>10){
                  Dio_in_Data2^=SHIELD[i];
                  IoInTimer[i+16]=0;  
               }    
         }
     }

      

}

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請問哪位知道keilc的這個警告什么意思?
幫我推薦幾款集成片上A/D的單片機,51系列的,謝謝
請教一個C51中位操作的問題。
怎么解決PCF8583時鐘芯片的誤差?
一個驅(qū)動繼電器的問題!
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號