找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8668|回復(fù): 26
收起左側(cè)

為什么keil編譯的時(shí)候出現(xiàn)這種錯(cuò)誤:error 202 ‘lcden’ :undefine identifier

  [復(fù)制鏈接]
ID:306995 發(fā)表于 2018-4-14 17:10 | 顯示全部樓層 |閱讀模式
本帖最后由 陳藝萍 于 2018-4-17 13:29 編輯

求助大神,為什么keil編譯的時(shí)候出現(xiàn)這種錯(cuò)誤:error 202 ‘lcden’ :undefine identifier 1.png
2.png
4.png 我改完P(guān)口之后:
QQ截圖20180416172650.png
1.png 下面是完整程序:我要實(shí)現(xiàn)的是可以負(fù)數(shù)運(yùn)算的簡(jiǎn)易計(jì)算器
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
//LCD1602
sbit rs=P2^5
sbit wela=P2^6
sbit lcden=P2^7
uchar code table[]="                ";
long int data_a,data_b
long int data_c
uchar display[10];
void LCD_Delay_us(unsigned int t)
{
    while(t--);//t=0íË3ö
}
void LCD_Delay_ms(unsigned int t)
{
    unsigned int i,j;
        for(i=0;i<t;i++)
        for(j=0;j<113;j++);
}
void write_com(uchar com)
{
    rs=0;
        lcden=0;
        P0=com;
        LCD_Delay_ms(1);
        lcden=1;
        LCD_Delay_ms(2);
        lcden=0;
}
//1602D′êy¾Y
void write_date(uchar date)
{
    rs=1;
        lcden=0;
        P0=date;
        LCD_Delay_ms(1);
        lcden=1;
        LCD_Delay_ms(2);
        lcden=0;
        }
       
void W_lcd(unsigned char x,unsigned char y,unsigned char Data)
{
if (y==0){write_com(0x80+x);}
else{write_com(0xc0+x);}
write_data(Data);
}

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char*s)
{
if (y==0){write_com(0x80+x);}
else{write_com(0xc0+x);}
while (*s)
{write_data(*s);s++;}
}

void init_lcd(void)
{
    wela=0;
        lcden=0;
        write_com(0x38);
        LCD_Delay_us(100);
        write_com(0x0c);
        write_com(0x06);
    write_com(0x01);
    write_com(0x08);
        }
short keycheckdown()
{
    short temp1,temp2,temp,a=0xff;
        P1=0xf0;
        LCD_Delay_ms(20);
        temp1=P1;
        P1=0xff;
        LCD_Delay_ms(20);
        P1=0x0f;
        LCD_Delay_ms(20);
        temp2=P1;
        P1=0xff;
        temp=(temp1&0xf0)|(temp2&0x0f);
        switch(temp)
        {
        case 0x77:a=0x0d;break;
        case 0x7b:a=0x0e;break;
        case 0x7d:a=0x00;break;
        case 0x7e:a=0x0f;break;
       
        case 0xb7:a=0x0c;break;//*
        case 0xbb:a=0x9;break;//9
        case 0xbd:a=0x8;break;//8
        case 0xbe:a=0x7;break;//7
       
        case 0xd7:a=0x0b;break;//-
        case 0xdb:a=0x06;break;//6
        case 0xdd:a=0x05;break;//5
        case 0xde:a=0x04;break;//4
       
        case 0xe7:a=0x0a;break;//+
        case 0xeb:a=0x03;break;//3
        case 0xed:a=0x02;break;//2
        case 0xee:a=0x01;break;//1
       
        default:a=0xff;
        }
        return a;
}
void display_a()
{
    display[3]=data_a%10000/1000;
        display[2]=data_a%1000/100;
        display[1]=data_a%100/10;
        display[0]=data_a%10;
       
        write_com(0x80+0);
        if(data_a>999){write_data('0'+display[3]);}
        if(data_a>99){write_data('0'+display[2]);}
        if(data_a>9){write_data('0'+display[1]);}
                          write_data('0'+display[0]);
}
void display_b()
{
    write_com(0x80+7);
         display[3]=data_b%10000/1000;
        display[2]=data_b%1000/100;
        display[1]=data_b%100/10;
        display[0]=data_b%10;
       
    if(data_b>999){write_data('0'+display[3]);}
        if(data_b>99) {write_data('0'+display[2]);}
        if(data_b>9)   {write_data('0'+display[1]);}
                          write_data('0'+display[0]);
        }

