下面这程序是我按照书中的例子改写的按键状态机,编译时一直过不去,困恼了好久,请大家帮帮忙,指出问题。下面是程序
#include"button.h"
#include"pic.h"
unsigned char keyportstatus;
enum keyscan
{
keystatus0=0x00,
keystatus1=0x01,
keystatus2=0x02,
}keyscanstatus;
void keyinit()
{
TRISC=0XFF;
// TRISC= 0b1111 1111 全部为输入 RC5 RC6 RC7 为按键 其余空闲设为输入
PORTC=0XFF; //全部输入高电平
// PORTC=0b1111 1111
};
void keyprogram()
{
unsigned char keyscancan;
while(1)
{
keyportstatus=PORTC; //1111 1111
if(keyportstatus&0xff!=1)
{
// delayms(10);
// keyportstatus=PORTC;
switch(keyscanstatus)
case (keystatus0):
{
if(keyportstatus!=0xff)
keyscancan=keystatus1;
}
break;
case keystatus1:
{
if(keyportstatus==0x7f);
if(keyportstatus==0xbf);
if(keyportstatus==0xdf);
};
break;
case keystatus2:
{
if(keyportstatus!=0xff)
keyscancan=keystatus0;
};
break;
};
};
};
编译时出现
Executing: "D:\xuexi\pic\HT-PICC)\HI-TECH Software\PICC\9.83\bin\picc.exe" --pass1 E:\lesson\project\keystaues\SRC\ddisplay.c -q --chip=16F723 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Executing: "D:\xuexi\pic\HT-PICC)\HI-TECH Software\PICC\9.83\bin\picc.exe" --pass1 E:\lesson\project\keystaues\SRC\lesson9.c -q --chip=16F723 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Executing: "D:\xuexi\pic\HT-PICC)\HI-TECH Software\PICC\9.83\bin\picc.exe" --pass1 E:\lesson\project\keystaues\SRC\button.c -q --chip=16F723 -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error [246] E:\lesson\project\keystaues\SRC\button.c; 37.16 case label not in switch
Error [246] E:\lesson\project\keystaues\SRC\button.c; 46.16 case label not in switch
********** Build failed! **********
我不知道case 为什么会不对????
|