打印

求助 pic16F编程

[复制链接]
1705|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
572523392|  楼主 | 2013-3-9 23:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面这程序是我按照书中的例子改写的按键状态机,编译时一直过不去,困恼了好久,请大家帮帮忙,指出问题。下面是程序
#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 为什么会不对????

沙发
yklstudent| | 2013-3-10 07:54 | 只看该作者
本帖最后由 yklstudent 于 2013-3-10 11:18 编辑

break在括号内试试{};
这里的分号是不能有的 看来C语言基本很差啊

使用特权

评论回复
板凳
572523392|  楼主 | 2013-3-10 13:55 | 只看该作者
break怎么能在括号里呢?大哥,你看懂我的程序了没?

使用特权

评论回复
地板
yklstudent| | 2013-3-10 13:59 | 只看该作者
572523392 发表于 2013-3-10 13:55
break怎么能在括号里呢?大哥,你看懂我的程序了没?

你不懂得话 麻烦补补C语言 不想补得话 麻烦乘早改行吧 这个估计不适合你的

使用特权

评论回复
5
refee| | 2013-3-10 14:12 | 只看该作者
兄弟,switch的代码要用大括号包起来的,比如这样:

    switch (sample_rate)
    {
        case 0x00:
            if (audio_version_ID == 0x18)
                sample_rate = 44100;
            else if (audio_version_ID == 0x10)
                sample_rate = 22050;
            else
                sample_rate = 11025;
            break;
        case 0x01:
            if (audio_version_ID == 0x18)
                sample_rate = 48000;
            else if (audio_version_ID == 0x10)
                sample_rate = 24000;
            else
                sample_rate = 12000;
            break;
        case 0x10:
            if (audio_version_ID == 0x18)
                sample_rate = 32000;
            else if (audio_version_ID == 0x10)
                sample_rate = 16000;
            else
                sample_rate = 8000;
            break;
        default:
            break;
    }

使用特权

评论回复
6
572523392|  楼主 | 2013-3-10 14:34 | 只看该作者
谢谢5楼的大哥,我明白了
我一直都在注意那个PICC的位域,我还以为是我的枚举做的问题,改了好几次了!
忘了告诉四楼的,你说话太难听了,如果你是高手,给我指导处错误,我感激不尽,但不要动不动就提高到一个高度!

使用特权

评论回复
7
refee| | 2013-3-10 14:42 | 只看该作者
还有 大括号后面把那些分号删掉
另 代码缩进搞规矩一点 看起来也舒服一些 :)

使用特权

评论回复
8
refee| | 2013-3-10 14:44 | 只看该作者
既然决定学 就要有个规矩 对以后颇有好处 话稍微多了一点 楼主莫怪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

45

帖子

0

粉丝