打印

请教

[复制链接]
2600|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dankin|  楼主 | 2007-5-5 16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2007-5-5 16:45 | 只看该作者

可能是程序哪个地方缺少标点符号...

使用特权

评论回复
板凳
dankin|  楼主 | 2007-5-5 17:27 | 只看该作者

请教

谢谢ayb_ice
但是我都找了没有发现全程序如下
uchar digbit;
uchar wordbuf[6];
uchar tlcount;
uchar count;
uchar pw[6];
uchar pwbuf[6];
bit enterflag;
bit showflag;
sbit green=p3^0;
sbit red=p3^1;
void delay(void)
 {
   uchar i;
   for (i=300;i>0;i--);
 }
uchar keyscan (void)
 { 
  uchar scancode,tmpcode;
  p1=0xf0;
  if((p1&0xf0)!=0xf0)
   {
     delay();
     if((p1&0xf0)!=0xfe;
      scancode=0xfe;
      while((scancode&0x10)!=0)
        {
         p1=scancode;
         if((p1&0xf0)!=0xf0)
           {
             tmpcode=(p1&0xf0)|0x0f;
              return((~scancode)+(~tmpcode));
            }
             else scaccode=(scancode<<1)|0x01;
         }
     }
   return (0);
 }
void time0_int(void) interrupt 1
 {
   TH0 = -2000/256;
   TLO = -200%256;
   if (showflag==1)
       display();
  }
 void time1_int(void) interrupt 3
 {
 uchar k;
 TH1 = -50000/256;
 TL1 = -50000%256;
if (tlcount<20)
 {
   tlcont++;
 }
else
 { 
  TR1=0;
  tlcount = 0;
  green = 1;
  red =1;
showflag=1;
digbit = 0x01;
for (k=0;k<6;k++)
    wordbuf[k] =8;
   }
 }

uchar getcode(uchar i)
 {
   uchar p;
 switch (i)
   {
     case 0: p=0x3F;  break;
     case 1: p=0x06;  break;
     case 2: p=0x5B;  break;
     case 3: p=0x4F;  break;
     case 4: p=0x66;  break;
     case 5: p=0x6D;  break;
     case 6: p=0x7D;  break;
     case 7: p=0x07;  break;
     case 8: p=0x7F;  break;
     case 9: p=0x67;  break;
     case 10:p=0x77;  break;
     case 11:p=0x7c;  break;
     case 12:p=0x39;  break;
     case 13:p=0x5e;  break;
     case 14:p=0x79;  break;
     case 15:p=0x71;  break;
     default:         break;
 }
 return (p);
}
void display (void)
{
 uchar i;
 switch (digbit)
 {
   case 1:    i=0;   break;
   case 2:    i=1;   break;
   case 4:    i=2;   break;
   case 8:    i=3;   break;
   case 16:   i=4;   break;
   case 32:   i=5;   break;
   default:          break;
   }
   p2=0x0;
   p0= getcode(wordbuf)
   p2=digbit ;
   if (digbit<0x20)
       digbit =digbit*2;
    else 
      digbit=0x01;
 }
bit pwcmp (void)
{
 bit flag;
 uchar i;
 for (i=0;i<6;i++)
 {
   if (pw=pwbuf)
        flag=1
    else 
   {
    flag=0;
    i=6;
    }
  }
 return(flag);
 }
void main( )
 {
  uchar j ,key;
 p2=0x0;
 TMOD=0x11;
 THO=-2000/256;
 TLO=2000%256;
 TH1=-50000/256;
 TL1=-50000%256;
 TR0=1;
 ET0=1;
 TR1=0;
 ET1=1;
 EA=1;

  count=0;
  enterflag=0;
  pwflag=0;
  green=1;
  red=1;
  pw[0]=1;
  pw[1]=1;
  pw[2]=2;
  pw[3]=4;
  pw[4]=5;
  pw[5]=3;

 showflag=1;
 for (j=0;j<6;j++)
    wordbuf[j]=8;
 digbit = 0x01;
 while(1)
 {
   key = keyscan();
   switch(key)
   {
     case 0x11:
          if (count<6)
           {
            wordbuf[count]=0x0f;
            pwbuf[count]=0;
            count++;
            }
          break;
     case 0x21:
          if (count<6)
           {
             wordbuf[count]=0x0f;
             pwbuf[count]=1;
             count++;
            }
            break;
     case 0x41:
           if (count<6)
           {
           wordbuf[count]=0x0f;
           pwbuf[count]=2;
           count++;
            }
            break;
      case 0x81:
           if (count<6)
            {
             wordbuf[count]=0x0f;
             pwbuf[count]=3;
             count++;
             }
             break;
       case 0x12:
            if (count<6)
            {
             wordbuf[count]=0x0f;
             pwbuf[count]=4;
             count++;
             }
             break;
        case 0x22:
             if (count<6)
             {
              wordbuf[count]=0x0f;
              pwbuf[count]=5;
              count++;
              }
              break;
         case 0x42:
              if (count<6)
              {
               wordbuf[count]=0x0f;
               pwbuf[count]=6;
               count++;
               }
               break;
         case 0x82:
              if (count<6)
               {
                wordbuf[count]=0x0f;
                pwbuf[count]=7;
                count++
                }
                break;
         case 0x14:
              if (count<6)
               {
                wordbuf[count]=0x0f;
                pwbuf[count]=8;
                count++;
                }
                break;
         case 0x24:
              if (count<6)
              {
               wordbuf[count]=0x0f;
               pwbuf[count]=9;
               count++;
               }
               break;
         case 0x44:
              enterflag=1;
              if (count=6)
                 pwflag=pwcmp();
               else 
                 pwflag=0;
               break;
         case 0x84:
              count=0;
             for (j=0;j<6;j++)
              {
                wordbuf[j]=8;
                pwbuf[j]=0x0f;
               }
               break;
          default : break;
   }
 if (enterflag==1)
  {
   enterflag=0;
   count=0;
  
   for(j=0;j<6;j++)
      pwbuf[j]=0x0f;

   showflag=0;
   TR1=1;
   tlcount=0;
   if (pwflag==1)
      green=0;
    else
      red=0;
    }
  }
}
烦请各位前辈指点

使用特权

评论回复
地板
turmary| | 2007-5-5 17:51 | 只看该作者

uchar是自定义类型

要在最前面加这个

#define uchar unsigned char 

使用特权

评论回复
5
dankin|  楼主 | 2007-5-5 18:43 | 只看该作者

请教

turmary你好,我加上去以后,问题更多了,提示如下
KEY.C(16): error C202: 'p3': undefined identifier
KEY.C(17): error C202: 'p3': undefined identifier
KEY.C(26): error C202: 'p1': undefined identifier
KEY.C(27): error C202: 'p1': undefined identifier
KEY.C(30): error C202: 'p1': undefined identifier
KEY.C(34): error C202: 'p1': undefined identifier
KEY.C(35): error C202: 'p1': undefined identifier
KEY.C(37): error C202: 'p1': undefined identifier
KEY.C(40): error C202: 'scaccode': undefined identifier
Target not created
麻烦指点一下

使用特权

评论回复
6
happystar| | 2007-5-5 19:20 | 只看该作者

re

你缺少定义P1,P2的头文件了.比如如果是89C51要加#include <reg51.h>
还有你明显没定义scaccode这个变量

使用特权

评论回复
7
hdm616| | 2007-5-5 19:20 | 只看该作者

没有头文件

使用特权

评论回复
8
zhaoyu2005| | 2007-5-5 19:54 | 只看该作者

p0= getcode(wordbuf[i])

你看不是少了“;”?还是不细心,都告诉你了C129: missing ';' before 'digbit'(129行,digbit前面丢失“;”),安一个金山词霸吧

使用特权

评论回复
9
dankin|  楼主 | 2007-5-6 17:17 | 只看该作者

请教

首先谢谢各位前辈的指点,但是我加上头文件也不能编译,还是一样的提示,我在P0后面加上一个;号后,提示一样,不知道是那里的问题望各位前辈再指点一下,各位前辈那里有没有能编译调试过的程序,发给我看一下好吗,看看在我这能调吗谢谢

使用特权

评论回复
10
天隼之翼| | 2007-5-6 17:24 | 只看该作者

你去我那个I2C求助的贴子里

那里有一长段I2C从机的程序,肯定能编译的,只不过在效果上不太好

使用特权

评论回复
11
dankin|  楼主 | 2007-5-6 17:27 | 只看该作者

你好

天隼之翼你那贴子从那里进入呢

使用特权

评论回复
12
dankin|  楼主 | 2007-5-6 17:53 | 只看该作者

请教

这个问题跟软件有关吗,我换了好多程序都不能运行,请前辈多多指点,谢谢

使用特权

评论回复
13
有梦就去追| | 2007-5-7 00:59 | 只看该作者

P要大写

 看你的P好像是小写的
c语言区分大小写吧

使用特权

评论回复
14
renrongwen| | 2007-5-7 01:22 | 只看该作者

调试好的代码,建议好好看看C51编程规范

#include <reg51.h>
#include <intrins.h>

#define uchar unsigned char 
#define uint  unsigned int

uchar digbit;
uchar wordbuf[6];
uchar tlcont;
uchar count;
uchar pw[6];
uchar pwbuf[6];
bit enterflag;
bit showflag;
bit pwflag;
sbit green=P3^0;
sbit red=P3^1;
void delay(void)
{
   uchar i;
   for (i=300;i>0;i--);
}
uchar keyscan (void)

  uchar scancode,tmpcode;
  P1=0xf0;
  if((P1&0xf0)!=0xf0)
   {
     delay();
     if((P1&0xf0)!=0xfe);
      scancode=0xfe;
      while((scancode&0x10)!=0)
        {
         P1=scancode;
         if((P1&0xf0)!=0xf0)
           {
             tmpcode=(P1&0xf0)|0x0f;
              return((~scancode)+(~tmpcode));
            }
             else scancode=(scancode<<1)|0x01;
         }
     }
   return (0);
}

