看板 C_and_CPP 關於我們 聯絡資訊
小弟剛接觸8051不久, 想寫一個主副幹道紅綠燈控制的作業, 一般正常的紅綠燈控制都沒問題, 但是在裡面我設定一個按鈕要迫使主幹道在綠燈時強制變黃燈時, 用break想跳出while迴圈, 但是怎麼寫感覺都沒有跳出迴圈 可以請各位大大幫幫小弟我嗎 下面附上程式碼 #include <REG51.h> sbit LED1=P1^0;//主幹道綠燈 sbit LED2=P1^1;//主幹道黃燈 sbit LED3=P1^2;//主幹道紅燈 sbit LED4=P3^0;//副幹道紅燈 sbit LED5=P3^1;//副幹道綠燈 sbit LED6=P3^2;//副幹道黃燈 sbit PB1= P1^3;//行人專用按鈕 void DelayX1ms(unsigned int ); //宣告函數 main() //全程式開始 { while(1) //重複執行{}內的動作 { P1=P3=0xff; PB1=1; LED1=LED4=0; if(PB1==0)break ; DelayX1ms(10000); LED1=1; LED4=LED2=0; DelayX1ms(2000); LED4=LED2=1; LED5=LED3=0; DelayX1ms(3000); LED5=1; LED6=LED3=0; DelayX1ms(2000); LED6=LED3=1; } LED1=1; //跳脫迴圈執行 LED4=LED2=0; DelayX1ms(2000); LED4=LED2=1; LED5=LED3=0; DelayX1ms(3000); LED5=1; LED6=LED3=0; DelayX1ms(2000); LED6=LED3=1; } //函數名稱:DelayX1ms //輸入值:所欲延遲的毫秒數 //回傳值:無 void DelayX1ms(unsigned int count) //延遲count*1ms函數 { unsigned int i,j; for(i=0;i<count;i++) { for(j=0;j<114;j++) { } } } 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.101.145
MasterChang:狀態機是您的好朋友....按鈕事件請用中斷來做... 11/28 23:23
ty910204:不好意思 請問那是什麼 11/28 23:47
MasterChang:google 是你的好朋友-->8051+紅綠燈+狀態機+int0 中斷 11/29 01:23
mengda:不會狀態機那就再while(加PB1判斷式囉) 11/29 01:27
kingstong:用ASM寫啦,這才是真男人 11/29 13:32
ty910204:ASM是什麼 ?? 請問有什麼方法可以讓程式強制跳到主幹道 11/29 14:46
ty910204:黃燈的時候? 11/29 14:46
er230059:不知道是什麼的東西 你可以用Google 11/29 15:24
MOONRAKER:某k又來亂了 11/29 16:07
MOONRAKER:還不去搞清楚狀態機 一天都快過了 真是[無入而不自得] 11/29 16:08
kingstong:為什麼我查了狀態機,感覺很像一種VIRTUAL MACHINE?! 11/29 16:34
MOONRAKER:某k還在亂 11/29 16:41
MOONRAKER:感覺很virtual跟virtual machine是兩回事情,不要亂扯 11/29 16:42
kingstong:剛剛查了一下,KEIL C只能編成BINARY檔,無法在X86系統上 11/29 16:51
kingstong:跑,而且是燒入在8051裡,非常低階的程式語言 11/29 16:53
johnpage:asm+1 11/29 17:29
MOONRAKER:還在亂 寫8051當然用8051適用的compiler 干低階屁事 11/29 18:18
MOONRAKER:你k某不是獨自開發出SMARTPHONE嗎 還在這裡幹嘛 11/29 18:19
kingstong:那你倒是說說8051有幾個程式語言能支援並且將寫好的程式 11/29 19:43
kingstong:燒入到8051裡?!你知道PLC嗎?!用過LABVIEW寫過程式嗎?! 11/29 19:45
kingstong:你會寫COMPILER嗎?!我指的是可以編譯完成後又可燒入在 11/29 19:47
kingstong:8051裡,在KEIL C出現前本來就是用ASM去編寫8051的程式 11/29 19:48
kingstong:你根本沒學過自動化控制吧?! 11/29 20:10
MasterChang:好跳tone的...8051-->PLC-->LabVIEW-->自動控制 11/29 23:36
MOONRAKER:你k某還在亂 快回去獨自開發SMARTPHONE啦 11/30 13:26
kingstong:我和柏油共同開發的手機只怕你不敢拿,爆炸是基本功能 11/30 14:10
kingstong:炸死你全家 11/30 14:10
s25g5d4:這可以告了吧... 11/30 22:55
sunneo:k屎東,拜託你去安份的學習,這樣很難看 12/12 04:23