STC89C52代码在用数组判断处无法判断,再次跪求请各位大佬出山看看
自己调试过发现是判断无效,也就是“keyword[y]==right[y]”无效,但是语言和逻辑上都没有错呀,实在想不通,还请各位指点
主要单片机代码如下:
- #include<reg52.h>
- #include<stdio.h>
- #include<OLED.h>
- #include <intrins.h>
- #define led P1
- sbit b1=P2^0;
- sbit b2=P3^3;
- sbit b3=P2^1;
- sbit b4=P2^2;
- sbit b5=P4^2;
- sbit b6=P4^3;
- sbit bee=P2^4;
- sbit b10=P1^0;
- unsigned int y;
- unsigned int right[6]={1,3,1,4,2,1};
- unsigned int keyword[6]={1,3,1,4,2,1};
- void delay(int ms)
- {
- int ii,jj;
- if (ms<1) ms=1;
- for(ii=0;ii<ms;ii++)
- for(jj=0;jj<500;jj++);
- }
- void start()
- {
- bee=0;
- delay(10);
- OLED_Init();
- OLED_CLS();
- OLED_Fill(0x00);
- OLED_P14x16Ch(25,1,0);
- OLED_P14x16Ch(39,1,1);
- OLED_P14x16Ch(53,1,2);
- OLED_P14x16Ch(67,1,3); //显示密码文字//
- OLED_P14x16Ch(81,1,4);
- }
- void beep()
- {
- delay(20);
- bee=1;
- delay(100);
- bee=0;
- }
- void data_input()
- {
- unsigned int i=0;
- unsigned char location[6]={36,46,56,66,76,86};
- start();
- while(1)
- {
- if(i<=5)
- {
- if(b1==0)
- {
- delay(20);
- while(!b1);
- beep();
- keyword[i]=1;
- OLED_P6x8Str(location[i],5,"1");
- i++;
- }
-
- if(b5==0)
- {
- delay(20);
- while(!b5);
- beep();
- keyword[i]=2;
- OLED_P6x8Str(location[i],5,"2");
- i++;
- }
-
- if(b2==0)
- {
- delay(20);
- while(!b2);
- beep();
- keyword[i]=3;
- OLED_P6x8Str(location[i],5,"3");
- i++;
- }
-
- if(b6==0)
- {
- delay(20);
- while(!b6);
- beep();
- keyword[i]=4;
- OLED_P6x8Str(location[i],5,"4");
- i++;
- }
- }
- if(b3==0&&i<=6)
- {
- delay(20);
- while(!b3);
- beep();
- i--;
- OLED_P6x8Str(location[i],5," ");
- }
- if(b4==0)
- {
- delay(20);
- while(!b4);
- beep();
- break;
- }
- }
- }
- void main()
- {
- unsigned int t;
- data_input();
- for(y=0;y<6;y++)
- {
- if(keyword[y]==right[y])
- {
- t++;
- }
- }
- while(1)
- {
- if(t==5)
- {
- bee=0;
- delay(10);
- OLED_Init();
- OLED_CLS();
- OLED_Fill(0x00);
- OLED_P14x16Ch(30,6,3);
- OLED_P14x16Ch(46,6,4);
- OLED_P14x16Ch(62,6,5);
- OLED_P14x16Ch(78,6,6);
- delay(20);
- bee=1;
- delay(10000);
- bee=0;
- }
- else
- {
- OLED_P14x16Ch(30,6,3);
- OLED_P14x16Ch(46,6,4);
- OLED_P14x16Ch(62,6,7);
- OLED_P14x16Ch(78,6,8);
- delay(20);
- bee=1;
- delay(1000);
- bee=0;
- led=0;
- delay(50000);
- while(1)
- {
- P0=0x00;
- delay(1000);
- P0=0xff;
- delay(1000);
- }
- }
- }
- }
复制代码 |