uchar getcode(uchar i)
{
   uchar p;
switch (i)
   {
     case 0: p=0x3F;  break;
     case 1: p=0x06;  break;
     case 2: p=0x5B;  break;
     case 3: p=0x4F;  break;
     case 4: p=0x66;  break;
     case 5: p=0x6D;  break;
     case 6: p=0x7D;  break;
     case 7: p=0x07;  break;
     case 8: p=0x7F;  break;
     case 9: p=0x67;  break;
     case 10:p=0x77;  break;
     case 11:p=0x7c;  break;
     case 12:p=0x39;  break;
     case 13:p=0x5e;  break;
     case 14:p=0x79;  break;
     case 15:p=0x71;  break;
     default:         break;
}
return (p);
}
void display(void)
{
    uchar i;
    switch (digbit)
    {
       case 1:    i=0;   break;
       case 2:    i=1;   break;
       case 4:    i=2;   break;
       case 8:    i=3;   break;
       case 16:   i=4;   break;
       case 32:   i=5;   break;
       default:          break;
       }
   P2=0x0;
   P0= getcode(wordbuf);
   P2=digbit;
   if (digbit<0x20)
       digbit =digbit*2;
    else 
      digbit=0x01;
}

void time0_int(void) interrupt 1
{
   TH0 = -2000/256;
   TL0 = -200%256;
   if (showflag==1)
       display();
  }
