久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4438|回復: 0
打印 上一主題 下一主題
收起左側

[求助]求高手指點下

[復制鏈接]
跳轉到指定樓層
樓主
ID:46696 發(fā)表于 2012-11-29 14:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

寫的程序,但是便宜一直有錯,是計算器程序,麻煩哪位大神能指點下。

 

 

(錯誤:JISUANQI.C(221): error C211: call not to a function
JISUANQI.C(221): error C208: 'function': too many actual parameters
JISUANQI.C(222): error C187: not an lvalue
JISUANQI.C(238): error C211: call not to a function
JISUANQI.C(238): error C208: 'function': too many actual parameters
JISUANQI.C(239): error C187: not an lvalue
JISUANQI.C(251): error C211: call not to a function
JISUANQI.C(251): error C208: 'function': too many actual parameters
JISUANQI.C(252): error C187: not an lvalue
Target not created)

 

 

 

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int;

uchar code a[]={0xF7,0xFB,0xFD,0xFE};
unsigned char code table[16]={0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6,0xee,0xee,0xee,0xee,0xee,0xee,};
uchar fuhao=0,scan=0;     //全局變量fuhao用來存放運算符的值   scan作為是否按鍵的標志位(按下就為1沒按為0)
void delay(uchar n);       //延時Z毫秒
void display(long f);    //用六位數(shù)碼管顯示long值
uchar keyscan();         //鍵盤掃描并把掃描得到的值返回   
void displayerror();     //顯示錯誤操作提示信息

void delay(uchar n)         //延時n ms(晶振12Mhz)
{
 uchar i;
 while(n--)
  for(i=125;i>0;i--);//1ms
}

uchar keyscan()             //掃描鍵盤,返回的值高四位相應位表列,低表行。若未按鍵則返回0
{
   uchar row,col;
 uchar j,m;
 

 P1=0xF0;
  if((P1&0xF0)!=0xF0)
  {
    delay(1);
    if((P1&0xF0)!=0xF0)
     col=~(P1|0x0F);  //確定列

    j=0;
    P1=a[j];
     while(j<=3)
     {
      if((P1&0xF0)!=0xF0)
   {
         row=~a[j];  //確定行
    break;
   }
      else
   {j++;P1=a[j];}

     }
    m=row+col;
    return(m);
    }
 else
  return(0);

}
 uchar coding(uchar m)  //將用相應位表示的按鍵號轉化為數(shù)值編碼
{
 uchar k;
 
 switch(m)
 {
  case (0x08+0x80): k=0;break;//0
  case (0x08+0x40): k=1;break;//1
  case (0x08+0x20): k=2;break;//2
  case (0x08+0x10): k=3;break;//3
  case (0x04+0x80): k=4;break;//4
  case (0x04+0x40): k=5;break;//5
  case (0x04+0x20): k=6;break;//6
  case (0x04+0x10): k=7;break;//7
  case (0x02+0x80): k=8;break;//8
  case (0x02+0x40): k=9;break;//9
  case (0x02+0x20): k=10;break;//加法
  case (0x02+0x10): k=11;break;//減法
  case (0x01+0x80): k=12;break;//乘法
  case (0x01+0x40): k=13;break;//除法
  case (0x01+0x20): k=14;break;//清零
  case (0x01+0x10): k=15;break;//等于
 }
        scan=1;
        return(k);
}
void main()
{
 uchar val=0,j=0,i=0,jie,e=0;  //i,j用于判斷每次輸入的數(shù)是否超過六位,e為錯誤操作標志位(為1表示已錯誤操作),jie為顯示計算結果標志位(為1表示要顯示結果)
 long a=0,b=0,c=0;      //a存放第一次輸入的數(shù),b存放第二次輸入的數(shù),c存放計算的結果
 display(0);           //初始化顯示
 delay(1000);         //延時1000毫秒
 while(1)
 {
  //beep=1;             //關閉蜂鳴器
  val=keyscan();     //把掃描得到的值賦給val
  if(scan==1)        //一旦按下鍵我就對其操作
  {
   scan=0;         //把按鍵標志位scan復位
   if(val==10)     //如果按下的為復位鍵
   {
    a=0;b=0;c=0;fuhao=0;jie=0;e=0;i=0;j=0;display(0);
   //復位操作(初始化)  (顯示是不能停)
    continue;           //直接進入下一次循環(huán)
   }
   else if(val>=11&&val<=15&&i==0&&fuhao==0)//如果第一次按下的不是數(shù)字鍵
   {
    display(0);        //數(shù)碼管顯示不能停
    continue;        //直接進入下一次循環(huán)
   }
 
   else if(val>=12&&val<=15&&fuhao==0&&i!=0)//輸入數(shù)字之后按下的第一個運算符
   {
    fuhao=val;        //把掃描得到運算符值賦給fuhao標志位
    i=0;             //一旦輸入運算符就把數(shù)字輸入計數(shù)i清零
    display(0);       //數(shù)碼管顯示不能停
   }
   else if(fuhao!=0&&val>=11&&val<=15)   //只要按下等于或者運算符之前按了數(shù)字鍵和運算符就顯示計算結果
   {
    jie=1;            //計算結果標志位jie為1(表示要顯示計算結果c)
    if(fuhao==12)      //如果輸入的是運算符‘+’
    {
     c=a+b;          //把運算的結果賦給c
     if(c>999999)     //如果計算結果超出數(shù)碼管的顯示范圍
     {
      displayerror();     //顯示出錯信息
      e=1;             //出錯信息標志位置1
     }
     else       
     {
      display(c);     //不超出顯示范圍就顯示結果
     }
    }
    else if(fuhao==13)     //如果輸入的運算符是‘-’
    {
     if(a<b)
     { 
      displayerror();
     }
     else
     {
      c=a-b;
      display(c);
     }
    }
    else if(fuhao==14)       //如果輸入的運算符是‘*’
    {
     c=a*b;
     if(c>999999)
     {
      displayerror();
      e=1;
     }
     else
     {
      display(c);
     }
    }
    else          //如果輸入的運算符是‘/’
    {
     c=a/b;
     display(c);
    }
   }
   else if(val>=0&&val<=9)     //如果按下的為數(shù)字鍵
   {
    if(fuhao==0)      //如果是第一次按下數(shù)字鍵
    {
     a=a*10+val;      //把前面顯示的值左移一位再加當前輸入的數(shù)字存放到a(0到9)
     i++;       //每輸入一個數(shù)字,數(shù)字計數(shù)i加1
     if(i>6)          //如果連續(xù)輸入數(shù)字超過六位
     {
      displayerror();e=1;   //顯示出錯信息且錯誤標志位置1
     }
     else
     {
      display(a);     //顯示得到的a
      continue;     //進入下次次循環(huán)
     }
    }
    else            //第二次按下數(shù)字鍵
    {
      b=b*10+val;      //把前面顯示的值左移一位再加當前輸入的數(shù)字存放到b(0到9)
      j++;       //第二次輸入數(shù)字的計算變量j加1
      if(j>6)         //如果輸入超出數(shù)碼管顯示范圍
      {
       displayerror(); e=1;
      }
      else
      {
       display(b);
       continue;
      }
    }
   }
 
  }
  else           //如果沒按下鍵(也要顯示)
  {
   if(e==1)      displayerror();//如果出錯標志位為1就顯示出錯信息
   else if(fuhao==0)         display(a);  //如果還沒輸入運算符(到目前為止還只是輸入數(shù)字)就顯示a 
   else if(fuhao!=0&&jie==0) display(b);  //如果輸入數(shù)字后又輸了運算符且沒輸入運算符和等于就顯示b
   else if(jie==1)           display(c);  //如果輸入了結果標志位就顯示計算結果c
   else                      display(0);  //其余就初始化顯示
  }
 
 }
}