void display_c(x)
{
    if(data_c<100000000&&data_c>-1)
        display[8]=data_c%1000000000/100000000;
        display[7]=data_c%100000000/10000000;
        display[6]=data_c%10000000/1000000;
        display[5]=data_c%1000000/100000;
        display[4]=data_c%100000/10000;
        display[3]=data_c%10000/1000;
        display[2]=data_c%1000/100;
        display[1]=data_c%100/10;
        display[0]=data_c%10;
        write_com(0x80+0x06+0x40);
        if(x==4)
        {
        if(data_c>99999999) {write_data('0'+display[8]);}
        if(data_c>9999999)  {write_data('0'+display[7]);}
        if(data_c>999999)    {write_data('0'+display[6]);}
        if(data_c>99999)     {write_data('0'+display[5]);}
                                     write_data('0'+display[4]);
                                                                 write_data('.');
                                                                 write_data('0'+display[3]);
                                                                  write_data('0'+display[2]);
                                                                  write_data('0'+display[1]);
                                                                  write_data('0'+display[0]);
                                                                  }
                                                                  else{
                                                                  if(data_c>99999999)  {write_date('0'+display[8]);}
                                                                  if(data_c>9999999)  {write_date('0'+display[7]);}
                                                                  if(data_c>999999)  {write_date('0'+display[6]);}
                                                                  if(data_c>99999)  {write_date('0'+display[5]);}
                                                                  if(data_c>9999)  {write_date('0'+display[4]);}
                                                                  if(data_c>999)  {write_date('0'+display[3]);}
                                                                   if(data_c>999)  {write_date('0'+display[2]);}
                                                                    if(data_c>999)  {write_date('0'+display[1]);}
                                                                                              write_date('0'+display[0]);
                                                                                                                  }
                                                                                                                  else {
                                                                                                                  write_com(0x80+11+0x40);
                                                                                                                  write_date('E');
                                                                                                                  write_date('r');
                                                                                                                  write_date('r');
                                                                                                                  write_date('o');
                                                                                                                  write_date('r');
                                                                                                                  }
                                                                                                                  }