void time1_int(void) interrupt 3
{
uchar k;
TH1 = -50000/256;
TL1 = -50000%256;
if (tlcont<20)
{
   tlcont++;
}
else

  TR1=0;
  tlcont=0;
  green=1;
  red =1;
showflag=1;
digbit = 0x01;
for (k=0;k<6;k++)
    wordbuf[k] =8;
   }
}




bit pwcmp(void)
{
bit flag;
uchar i;
for (i=0;i<6;i++)
{
   if (pw=pwbuf)
        flag=1;
    else 
   {
    flag=0;
    i=6;
    }
  }
return(flag);
}
void main( )
{
  uchar j ,key;
P2=0x0;
TMOD=0x11;
TH0=-2000/256;
TL0=2000%256;
TH1=-50000/256;
TL1=-50000%256;
TR0=1;
ET0=1;
TR1=0;
ET1=1;
EA=1;

  count=0;
  enterflag=0;
  pwflag=0;
  green=1;
  red=1;
  pw[0]=1;
  pw[1]=1;
  pw[2]=2;
  pw[3]=4;
  pw[4]=5;
  pw[5]=3;

showflag=1;
for (j=0;j<6;j++)
    wordbuf[j]=8;
digbit = 0x01;
while(1)
{
   key = keyscan();
   switch(key)
   {
     case 0x11:
          if (count<6)
           {
            wordbuf[count]=0x0f;
            pwbuf[count]=0;
            count++;
            }
          break;
     case 0x21:
          if (count<6)
           {
             wordbuf[count]=0x0f;
             pwbuf[count]=1;
             count++;
            }
            break;
     case 0x41:
           if (count<6)
           {
           wordbuf[count]=0x0f;
           pwbuf[count]=2;
           count++;
            }
            break;
      case 0x81:
           if (count<6)
            {
             wordbuf[count]=0x0f;
             pwbuf[count]=3;
             count++;
             }
             break;
       case 0x12:
            if (count<6)
            {
             wordbuf[count]=0x0f;
             pwbuf[count]=4;
             count++;
             }
             break;
        case 0x22:
             if (count<6)
             {
              wordbuf[count]=0x0f;
              pwbuf[count]=5;
              count++;
              }
              break;
         case 0x42:
              if (count<6)
              {
               wordbuf[count]=0x0f;
               pwbuf[count]=6;
               count++;
               }
               break;
         case 0x82:
              if (count<6)
               {
                wordbuf[count]=0x0f;
                pwbuf[count]=7;
                count++;
                }
                break;
         case 0x14:
              if (count<6)
               {
                wordbuf[count]=0x0f;
                pwbuf[count]=8;
                count++;
                }
                break;
         case 0x24:
              if (count<6)
              {
               wordbuf[count]=0x0f;
               pwbuf[count]=9;
               count++;
               }
               break;
         case 0x44:
              enterflag=1;
              if (count=6)
                 pwflag=pwcmp();
               else 
                 pwflag=0;
               break;
         case 0x84:
              count=0;
             for (j=0;j<6;j++)
              {
                wordbuf[j]=8;
                pwbuf[j]=0x0f;
               }
               break;
          default : break;
   }
if (enterflag==1)
  {
   enterflag=0;
   count=0;
  
   for(j=0;j<6;j++)
      pwbuf[j]=0x0f;

   showflag=0;
   TR1=1;
   tlcont=0;
   if (pwflag==1)
      green=0;
    else
      red=0;
    }
  }
}

使用特权

评论回复
15
renrongwen| | 2007-5-7 01:25 | 只看该作者

C51规范

http://www.baidu.com/s?wd=C51++%B9%E6%B7%B6&cl=3

使用特权

评论回复
16
DEF| | 2007-5-7 02:06 | 只看该作者

是少了;号

你贴上来的程序上就有这样的错误!!
你自己细心找找吧 在display函数里

使用特权

评论回复
17
ayb_ice| | 2007-5-7 07:33 | 只看该作者

这些都是简单的错误...

这些都是简单的错误,看来你还要学习基本的C知识...

使用特权

评论回复
18
zxq1234508| | 2007-5-7 08:35 | 只看该作者

错误有三

1、没有头文件。2、 p0、p1。。。的p应大写。3、 p0= getcode(wordbuf)
这句没有加“;”。

使用特权

评论回复
19
dankin|  楼主 | 2007-5-9 15:19 | 只看该作者

谢谢

renrongwen
首先非常感谢你,也感谢各位前辈的指点,使我又学了许多,谢谢你们,我一定好好学习,同时也希望各位前辈以后多多指点哦,再次谢谢你们

使用特权

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

本版积分规则

6

主题

17

帖子

0

粉丝