架構修改一下後..可以用74373做簡單的IO延伸輸出...透過共用匯流排傳輸PWM的資料...8051內部則運用TIMER+暫存器orRAM做虛擬計時器...每次把所有暫存器的值讀出、運算、回存和輸出計時終了訊號 
 |        ˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍˍ 
 |-------|74373 陣列  |第二組LATCH  |≡ 
8|PWM BUS|          |同步化所有PWM  |≡ 多組PWM同步輸出 
0|-------| 預先拴鎖     |的信號       |≡ 
5|==控制信號==|ˍˍˍˍˍˍˍˍˍ|ˍˍˍˍˍˍˍˍˍˍ|≡ 
1| 
 | 
 | 
 
 
 
Start 
↓ 
掃瞄N個計時暫存器@記憶體 
(Load Data[N]→DJNZ Data,PWM_CHG→SCAN_NEXT↑Load Data[N+1]) 
↓ 
PWM_CHG 
(determine PWM_Data#N→Latch PWM status to first 74373 arrays→Load Data preset[N]→if(N==Last data)→↓PWM_Latch_Complete→else↑) 
↓ 
PWM_Latch_Complete 
(Output status→Latch second 74373 arrays→Output current PWM status) 
↓ 
Restart PWM cycles 
  
不過這個方式需要更多處理器時間...所以比較適合高時脈的處理器...至少要40Mhz以上...優點是所有輸出都是同步執行...並且所有計數器都處於計時模式,不浪費處理器時間,最高可達1/2內部RAM輸出(HI、LO各佔一組Byte)。 
 
華邦有出一款高速51: W78E51-40 ,應該蠻適合做這個應用...不行的話還有PIC的MCU,最高速可以達到40MIPS...輸出可到數Mhz...>w< 
 
[ 本帖最後由 omegaCD 於 2006-6-3 06:56 編輯 ] |