void eql(uchar x)
{
  switch(x)
  {
  case 1:data_c=data_a+data_b;break;
  case 2:if(data_a>=data_b){data_c=data_a-data_b;}
    else{data_c=data_b-data_a;W_lcd(5,1,'-');} ;
                     break;
        case 3:data_c=(data_a*data_b);break;
        case 4:if(data_b==0){LCD_Write_String(0,1,"Error!";}
    else{data_c=(data_a*10000)/data_b;};break;
  case 0:break;
}                                         
}
void main()
{
    uchar key=0xff;
        uchar n=0;
        uchar m=5;
        uchar x=0;
        data_a=0;
        data_b=0;
        data_c=0;
        init_lcd();
        display_a();
while(1)
{
key=keycheckdown();
if(0xff!=key)
{
if(key<10)
{
if(n<4){data_a=data_a*10+key;m=5;display_a();}n++;
if(m<4){data_b=data_b*10+key;n=5;display_b();}m++;
}
else
{switch(key)
{
case 0x0a:n=5;m=0;x=1;W_lcd(5,0,'+');break;
case 0x0b:n=5;m=0;x=2;W_lcd(5,0,'-');break;
case 0x0c:n=5;m=0;x=3;W_lcd(5,0,'*');break;
case 0x0d:n=5;m=0;x=4;W_lcd(5,0,'/');break;
case 0x0e:n=5;m=5;eql(x);W_lcd(12,0,'=');display_c(x);break;
case 0x0f:n=0;x=0;m=5;data_a=0;data_b=0;data_c=0;LCD_Write_String(0,0,table);LCD_Write_String(0,1,table);W_lcd(0,0,'0');break;
}
}
do{P1=0xf0;}while(P1!=0xf0);
}
}
}


1.四則運(yùn)算,包括負(fù)數(shù)運(yùn)算
2.開(kāi)機(jī)顯示0,當(dāng)輸入的數(shù)值或計(jì)算得到的結(jié)果大于計(jì)算器的表示范圍時(shí),計(jì)算器會(huì)在LCD上提示OV;當(dāng)除數(shù)為0時(shí),計(jì)算器會(huì)在LCD上提示ERR。

回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-15 16:59 | 顯示全部樓層
有人嗎有人嗎
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-4-16 09:06 | 顯示全部樓層
你的錯(cuò)誤很簡(jiǎn)單!
你的程序: 1.jpg sbit rs=P2^5;//注意:你寫的小寫p。我寫的大寫P
都是這個(gè)錯(cuò)誤。

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
Evelynchan + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:309014 發(fā)表于 2018-4-16 10:03 來(lái)自手機(jī) | 顯示全部樓層
有不明確的定義
回復(fù)

使用道具 舉報(bào)

ID:309026 發(fā)表于 2018-4-16 10:05 | 顯示全部樓層
上面錯(cuò)誤是存在未定義,你把p改一下就行。。。
回復(fù)

使用道具 舉報(bào)

ID:309064 發(fā)表于 2018-4-16 10:38 | 顯示全部樓層
你的錯(cuò)誤很簡(jiǎn)單! 你的程序:   sbit rs=P2^5;//注意:你寫的小寫p。我寫的大寫P 都是這個(gè)錯(cuò)誤。
回復(fù)

使用道具 舉報(bào)

ID:137239 發(fā)表于 2018-4-16 10:58 | 顯示全部樓層
‘P’要大寫的
回復(fù)

使用道具 舉報(bào)

ID:309089 發(fā)表于 2018-4-16 11:00 | 顯示全部樓層
lcden 沒(méi)有定義P2的P 要大寫
回復(fù)

使用道具 舉報(bào)

ID:309098 發(fā)表于 2018-4-16 11:08 | 顯示全部樓層
端口p要是大寫的
回復(fù)

使用道具 舉報(bào)

ID:309122 發(fā)表于 2018-4-16 11:36 | 顯示全部樓層
樓上對(duì)的,該大寫P
回復(fù)

使用道具 舉報(bào)

ID:309124 發(fā)表于 2018-4-16 11:37 | 顯示全部樓層
p要定義一下
回復(fù)

使用道具 舉報(bào)

ID:154654 發(fā)表于 2018-4-16 13:38 | 顯示全部樓層
檢查一下上下文用到的函數(shù)是否一致
回復(fù)

使用道具 舉報(bào)

ID:309251 發(fā)表于 2018-4-16 14:49 | 顯示全部樓層
未定義
回復(fù)

使用道具 舉報(bào)

ID:309242 發(fā)表于 2018-4-16 15:02 | 顯示全部樓層
P2^7要大寫
回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-16 17:15 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-4-16 09:06
你的錯(cuò)誤很簡(jiǎn)單!
你的程序:sbit rs=P2^5;//注意:你寫的小寫p。我寫的大寫P
都是這個(gè)錯(cuò)誤。

我居然犯了低級(jí)錯(cuò)誤,但是我改過(guò)來(lái)了還是不行呢怎么辦
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-4-17 07:22 | 顯示全部樓層
陳藝萍 發(fā)表于 2018-4-16 17:15
我居然犯了低級(jí)錯(cuò)誤,但是我改過(guò)來(lái)了還是不行呢怎么辦

編譯的時(shí)候還有什么錯(cuò)呢,又發(fā)出來(lái)啥。
你沒(méi)有發(fā)程序,我就不能在自己的電腦上幫你查,我不可能照著圖片打一遍程序吧?!所以,你查了要把結(jié)果說(shuō)出來(lái)啥,
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2018-4-17 11:11 來(lái)自手機(jī) | 顯示全部樓層
你的 #include<reg.51.h> 是 #include<reg51.h> 沒(méi)有點(diǎn)

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
Evelynchan + 5 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-17 13:31 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-4-17 07:22
編譯的時(shí)候還有什么錯(cuò)呢,又發(fā)出來(lái)啥。
你沒(méi)有發(fā)程序,我就不能在自己的電腦上幫你查,我不可能照著圖片 ...

我已經(jīng)發(fā)了程序了,拜托大佬幫我運(yùn)行試試
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-4-17 16:24 | 顯示全部樓層
陳藝萍 發(fā)表于 2018-4-17 13:31
我已經(jīng)發(fā)了程序了,拜托大佬幫我運(yùn)行試試

我把其它錯(cuò)誤點(diǎn)都給你改了,只有這里,我沒(méi)有時(shí)間讀程序,不知道你的意思,所以,自己看看,這兩個(gè)else是怎樣的關(guān)系(紅色位置),錯(cuò)誤是:else與if不匹配。#include<reg51.h>

#define uint unsigned int
#define uchar unsigned char

//LCD1602
sbit rs=P2^5;
sbit wela=P2^6;
sbit lcden=P2^7;

uchar code table[]="                ";
long int data_a,data_b;
long int data_c;
uchar display[10];

void LCD_Delay_us(unsigned int t)
{
    while(t--);//t=0í?3?
}

void LCD_Delay_ms(unsigned int t)
{
    unsigned int i,j;
    for(i=0;i<t;i++)
            for(j=0;j<113;j++);
}

void write_com(uchar com)
{
    rs=0;
    lcden=0;
    P0=com;
    LCD_Delay_ms(1);
    lcden=1;
    LCD_Delay_ms(2);
    lcden=0;
}

//1602D′êy?Y
void write_data(uchar date)
{
    rs=1;
    lcden=0;
    P0=date;
    LCD_Delay_ms(1);
    lcden=1;
    LCD_Delay_ms(2);
    lcden=0;
}

void W_lcd(unsigned char x,unsigned char y,unsigned char Data)
{
        if (y==0){write_com(0x80+x);}
        else{write_com(0xc0+x);}
        write_data(Data);
}

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char*s)
{
        if (y==0){write_com(0x80+x);}
        else{write_com(0xc0+x);}
        while (*s)
        {write_data(*s);s++;}
}

