作者l1l1l1l1 (怪獸)
看板ASM
標題[問題] AT89S51 keil c 的語法問題 switch case
時間Sat Sep 15 20:52:16 2012
不好意思我想問一下
有關
AT89S51 keil c 的語法問題
目前在學switch case的語法
我用整個8bit PORT 0當輸入
下面的程式是沒問題的
switch (P0)
{
case 0xFF:
{
P1=0XF0;
}
break;
case 0xFE:
{
P1=0X0F;
}
break;
}
但若改port 0.7只有一個bit當輸入的話(如下)
下面的程式是有問題的
switch (P0_7)
{
case 1:
{
P1=0XF0;
}
break;
case 0:
{
P1=0X0F;
}
break;
}
compiler就過不去了
他說switch expression has illeagl type
想問一下如果只想用一個bit來做迴圈判斷式的話
可以做到嗎?
謝謝
--
◣ ◢ HEY~~~HEY~~~CHAAAAARLIE~!
。。。。。
◢ ▁ ◣
⊙ ⊙ 1
http://ppt.cc/Mvip
⊙ .◣
▼▼▼▼ 2
http://ppt.cc/Waty
ㄟ
◥ ㄧ◤
\▲▲▲▲ 3
http://ppt.cc/Vk@J
φ ◢ . \ . δ
./ㄨ \\/ˊ◥▄▄◤
\|/ㄑ ( ︶ ˋ\///\/. by Armour@joke 掐~~~~~力 掐~~~~~力
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.205.245
1F:→ wasidada:#define P0_7 P0^7 09/15 23:52
啊咧 小弟程式基礎差 看不太懂 不好意思
→
kdjf:用case 0x1, 0x0呢? 09/16 09:44
我試試...不行耶 似乎問題是出在 switch (P0_7)這行
※ 編輯: l1l1l1l1 來自: 123.193.205.245 (09/16 13:17)
※ 編輯: l1l1l1l1 來自: 123.193.205.245 (09/16 13:19)
2F:推 WolfLord:bit是擴充變數,不能用在case裡面,組語裡面bit也不能索引 09/16 20:09
3F:→ Deltaguita:不愧是前輩 直接道出問題點 09/16 20:35
4F:→ Deltaguita:所以建議你改成這樣 09/16 20:36
5F:→ Deltaguita:char x; 09/16 20:36
6F:→ Deltaguita:x=P0^7; 09/16 20:36
7F:→ Deltaguita:switch(x){ 09/16 20:36
8F:→ Deltaguita: case 1: 09/16 20:37
9F:→ Deltaguita: P1=x; break; 09/16 20:37
10F:→ Deltaguita: case 2: 09/16 20:38
11F:→ Deltaguita: P1=0X0f; break; 09/16 20:38
12F:→ Deltaguita:} //CASE裡面我隨便打的 看你自己的需求 09/16 20:39
13F:→ Deltaguita:CASE2 我不小心多按了一次 幫我修掉 感謝 09/16 20:40
成功了!!XDDDDDDDDDD Deltaguita謝謝你
14F:→ narcissusli:用char x的話,不就跟P0沒兩樣了嗎? 這段用asm寫如何? 09/16 23:21
這段可以用~~~
※ 編輯: l1l1l1l1 來自: 123.193.205.245 (09/16 23:33)
15F:→ ksmrt0123:typecast成char就行了 switch((char)P)_7) 09/16 23:40
16F:→ ksmrt0123:keil C的 ^ 只在sbit宣告時是定義bit位置 09/16 23:42
17F:→ ksmrt0123:訂正: switch((char)P0_7) 09/16 23:42
謝謝m(_"_)m
→
Deltaguita:恩 要改成x=P0_7才對 XD 09/17 00:50
※ 編輯: l1l1l1l1 來自: 123.193.205.245 (09/18 20:42)