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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

各位大佬,請幫忙看一下為什么我這個keil密碼鎖程序會出現未調用的

[復制鏈接]
跳轉到指定樓層
樓主
具體情況如下
Build started: Project: mini1
Build target 'Target 1'
compiling mini1.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?DISPLAYONE?MINI1
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?DISPLAYINPUT?MINI1
Program Size: data=46.5 xdata=0 code=2390
creating hex file from ".\Objects\mini1"...
".\Objects\mini1" - 0 Error(s), 2 Warning(s).
Build Time Elapsed:  00:00:01
程序如下
#include<reg51.h>
#include<intrins.h>
#define LCM_Data  P0
#define uchar unsigned char
#define uint  unsigned int
#define w 6
sbit lcd1602_rs=P2^5;
sbit lcd1602_rw=P2^6;
sbit lcd1602_en=P2^7;
sbit Scl=P3^4;
sbit Sda=P3^5;
sbit ALAM=P2^1;
sbit KEY=P3^6;
sbit open_led=P2^2;
bit  operation=0;
bit  pass=0;
bit  ReInputEn=0;
bit  s3_keydown=0;
bit  key_disable=0;
unsigned char countt0,second;
void Delay5Ms(void);
unsigned char code a[]={0xFE,0xFD,0xFB,0xF7};
unsigned char code start_line[]={"password:     "};
unsigned char code name[]={"===Coded LocK==="};
unsigned char code Correct[]={"    correct    "};
unsigned char code Error[]={"     error     "};
unsigned char code codepass[]={"    pass    "};
unsigned char code LockOpen[]={"    open    "};
unsigned char code SetNew[]={"SetNewWordEnable"};
unsigned char code Input[]={"input:         "};
unsigned char code ResetOK[]={"ResetPasswordOK"};
unsigned char code initword[]={"Init password..."};
unsigned char code Er_try[]={"error,try again!"};
unsigned char code again[]={"input again    "};
unsigned char InputData[6];
unsigned char CurrentPassword[6]={1,3,1,4,2,0};
unsigned char TempPassword[6];
unsigned char N=0;
unsigned char ErrorCont;
unsigned char CorrectCont;
unsigned char ReInputCont;
unsigned char code initpassword[6]={0,0,0,0,0,0};
void Delay5Ms(void)
{
        unsigned int TempCyc=5552;
        while(TempCyc--);
}
void Delay400Ms(void)
{
        unsigned char TempCycA=5;
        unsigned int TempCycB;
        while(TempCycA--)
        {
                TempCycB=7269;
                while(TempCycB--);
        }
}
void mDelay(uint t)
{
        uchar i;
        while(t--)
        {
                for(i=0;i<125;i++)
                {;}
        }
}
void Nop(void)
{
        _nop_();
        _nop_();
        _nop_();
        _nop_();
}
void Start(void)
{
        Sda=1;
        Scl=1;
        Nop();
        Sda=0;
        Nop();
}
void Stop(void)
{
        Sda=0;
        Scl=1;
        Nop();
        Sda=1;
        Nop();
}
void Ack(void)
{
        Sda=0;
        Nop();
        Scl=1;
        Nop();
        Scl=0;
}
void NoAck(void)
{
        Sda=1;
        Nop();
        Scl=1;
        Nop();
        Scl=0;
}
void Send(uchar Data)
{
        uchar BitCounter=8;
        uchar temp;
        do
        {
                temp=Data;
                Scl=0;
                Nop();
                if((temp&0x80)==0x80)
                Sda=1;
                else
                Sda=0;
                Scl=1;
                temp=Data<<1;
                Data=temp;
                BitCounter--;
        }
        while(BitCounter);
        Scl=0;
}
uchar Read(void)
{
        uchar temp=0;
        uchar temp1=0;
        uchar BitCounter=8;
        Sda=1;
        do{
                Scl=0;
                Nop();
                Scl=1;
                Nop();
                if(Sda)
                        temp=temp|0x01;
                else
                        temp=temp&0xfe;
                if(BitCounter-1)
                {
                        temp1=temp<<1;
                        temp=temp1;
                }
                BitCounter--;
        }
        while(BitCounter);
        return(temp);
}
void WrToROM(uchar Data[],uchar Address,uchar Num)
{
        uchar i;
        uchar *PData;
        PData=Data;
        for(i=0;i<Num;i++)
        {
                Start();
                Send(0xa0);
                Ack();
                Send(Address+i);
                Ack();
                Send(*(PData+i));
                Ack();
                Stop();
                mDelay(20);
        }
}
void RdFromROM(uchar Data[],uchar Address,uchar Num)
{
        uchar i;
        uchar *PData;
        PData=Data;
        for(i=0;i<Num;i++)
        {
                Start();
                Send(0xa0);
                Ack();
                Send(Address+i);
                Ack();
                Start();
                Send(0xa1);
                Ack();
                *(PData+i)=Read();
                Scl=0;
                NoAck();
                Stop();
        }
}
#define yi 0x80
#define er 0x80+0x40
void delay(uint xms)
{
        uint x,y;
        for(x=xms;x>0;x--)
                for(y=110;y>0;y--);
}
void write_1602com(uchar com)
{
        lcd1602_rs=0;
        lcd1602_rw=0;
        P0=com;
        delay(1);
        lcd1602_en=1;
        delay(1);
        lcd1602_en=0;
}
void write_1602dat(uchar dat)
{
        lcd1602_rs=1;
        lcd1602_rw=0;
        P0=dat;
        delay(1);
        lcd1602_en=1;
        delay(1);
        lcd1602_en=0;
}
void lcd_init(void)
{
        write_1602com(0x38);
        write_1602com(0x0c);
        write_1602com(0x06);
        write_1602com(0x01);
}
unsigned char coding(unsigned char m)
{
        unsigned char k;
        switch(m)
        {
        case(0x11):k=1;break;
        case(0x21):k=2;break;
        case(0x41):k=3;break;
        case(0x81):k='A';break;
        case(0x12):k=4;break;
        case(0x22):k=5;break;
        case(0x42):k=6;break;
        case(0x82):k='B';break;
        case(0x14):k=7;break;
        case(0x24):k=8;break;
        case(0x44):k=9;break;
        case(0x84):k='C';break;
        case(0x18):k='*';break;
        case(0x28):k=0;break;
        case(0x48):k='#';break;
        case(0x88):k='D';break;
        }
        return(k);
}
unsigned char keynum(void)
{
        unsigned char row,col,i;
        P1=0xf0;
        if((P1&0xf0)!=0xf0)
        {
                Delay5Ms();
                Delay5Ms();
                if((P1&0xf0)!=0xf0)
                {
                        row=P1^0xf0;
                        i=0;
                        P1=a[i];
                        while(i<4)
                        {
                                if((P1&0xf0)!=0xf0)
                                {
                                        col=~(P1&0xff);
                                        break;
                                }
                                else
                                {
                                        i++;
                                        P1=a[i];
                                }
                        }
                }
                else
                {
                        return 0;
                }
                while((P1&0xf0)!=0xf0);
                return(row|col);
        }
        else return 0;
}
void OneAlam(void)
{
        ALAM=0;
        Delay5Ms();
        ALAM=1;
}
        void TwoAlam(void)
        {
        ALAM=0;
        Delay5Ms();
        ALAM=1;       
        Delay5Ms();
        ALAM=0;
        Delay5Ms();
        ALAM=1;       
        }
        void ThreeAlam(void)
        {
        ALAM=0;
        Delay5Ms();
        ALAM=1;       
        Delay5Ms();
        ALAM=0;
        Delay5Ms();
        ALAM=1;       
        Delay5Ms();
        ALAM=0;       
        Delay5Ms();
        ALAM=1;
        }
        void DisplayOne(void)
{
//       DisplayOneChar(9+N,1,'*')
               write_1602com(yi+5+N);
               write_1602dat('*');
}
void DisplayChar(void)
{
        unsigned char i;
        if(pass==1)
                                {
                                        //DisplayListChar(0,1,LockOpen);
                                        write_1602com(er);
                                        for(i=0;i<16;i++)
                                        {
                                                write_1602dat(LockOpen[i]);
                                        }
                                }
                                else
                                {
                                        if(N==0)
                                        {
                                                //DisplayListChar(0,1,Error);
                                                write_1602com(er);
                                                for(i=0;i<16;i++)
                                                {
                                                        write_1602dat(Error[i]);
                                                }
                                        }
                                        else
                                        {
                                                        //DisplayListChar(0,1,start_line);
                                                        write_1602com(er);
                                                        for(i=0;i<16;i++)
                                                        {
                                                                write_1602dat(start_line[i]);
                                                        }
                                                }
                                        }
                                }