void init_lcd(void)
{
    wela=0;
    lcden=0;
    write_com(0x38);
    LCD_Delay_us(100);
    write_com(0x0c);
    write_com(0x06);
    write_com(0x01);
    write_com(0x08);
}

short keycheckdown()
{
    short temp1,temp2,temp,a=0xff;
    P1=0xf0;
    LCD_Delay_ms(20);
    temp1=P1;
    P1=0xff;
    LCD_Delay_ms(20);
    P1=0x0f;
    LCD_Delay_ms(20);
    temp2=P1;
    P1=0xff;
    temp=(temp1&0xf0)|(temp2&0x0f);
    switch(temp)
    {
        case 0x77:a=0x0d;break;
        case 0x7b:a=0x0e;break;
        case 0x7d:a=0x00;break;
        case 0x7e:a=0x0f;break;

        case 0xb7:a=0x0c;break;//*
        case 0xbb:a=0x9;break;//9
        case 0xbd:a=0x8;break;//8
        case 0xbe:a=0x7;break;//7

        case 0xd7:a=0x0b;break;//-
        case 0xdb:a=0x06;break;//6
        case 0xdd:a=0x05;break;//5
        case 0xde:a=0x04;break;//4

        case 0xe7:a=0x0a;break;//+
        case 0xeb:a=0x03;break;//3
        case 0xed:a=0x02;break;//2
        case 0xee:a=0x01;break;//1

        default:a=0xff;
    }
    return a;
}

void display_a()
{
    display[3]=data_a%10000/1000;
    display[2]=data_a%1000/100;
    display[1]=data_a%100/10;
    display[0]=data_a%10;

    write_com(0x80+0);
    if(data_a>999){write_data('0'+display[3]);}
    if(data_a>99){write_data('0'+display[2]);}
    if(data_a>9){write_data('0'+display[1]);}
    write_data('0'+display[0]);
}

void display_b()
{
    write_com(0x80+7);
    display[3]=data_b%10000/1000;
    display[2]=data_b%1000/100;
    display[1]=data_b%100/10;
    display[0]=data_b%10;

    if(data_b>999){write_data('0'+display[3]);}
    if(data_b>99) {write_data('0'+display[2]);}
    if(data_b>9)   {write_data('0'+display[1]);}
    write_data('0'+display[0]);
}

