精華區beta Electronics 關於我們 聯絡資訊
※ 引述《flg (廢人君)》之銘言: : 請問一下,我目前打算使用8051來設計下列開關 : 電路圖:http://www.wretch.cc/album/show.php?i=flg&b=4&f=1231617596&p=4 : 開關動作圖:http://www.wretch.cc/album/show.php?i=flg&b=4&f=1231617593&p=1 : 目前有向別人請教,決定使用華邦的W78E516B外接40M HZ石英震盪器來達成, : 但是程式方面有些問題,我目前有看到一個範例: : #include "reg51.h" : delay10ms(int); : void main() : { : while(1) : { : char i = 0; : P1 = i; : delay10ms(10); : P1 = ~i; : delay10ms(10); : } : void delay10ms(int time) : { : int i,j; : for (i=0;i<t;i++) : for(j=0;j<120;j++) : ; : } : 請問要達到同步控制8個開關的動作,該怎麼修改上述程式來達成我需要的目的呢? : 因為本人非就讀相關科系,所以看的真的是一頭霧水,相關書籍上也似乎找不到相近的 : 範例,因此懇請各位幫幫忙,非常感謝!! 如果不把周邊電路當成記憶體的話。 先定義幾個要用的開關。假設接在Port1 0~7 還有 Port2 的 0 即Vpm接P2_0 其他的由圖片往下分別對應P1_0~P1_7 #include "reg51.h" //這行看情況啦... void delay(long); int main() { //Initial Chip //我記得W78有register要設定。會影響Clock... //在這邊先設定一下。(我沒有Spec.可以看Spec.後加上) //Initial Port P1=0x10; P2_0=0x01; delay(n);//n是一個數字。 while(true) { //其他寫法可以用旋轉指令。 //我不確定這樣一點點時間差會不會有影響。 //如果有影響要改變設計方法 //---res/oc--- P1=0x2f; P2_0=0x01; delay(n); // P1=0x1e; delay(n); // P1=0x1c; delay(n); // P1=0x18; delay(n); //---sense--- P2_0=0; P1=0x90; delay(m);//這邊時間看起來m好像是n的四倍長?? //---feedb--- P1=0x10; delay(m); } } void delay(long T) { //這裡面寫的延遲與MCU設定與震盪器有關。 //T要算一下。 //形式大概是 long x; for(x=0;x<T;x++)//T是一個要給定的數字。 ; } -- http://www.wretch.cc/album/genovia 徵求專長機器視覺與聽覺的朋友 ^.~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.33.147 ※ 編輯: genovia 來自: 140.129.33.147 (08/01 12:36)
flg:多謝,我會去嘗試看看,再次感謝幫忙^^ 08/03 20:15