void display(long f)      //以測出的頻率串行輸出
{unsigned long x;
 unsigned char a[5]={0,0,0,0,0},i=0,j;
 if(f!=0){
 if((f<10000)&&(f>1))     //正常顯示
 {if(f>1000)f=f-1;     //軟件修正頻率偏差
 while(f<1000)
  {f=f*10;
  i++;
  }
 x=f*10;
 a[4]=x%10;
 if(a[4]>=5)f=f+1;;
 x=f;
 a[1]=x%10;
 a[2]=(x/10)%10;
 a[3]=(x/100)%10;
 a[4]=(x/1000)%10;
 for(j=0;j<5;j++)
  {a[j]=table(a[j]);}
 a[i+1]++;
 a[0]=0;
 }
else if(f>=10000)      //以科學計數(shù)法顯示
 {while(f>=1000)
  {f=f/10;
  i++;
  }
 x=f;
 a[4]=(unsigned char)((float)((f-x))*10);
 if(a[4]>=5)x++;      //四舍五入
 a[2]=x%10;
 a[3]=(x/10)%10;
 a[4]=(x/100)%10;
 a[0]=i+2;
 for(j=0;j<5;j++)
  {a[j]=table(a[j]);}
 a[4]++;
 a[1]=0x7c;
 }
else
 {x=f*10000;       //頻率值小于1
 if((x%10)>=5)x=x+10; //四舍五入
 x=x/10;
 a[1]=x%10;
 a[2]=(x/10)%10;
 a[3]=(x/100)%10;
 a[4]=(x/1000)%10;
 for(j=0;j<5;j++)  
  {a[j]=table(a[j]);}
 a[4]++;
 a[0]=0;
 }
 
 }
for(j=0;j<5;j++)   //串行
 {SBUF=a[j];
 while(TI==0);}

}
void displayerror()    //最高位顯示E表示出錯信息
{ unsigned char a[5]={0,0,0,0,0},i=0,j;
  for(j=0;j<5;j++)
   {a[j]=0x7c;
    SBUF=a[j];
    while(TI==0);
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清视频在线观看 | 欧美性猛交一区二区三区精品 | 成人在线网址 | 国产精品一区二区三区四区 | 久久国产精品视频观看 | 一区二区三区久久 | 精品一区二区久久久久久久网精 | 精品成人 | 成人精品一区二区 | 免费黄篇 | аⅴ资源新版在线天堂 | 久久免费国产 | 中文视频在线 | 最新中文字幕第一页视频 | 欧美日韩综合 | 久久国产精99精产国高潮 | 日本淫视频 | 欧美在线观看一区 | 中文字幕日韩欧美一区二区三区 | 午夜免费视频观看 | 久久国产精品一区 | 亚洲视频在线播放 | 99re在线视频观看 | 欧美精品在欧美一区二区 | 色综合久久伊人 | 久久精品一区二 | 亚洲精品aⅴ | 亚洲成人免费 | 亚洲成人一级 | 三级高清| 国产农村妇女精品一区 | 日日干日日操 | 成人二区 | 免费三级网站 | 人人操日日干 | 国产精品美女www爽爽爽视频 | 久婷婷| 在线播放国产一区二区三区 | 人人干视频在线 | 国产精品3区| jizz在线看片 |