void DisplayInput(void)
{
        unsigned char i;
        if(CorrectCont==1)
        {
     //DisplayListInput(0,0,Input);
           write_1602com(er);
           for(i=0;i<16;i++)
          {
                 write_1602dat(Input[i]);
          }
        }       
}
                                void ResetPassword(void)
                                {
                                        unsigned char i;
                                        unsigned char j;
                                        if(pass==0)
                                        {
                                                pass=0;
                                                DisplayChar();
                                                ThreeAlam();
                                        }
                                        else
                                        {
                                                if(ReInputEn==1)
                                                {
                                                        if(N==6)
                                                        {
                                                                ReInputCont++;
                                                                if(ReInputCont==2)
                                                                {
                                                                        for(i=0;i<6;)
                                                                        {

                                                                if(TempPassword[i]==InputData[i])
                                                                        i++;
                                                                else
                                                                {
                                                                        //DisplayListChar(0,1,Error);
                                                                        write_1602com(er);
                                                                        for(j=0;j<16;j++)
                                                                        {
                                                                                write_1602dat(Error[j]);
                                                                        }
                                                                        ThreeAlam();
                                                                        pass=0;
                                                                        ReInputEn=0;
                                                                        ReInputCont=0;
                                                                        DisplayChar();
                                                                        break;
                                                                }
                                                                        }
                                                                        if(i==6)
                                                                        {
                                                                                //DisplayListChar(0,1,ResetOK);
                                                                                write_1602com(er);
                                                                                for(j=0;j<16;j++)
                                                                                {
                                                                                        write_1602dat(ResetOK[j]);
                                                                                }
                                                                                TwoAlam();
                                                                                WrToROM(TempPassword,0,6);
                                                                                ReInputEn=0;
                                                                        }
                                                                        ReInputCont=0;
                                                                        CorrectCont=0;
                                                                }
                                                                else
                                                                {
                                                                        OneAlam();
                                                                        write_1602com(er);
                                                                        for(j=0;j<16;j++)
                                                                {
                                                                        write_1602dat(again[j]);
                                                                }
                                                                        for(i=0;i<6;i++)
                                                                        {
                                                                                TempPassword[i]=InputData[i];
                                                                        }
                                                                }
                                                                N=0;
                                                        }
                                                }
                                        }
                                }
                                void Alam_KeyUnable(void)
                                {
                                        P1=0x00;
                                        {
                                                ALAM=~ALAM;
                                                Delay5Ms();
                                        }
                                }
                                void Cancel(void)
                                {
                                        unsigned char i;
                                        unsigned char j;
                                        //DisplayListChar(0,1,start_line);
                                        write_1602com(er);
                                        for(j=0;j<16;j++)
                                        {
                                                write_1602dat(start_line[j]);
                                        }
                                        TwoAlam();
                                        for(i=0;i<6;i++)
                                        {
                                                InputData[i]=0;
                                        }
                                        KEY=1;
                                        ALAM=1;
                                        operation=0;
                                        pass=0;
                                        ReInputEn=0;
                                        ErrorCont=0;
                                        CorrectCont=0;
                                        ReInputCont=0;
                                        open_led=1;
                                        s3_keydown=0;
                                        key_disable=0;
                                        N=0;
                                }
                                void Ensure(void)
                                {
                                        unsigned char i,j;
                                        RdFromROM(CurrentPassword,0,6);
                                        if(N==6)
                                        {
                                                if(ReInputEn==0)
                                                {
                                                        for(i=0;i<6;)
                                                        {
                                                                if(CurrentPassword[i]==InputData[i])
                                                                {
                                                                        i++;
                                                                }
                                                                else
                                                                {
                                                                        ErrorCont++;
                                                                        if(ErrorCont==3)
                                                                        {
                                                                                write_1602com(er);
                                                                                for(i=0;i<16;i++)
                                                                                {
                                                                                        write_1602dat(Error[i]);
                                                                                }
                                                                                do
                                                                                Alam_KeyUnable();
                                                                                while(1);
                                                                        }
                                                                        else
                                                                        {
                                                                                TR0=1;
                                                                                key_disable=1;
                                                                                pass=0;
                                                                                break;
                                                                        }
                                                                }
                                                        }
                                                        if(i==6)
                                                        {
                                                                CorrectCont++;
                                                                if(CorrectCont==1)
                                                                {
                                                                        //DisplayListChar(0,1,LockOPen);
                                                                        write_1602com(er);
                                                                        for(j=0;j<16;j++)
                                                                        {
                                                                                write_1602dat(LockOpen[j]);
                                                                        }
                                                                        TwoAlam();
                                                                        KEY=0;
                                                                        pass=1;
                                                                        TR0=1;
                                                                        open_led=0;
                                                                        for(j=0;j<6;j++)
                                                                        {
                                                                                InputData[i]=0;
                                                                        }
                                                                }
                                                                else
                                                                {
                                                                write_1602com(er);
                                                                for(j=0;j<16;j++)
                                                                {
                                                                        write_1602dat(SetNew[j]);
                                                                }
                                                                TwoAlam();
                                                                ReInputEn=1;
                                                                CorrectCont=0;
                                                                }
                                                        }
                                                        else
                                                        {
                                                                if((InputData[0]==1)&&(InputData[1]==3)&&(InputData[2]==1)&&(InputData[3]==4)&&(InputData[4]==2)&&(InputData[5]==0))
                                                                {
                                                                        WrToROM(initpassword,0,6);
                                                                        //DisplayListChar(0,1,initword);
                                                                        write_1602com(er);
                                                                        for(j=0;j<16;j++)
                                                                        {
                                                                                write_1602dat(initword[j]);
                                                                        }
                                                                        TwoAlam();
                                                                        Delay400Ms();
                                                                        TwoAlam();
                                                                        N=0;
                                                                }
                                                                else
                                                                {
                                                                        //DisplayListChar(0,1,Error);
                                                                        write_1602com(er);
                                                                        for(j=0;j<16;j++)
                                                                        {
                                                                                write_1602dat(Error[j]);
                                                                        }
                                                                        ThreeAlam();
                                                                        pass=0;
                                                                }
                                                        }
                                                }
                                            else
                                                {
                                                    //DisplayListChar(0,1,Er_try);
                                                    write_1602com(er);
                                                    for(j=0;j<16;j++)
                                                        {
                                                            write_1602dat(Er_try[j]);
                                                        }
                                                    ThreeAlam();
                                                }
                                        }
                                        else
                                        {
                                                write_1602com(er);
                                                for(j=0;j<16;j++);
                                                {
                                                        write_1602dat(Error[j]);
                                                }
                                                ThreeAlam();
                                                pass=0;
                                        }
                                        N=0;
                                        operation=1;
                                }
                                        void main(void)
                                        {
                                                unsigned char KEY,NUM;
                                                unsigned char i,j;
                                                P1=0xFF;
                                                TMOD=0x11;
                                                TL0=0xB0;
                                                TH0=0x3C;
                                                EA=1;
                                                ET0=1;
                                                TR0=0;
                                                Delay400Ms();
                                                lcd_init();
                                                write_1602com(yi);
                                                for(i=0;i<16;i++)
                                                {
                                                        write_1602dat(name[i]);
                                                }
                                                write_1602com(er);
                                                for(i=0;i<16;i++)
                                                {
                                                        write_1602dat(start_line[i]);
                                                }
                                                write_1602com(er+9);
                                                write_1602com(0x0f);
                                                Delay5Ms();
                                                N=0;
                                                while(1)
                                                {
                                                        if(key_disable==1)
                                                                Alam_KeyUnable();
                                                        else
                                                                ALAM=1;
                                                        KEY=keynum();
                                                        if(KEY!=0)
                                                        {
                                                                if(key_disable==1)
                                                                {
                                                                        second=0;
                                                                }
                                                                else
                                                                {
                                                                        NUM=coding(KEY);
                                                                        {
                                                                                switch(NUM)
                                                                                {
                                                                                case('A'):      ;            break;
                                                                                case('B'):     ;             break;
                    case('C'):      ;            break;
                                                                                case('D'): ResetPassword();  break;
                                                                                case('*'): Cancel();         break;
                                                                                case('#'): Ensure();         break;
                                                                                default:
                                                                                        {
                                                                                                write_1602com(er);
                                                                                                for(i=0;i<16;i++)
                                                                                                {
                                                                                                        write_1602dat(Input[i]);
                                                                                                }
                                                                                                operation=0;
                                                                                                if(N<6)
                                                                                                {
                                                                                                        OneAlam();
                                                                                                        //DisplayOneChar(6+N,1,'*');
                                                                                                        for(j=0;j<=N;j++)
                                                                                                        {
                                                                                                                write_1602com(er+6+j);
                                                                                                                write_1602dat('*');
                                                                                                        }
                                                                                                        InputData[N]=NUM;
                                                                                                        N++;
                                                                                                }
                                                                                                else
                                                                                                {
                                                                                        N=6;
                                                                                        break;               
                                                                                                }
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                        }
                                                }
                                        }
                                        void  time0_int(void) interrupt 1
                                        {
                                                TL0=0xB0;
                                                TH0=0x3C;
                                                countt0++;
                                                if(countt0==20)
                                                {
                                                        countt0=0;
                                                        second++;
                                                        if(pass==1)
                                                        {
                                                                if(second==1)
                                                                {
                                                                        open_led=1;
                                                                        TR0=0;
                                                                        TL0=0xB0;
                                                                        TH0=0x3C;
                                                                        second=0;
                                                                }
                                                        }
                                                        else
                                                        {
                                                                if(second==3)
                                                                {
                                                                TR0=0;
                                                                second=0;
                                                                key_disable=0;
                                                                s3_keydown=0;
                                                                TL0=0xB0;
                                                                TH0=0x3C;
                                                                }
                                                                else
                                                                        TR0=1;
                                                        }
                                                }
                                        }






                                               





                                                       



                                       
                                       



                                                                       









                                                                       
                                                                       







                                       
                       







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

使用道具 舉報

沙發
ID:102963 發表于 2021-12-2 15:31 | 只看該作者
回復

使用道具 舉報

板凳
ID:25310 發表于 2021-12-2 15:35 | 只看該作者
忽略它,沒用到沒關系的。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区不卡 | 亚洲精品免费看 | 2019天天干天天操 | 久久久久国产精品一区二区 | 国产欧美日韩一区二区三区在线观看 | 免费av在线 | 在线视频一区二区三区 | 欧美久久久 | 一区二区三区视频在线 | 91精品久久久久久久 | 久久伊| 中文字幕色站 | 在线欧美一区二区 | 在线91| 自拍视频在线观看 | 黄色在线播放视频 | 午夜天堂精品久久久久 | 色综合天天天天做夜夜夜夜做 | 羞羞视频在线观看网站 | 中文字幕人成人 | 国产精品美女久久久久久免费 | 青青草原精品99久久精品66 | 91在线精品视频 | 日日操夜夜操天天操 | 天天插天天舔 | 成人黄色av网站 | 久久久久久综合 | 国产一区亚洲二区三区 | 亚洲一区二区三区视频 | 五月婷婷亚洲 | 97视频在线观看网站 | 久草中文在线 | www.成人.com| 中文字幕视频一区二区 | 毛片a级毛片免费播放100 | 成人在线视频网址 | 亚洲夜射 | 91欧美精品成人综合在线观看 | 91精品国产91久久久久久密臀 | 国产精品久久久久久久久图文区 | 亚洲欧美在线视频 |