void display_c(x)
{
    if(data_c<100000000&&data_c>-1)
        display[8]=data_c%1000000000/100000000;
        display[7]=data_c%100000000/10000000;
        display[6]=data_c%10000000/1000000;
        display[5]=data_c%1000000/100000;
        display[4]=data_c%100000/10000;
        display[3]=data_c%10000/1000;
        display[2]=data_c%1000/100;
        display[1]=data_c%100/10;
        display[0]=data_c%10;
        write_com(0x80+0x06+0x40);
        if(x==4)
        {
                  if(data_c>99999999) {write_data('0'+display[8]);}
                if(data_c>9999999)  {write_data('0'+display[7]);}
                if(data_c>999999)    {write_data('0'+display[6]);}
                if(data_c>99999)     {write_data('0'+display[5]);}
            write_data('0'+display[4]);
            write_data('.');
            write_data('0'+display[3]);
            write_data('0'+display[2]);
            write_data('0'+display[1]);
            write_data('0'+display[0]);
        }
        else{
            if(data_c>99999999)  {write_data('0'+display[8]);}
            if(data_c>9999999)  {write_data('0'+display[7]);}
            if(data_c>999999)  {write_data('0'+display[6]);}
            if(data_c>99999)  {write_data('0'+display[5]);}
            if(data_c>9999)  {write_data('0'+display[4]);}
            if(data_c>999)  {write_data('0'+display[3]);}
            if(data_c>999)  {write_data('0'+display[2]);}
            if(data_c>999)  {write_data('0'+display[1]);}
            write_data('0'+display[0]);
            }
        else {
            write_com(0x80+11+0x40);
            write_date('E');
            write_date('r');
            write_date('r');
            write_date('o');
            write_date('r');
             }
}
                                                                                                                  }
void eql(uchar x)
{
  switch(x)
  {
  case 1:data_c=data_a+data_b;break;
  case 2:if(data_a>=data_b){data_c=data_a-data_b;}
    else{data_c=data_b-data_a;W_lcd(5,1,'-');} ;
                     break;
        case 3:data_c=(data_a*data_b);break;
        case 4:if(data_b==0){LCD_Write_String(0,1,"Error!";}
    else{data_c=(data_a*10000)/data_b;};break;
  case 0:break;
}                                         
}
void main()
{
    uchar key=0xff;
        uchar n=0;
        uchar m=5;
        uchar x=0;
        data_a=0;
        data_b=0;
        data_c=0;
        init_lcd();
        display_a();
while(1)
{
key=keycheckdown();
if(0xff!=key)
{
if(key<10)
{
if(n<4){data_a=data_a*10+key;m=5;display_a();}n++;
if(m<4){data_b=data_b*10+key;n=5;display_b();}m++;
}
else
{switch(key)
{
case 0x0a:n=5;m=0;x=1;W_lcd(5,0,'+');break;
case 0x0b:n=5;m=0;x=2;W_lcd(5,0,'-');break;
case 0x0c:n=5;m=0;x=3;W_lcd(5,0,'*');break;
case 0x0d:n=5;m=0;x=4;W_lcd(5,0,'/');break;
case 0x0e:n=5;m=5;eql(x);W_lcd(12,0,'=');display_c(x);break;
case 0x0f:n=0;x=0;m=5;data_a=0;data_b=0;data_c=0;LCD_Write_String(0,0,table);LCD_Write_String(0,1,table);W_lcd(0,0,'0');break;
}
}
do{P1=0xf0;}while(P1!=0xf0);
}
}
}

回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-17 17:09 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-4-17 16:24
我把其它錯(cuò)誤點(diǎn)都給你改了,只有這里,我沒(méi)有時(shí)間讀程序,不知道你的意思,所以,自己看看,這兩個(gè)else是 ...

這一段是我最頭疼的地方小白真的看不懂
回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-17 17:27 | 顯示全部樓層
void display_c(x)
{
    if(data_c<100000000&&data_c>-1)
       
                { display[8]=data_c%1000000000/100000000;
        display[7]=data_c%100000000/10000000;
        display[6]=data_c%10000000/1000000;
        display[5]=data_c%1000000/100000;
        display[4]=data_c%100000/10000;
        display[3]=data_c%10000/1000;
        display[2]=data_c%1000/100;
        display[1]=data_c%100/10;
        display[0]=data_c%10;
        write_com(0x80+0x06+0x40);
               
       
        if(x==4)
        {
         if(data_c>99999999)   {write_data('0'+display[8]);}
         if(data_c>9999999)    {write_data('0'+display[7]);}
         if(data_c>999999)     {write_data('0'+display[6]);}
         if(data_c>99999)      {write_data('0'+display[5]);}
                               write_data('0'+display[4]);
                               write_data('.');
                               write_data('0'+display[3]);
                               write_data('0'+display[2]);
                               write_data('0'+display[1]);
                               write_data('0'+display[0]);
                         }
        
        else{
            if(data_c>99999999)  {write_data('0'+display[8]);}
            if(data_c>9999999)  {write_data('0'+display[7]);}
            if(data_c>999999)  {write_data('0'+display[6]);}
            if(data_c>99999)  {write_data('0'+display[5]);}
            if(data_c>9999)  {write_data('0'+display[4]);}
            if(data_c>999)  {write_data('0'+display[3]);}
            if(data_c>999)  {write_data('0'+display[2]);}
            if(data_c>999)  {write_data('0'+display[1]);}
            write_data('0'+display[0]);
            }
                                        }

        else {
            write_com(0x80+11+0x40);
            write_date('E');
            write_date('r');
            write_date('r');
            write_date('o');
            write_date('r');
             }
}
  嵌套后
回復(fù)

使用道具 舉報(bào)

ID:309896 發(fā)表于 2018-4-17 20:39 | 顯示全部樓層
P沒(méi)有定義吧
回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-17 20:53 | 顯示全部樓層
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
//LCD1602
sbit rs=P2^5;
sbit wela=P2^6;
sbit lcden=P2^7;
uchar code table[]="                ";
long int data_a,data_b;
long int data_c;
uchar display[10];
void LCD_Delay_us(unsigned int t)
{
    while(t--);
}
void LCD_Delay_ms(unsigned int t)
{
    unsigned int i,j;
    for(i=0;i<t;i++)
            for(j=0;j<113;j++);
}
void write_com(uchar com)
{
    rs=0;
    lcden=0;
    P0=com;
    LCD_Delay_ms(1);
    lcden=1;
    LCD_Delay_ms(2);
    lcden=0;
}
//1602
void write_date(uchar date)
{
    rs=1;
    lcden=0;
    P0=date;
    LCD_Delay_ms(1);
    lcden=1;
    LCD_Delay_ms(2);
    lcden=0;
}
void W_lcd(unsigned char x,unsigned char y,unsigned char date)
{
        if (y==0){write_com(0x80+x);}
        else{write_com(0xc0+x);}
        write_date(date);
}
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char*s)
{
        if (y==0){write_com(0x80+x);}
        else{write_com(0xc0+x);}
        while (*s)
        {write_date(*s);s++;}
}
void init_lcd(void)
{
    wela=0;
    lcden=0;
    write_com(0x38);
    LCD_Delay_us(100);
    write_com(0x0c);
    write_com(0x06);
    write_com(0x01);
    write_com(0x08);
}
short keycheckdown()
{
    short temp1,temp2,temp,a=0xff;
    P1=0xf0;
    LCD_Delay_ms(20);
    temp1=P1;
    P1=0xff;
    LCD_Delay_ms(20);
    P1=0x0f;
    LCD_Delay_ms(20);
    temp2=P1;
    P1=0xff;
    temp=(temp1&0xf0)|(temp2&0x0f);
    switch(temp)
    {
        case 0x77:a=0x0d;break;
        case 0x7b:a=0x0e;break;
        case 0x7d:a=0x00;break;
        case 0x7e:a=0x0f;break;

        case 0xb7:a=0x0c;break;//*
        case 0xbb:a=0x9;break;//9
        case 0xbd:a=0x8;break;//8
        case 0xbe:a=0x7;break;//7

        case 0xd7:a=0x0b;break;//-
        case 0xdb:a=0x06;break;//6
        case 0xdd:a=0x05;break;//5
        case 0xde:a=0x04;break;//4

        case 0xe7:a=0x0a;break;//+
        case 0xeb:a=0x03;break;//3
        case 0xed:a=0x02;break;//2
        case 0xee:a=0x01;break;//1

        default:a=0xff;
    }
    return a;
}
void display_a()
{
    display[3]=data_a%10000/1000;
    display[2]=data_a%1000/100;
    display[1]=data_a%100/10;
    display[0]=data_a%10;

    write_com(0x80+0);
    if(data_a>999){write_date('0'+display[3]);}
    if(data_a>99){write_date('0'+display[2]);}
    if(data_a>9){write_date('0'+display[1]);}
    write_date('0'+display[0]);
}
void display_b()
{
    write_com(0x80+7);
    display[3]=data_b%10000/1000;
    display[2]=data_b%1000/100;
    display[1]=data_b%100/10;
    display[0]=data_b%10;

    if(data_b>999){write_date('0'+display[3]);}
    if(data_b>99) {write_date('0'+display[2]);}
    if(data_b>9)   {write_date('0'+display[1]);}
    write_date('0'+display[0]);
}
void display_c(x)
{
    if(data_c<100000000&&data_c>-1)
       
                { display[8]=data_c%1000000000/100000000;
        display[7]=data_c%100000000/10000000;
        display[6]=data_c%10000000/1000000;
        display[5]=data_c%1000000/100000;
        display[4]=data_c%100000/10000;
        display[3]=data_c%10000/1000;
        display[2]=data_c%1000/100;
        display[1]=data_c%100/10;
        display[0]=data_c%10;
        write_com(0x80+0x06+0x40);
        if(x==4)
        {
         if(data_c>99999999)   {write_date('0'+display[8]);}
         if(data_c>9999999)    {write_date('0'+display[7]);}
         if(data_c>999999)     {write_date('0'+display[6]);}
         if(data_c>99999)      {write_date('0'+display[5]);}
                               write_date('0'+display[4]);
                               write_date('.');
                               write_date('0'+display[3]);
                               write_date('0'+display[2]);
                               write_date('0'+display[1]);
                               write_date('0'+display[0]);
                         }      
        else{
            if(data_c>99999999)  {write_date('0'+display[8]);}
            if(data_c>9999999)  {write_date('0'+display[7]);}
            if(data_c>999999)  {write_date('0'+display[6]);}
            if(data_c>99999)  {write_date('0'+display[5]);}
            if(data_c>9999)  {write_date('0'+display[4]);}
            if(data_c>999)  {write_date('0'+display[3]);}
            if(data_c>999)  {write_date('0'+display[2]);}
            if(data_c>999)  {write_date('0'+display[1]);}
            write_date('0'+display[0]);
            }
                                        }
        else {
            write_com(0x80+11+0x40);
            write_date('E');
            write_date('R');
            write_date('R');
                                        write_date('O');
                                        write_date('R');
             }
}                                                                                                               
void eql(uchar x)
{
  switch(x)
  {
  case 1:data_c=data_a+data_b;break;
  case 2:if(data_a>=data_b){data_c=data_a-data_b;}
    else{data_c=data_b-data_a;W_lcd(5,1,'-');} ;
                     break;
  case 3:data_c=(data_a*data_b);break;
  case 4:if(data_b==0){LCD_Write_String(0,1,"ERROR");}
    else{data_c=(data_a*10000)/data_b;};break;
  case 0:break;
}                                         
}
void main()
{
    uchar key=0xff;
        uchar n=0;
        uchar m=5;
        uchar x=0;
        data_a=0;
        data_b=0;
        data_c=0;
        init_lcd();
        display_a();
while(1)
{
key=keycheckdown();
if(0xff!=key)
{
if(key<10)
{
if(n<4){data_a=data_a*10+key;m=5;display_a();}n++;
if(m<4){data_b=data_b*10+key;n=5;display_b();}m++;
}
else
{switch(key)
{
case 0x0a:n=5;m=0;x=1;W_lcd(5,0,'+');break;
case 0x0b:n=5;m=0;x=2;W_lcd(5,0,'-');break;
case 0x0c:n=5;m=0;x=3;W_lcd(5,0,'*');break;
case 0x0d:n=5;m=0;x=4;W_lcd(5,0,'/');break;
case 0x0e:n=5;m=5;eql(x);W_lcd(12,0,'=');display_c(x);break;
case 0x0f:n=0;x=0;m=5;data_a=0;data_b=0;data_c=0;LCD_Write_String(0,0,table);LCD_Write_String(0,1,table);W_lcd(0,0,'0');break;
}
}
do{P1=0xf0;}while(P1!=0xf0);
}
}
}
錯(cuò)誤:target not created
回復(fù)

使用道具 舉報(bào)

ID:291815 發(fā)表于 2018-4-17 23:19 | 顯示全部樓層
‘P’要大寫的
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-4-18 08:30 | 顯示全部樓層
陳藝萍 發(fā)表于 2018-4-17 20:53
#include
#define uint unsigned int
#define uchar unsigned char

要我的板子上沒(méi)有錯(cuò)誤啊。
回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-18 13:16 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-4-18 08:30
要我的板子上沒(méi)有錯(cuò)誤啊。

那是我的軟件問(wèn)題嗎?可是我別的程序都可以編譯
回復(fù)

使用道具 舉報(bào)

ID:306995 發(fā)表于 2018-4-18 13:23 | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-4-18 08:30
要我的板子上沒(méi)有錯(cuò)誤啊。

修改代碼后.zip (58.11 KB, 下載次數(shù): 4)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表