| 
  |||||||||||
| 技術(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 欄目:單片機 | 
我想的方法是每一個通道用一個8位的變量進行計數(shù),然后再每一通道進行分別判斷和計數(shù),但是這樣我覺得24個通道很繁瑣,大家有沒有什么好方法,用C51。  | 
  
| 2樓: | >>參與討論 | 
| 作者: 2shift 于 2006/8/4 10:20:00 發(fā)布:
         繁瑣的東西有時候很好用  | 
  |
| 3樓: | >>參與討論 | 
| 作者: yeool 于 2006/8/4 10:58:00 發(fā)布:
         11 我想的是大家有什么好方法實現(xiàn),像我這樣做的話每一次掃描的時間也比較長。  | 
  |
| 4樓: | >>參與討論 | 
| 作者: hexiaoxiao 于 2006/8/4 13:02:00 發(fā)布:
         好象沒什么好方法 為什么掃描十次呢?  | 
  |
| 5樓: | >>參與討論 | 
| 作者: yeool 于 2006/8/4 13:37:00 發(fā)布:
         回樓上 抗干擾啊,當(dāng)連續(xù)10次值不變時便認為是正確的讀數(shù)  | 
  |
| 6樓: | >>參與討論 | 
| 作者: yeool 于 2006/8/4 17:11:00 發(fā)布:
         我寫了一個,大家看看有沒有更簡潔的方法 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; } } } }  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |