為何switch裡P2的值沒有進去 |
缺席
|
air0214
一般會員 發表:4 回覆:5 積分:1 註冊:2009-11-17 發送簡訊給我 |
#include <regx51.h> /* 載入 8051 相關暫存器含括檔 */
sbit a = P0^1; /* 定義P0.1接腳 */ sbit b = P0^2; /* 定義P0.2接腳 */ sbit c = P0^3; /* 定義P0.3接腳 */ sbit d = P0^4; /* 定義P0.4接腳 */ /*----------------------------*/ void delay(unsigned int count)/* 延遲副程式 */ { unsigned int i,j; for(i=0;i } /*----------------------------*/ void main() /* 主程式 */ { unsigned char keyin=0xff; P0_1=0; P0_2=0; P0_3=0; P0_4=0; while(1) { keyin=P2; switch(keyin) { case 0x01: a=1; b=0; c=1; d=1; delay(1000); a=0; b=1; c=1; d=1; delay(1000); a=1; b=1; c=0; d=1; delay(1000); a=1; b=1; c=1; d=0; delay(1000); break; case 0x02: a=1; b=0; c=1; d=1; delay(900); a=0; b=1; c=1; d=1; delay(900); a=1; b=1; c=0; d=1; delay(900); a=1; b=1; c=1; d=0; delay(900); break; case 0x03: a=1; b=0; c=1; d=1; delay(800); a=0; b=1; c=1; d=1; delay(800); a=1; b=1; c=0; d=1; delay(800); a=1; b=1; c=1; d=0; delay(800); break; case 0x04: a=1; b=0; c=1; d=1; delay(700); a=0; b=1; c=1; d=1; delay(700); a=1; b=1; c=0; d=1; delay(700); a=1; b=1; c=1; d=0; delay(700); break; case 0x05: a=1; b=0; c=1; d=1; delay(600); a=0; b=1; c=1; d=1; delay(600); a=1; b=1; c=0; d=1; delay(600); a=1; b=1; c=1; d=0; delay(600); break; case 0x06: a=1; b=0; c=1; d=1; delay(500); a=0; b=1; c=1; d=1; delay(500); a=1; b=1; c=0; d=1; delay(500); a=1; b=1; c=1; d=0; delay(500); break; case 0x00: a=1; b=1; c=1; d=1; default: break; } } } 為何感覺P2的值都沒法傳給P0 編輯記錄
air0214 重新編輯於 2009-11-28 20:47:14, 註解 無‧
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
照你的寫法
while(1) { keyin=P2; switch(keyin) { …..... } } 的寫法loop是不會結束的,難道你因此判別p2的值沒給? 此外,有一個更大的問題,你的p2值是在中斷的程序上被給與的嗎? 若不是 interrupt routine裡給與,那p2永遠沒機會被指定任意的值,因為process一直在loop… 很怪…
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
foreman
高階會員 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
大大:
我猜應改成如下 keyin=~P2; switch(keyin) { case 1: .......... break; case 2: .......... break; case 4: .......... break; case 8: .......... break; case 16: .......... break; case 32: .......... break; case 64: .......... break; case 128: .......... break; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |