[問題] 關於8051寫紅綠燈控制的問題

看板C_and_CPP作者 (剪刀~)時間11年前 (2013/11/28 14:55), 編輯推噓8(8021)
留言29則, 9人參與, 最新討論串1/2 (看更多)
小弟剛接觸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

11/28 23:23, , 1F
狀態機是您的好朋友....按鈕事件請用中斷來做...
11/28 23:23, 1F

11/28 23:47, , 2F
不好意思 請問那是什麼
11/28 23:47, 2F

11/29 01:23, , 3F
google 是你的好朋友-->8051+紅綠燈+狀態機+int0 中斷
11/29 01:23, 3F

11/29 01:27, , 4F
不會狀態機那就再while(加PB1判斷式囉)
11/29 01:27, 4F

11/29 13:32, , 5F
用ASM寫啦,這才是真男人
11/29 13:32, 5F

11/29 14:46, , 6F
ASM是什麼 ?? 請問有什麼方法可以讓程式強制跳到主幹道
11/29 14:46, 6F

11/29 14:46, , 7F
黃燈的時候?
11/29 14:46, 7F

11/29 15:24, , 8F
不知道是什麼的東西 你可以用Google
11/29 15:24, 8F

11/29 16:07, , 9F
某k又來亂了
11/29 16:07, 9F

11/29 16:08, , 10F
還不去搞清楚狀態機 一天都快過了 真是[無入而不自得]
11/29 16:08, 10F

11/29 16:34, , 11F
為什麼我查了狀態機,感覺很像一種VIRTUAL MACHINE?!
11/29 16:34, 11F

11/29 16:41, , 12F
某k還在亂
11/29 16:41, 12F

11/29 16:42, , 13F
感覺很virtual跟virtual machine是兩回事情,不要亂扯
11/29 16:42, 13F

11/29 16:51, , 14F
剛剛查了一下,KEIL C只能編成BINARY檔,無法在X86系統上
11/29 16:51, 14F

11/29 16:53, , 15F
跑,而且是燒入在8051裡,非常低階的程式語言
11/29 16:53, 15F

11/29 17:29, , 16F
asm+1
11/29 17:29, 16F

11/29 18:18, , 17F
還在亂 寫8051當然用8051適用的compiler 干低階屁事
11/29 18:18, 17F

11/29 18:19, , 18F
你k某不是獨自開發出SMARTPHONE嗎 還在這裡幹嘛
11/29 18:19, 18F

11/29 19:43, , 19F
那你倒是說說8051有幾個程式語言能支援並且將寫好的程式
11/29 19:43, 19F

11/29 19:45, , 20F
燒入到8051裡?!你知道PLC嗎?!用過LABVIEW寫過程式嗎?!
11/29 19:45, 20F

11/29 19:47, , 21F
你會寫COMPILER嗎?!我指的是可以編譯完成後又可燒入在
11/29 19:47, 21F

11/29 19:48, , 22F
8051裡,在KEIL C出現前本來就是用ASM去編寫8051的程式
11/29 19:48, 22F

11/29 20:10, , 23F
你根本沒學過自動化控制吧?!
11/29 20:10, 23F

11/29 23:36, , 24F
好跳tone的...8051-->PLC-->LabVIEW-->自動控制
11/29 23:36, 24F

11/30 13:26, , 25F
你k某還在亂 快回去獨自開發SMARTPHONE啦
11/30 13:26, 25F

11/30 14:10, , 26F
我和柏油共同開發的手機只怕你不敢拿,爆炸是基本功能
11/30 14:10, 26F

11/30 14:10, , 27F
炸死你全家
11/30 14:10, 27F

11/30 22:55, , 28F
這可以告了吧...
11/30 22:55, 28F

12/12 04:23, , 29F
k屎東,拜託你去安份的學習,這樣很難看
12/12 04:23, 29F
文章代碼(AID): #1IbrbCLP (C_and_CPP)
文章代碼(AID): #1IbrbCLP (C_and_CPP)