作者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)