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

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

QQ登錄

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

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

STC89C52單片機(jī)C語(yǔ)言代碼在用數(shù)組判斷處無(wú)法判斷,再次請(qǐng)各位大佬出山看看

[復(fù)制鏈接]
ID:950769 發(fā)表于 2021-9-2 16:27 | 顯示全部樓層 |閱讀模式
STC89C52代碼在用數(shù)組判斷處無(wú)法判斷,再次跪求請(qǐng)各位大佬出山看看
自己調(diào)試過(guò)發(fā)現(xiàn)是判斷無(wú)效,也就是“keyword[y]==right[y]”無(wú)效,但是語(yǔ)言和邏輯上都沒(méi)有錯(cuò)呀,實(shí)在想不通,還請(qǐng)各位指點(diǎn)

主要單片機(jī)代碼如下:
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #include<OLED.h>               
  4. #include <intrins.h>
  5. #define led P1

  6. sbit b1=P2^0;
  7. sbit b2=P3^3;
  8. sbit b3=P2^1;
  9. sbit b4=P2^2;
  10. sbit b5=P4^2;
  11. sbit b6=P4^3;
  12. sbit bee=P2^4;
  13. sbit b10=P1^0;



  14. unsigned int y;
  15. unsigned int right[6]={1,3,1,4,2,1};
  16. unsigned int keyword[6]={1,3,1,4,2,1};

  17. void delay(int ms)
  18. {
  19.    int ii,jj;
  20.    if (ms<1) ms=1;
  21.    for(ii=0;ii<ms;ii++)
  22.      for(jj=0;jj<500;jj++);      
  23. }

  24. void start()
  25. {
  26.         bee=0;
  27.         delay(10);
  28.         OLED_Init();
  29.         OLED_CLS();
  30.         OLED_Fill(0x00);
  31.         OLED_P14x16Ch(25,1,0);
  32.         OLED_P14x16Ch(39,1,1);
  33.         OLED_P14x16Ch(53,1,2);                     
  34.         OLED_P14x16Ch(67,1,3); //顯示密碼文字//               
  35.         OLED_P14x16Ch(81,1,4);        
  36. }

  37. void beep()
  38. {
  39.         delay(20);
  40.         bee=1;
  41.         delay(100);
  42.         bee=0;
  43. }

  44. void data_input()
  45. {
  46.         unsigned int i=0;
  47.         unsigned char location[6]={36,46,56,66,76,86};

  48.         start();

  49.         while(1)
  50.         {
  51.                 if(i<=5)
  52.                 {
  53.                         if(b1==0)
  54.                         {
  55.                                 delay(20);
  56.                                 while(!b1);
  57.                                 beep();
  58.                                 keyword[i]=1;
  59.                                 OLED_P6x8Str(location[i],5,"1");
  60.                                 i++;
  61.                         }
  62.                
  63.                         if(b5==0)
  64.                         {
  65.                                 delay(20);
  66.                                 while(!b5);
  67.                                 beep();
  68.                                 keyword[i]=2;
  69.                                 OLED_P6x8Str(location[i],5,"2");
  70.                                 i++;
  71.                         }
  72.                
  73.                         if(b2==0)
  74.                         {
  75.                                 delay(20);
  76.                                 while(!b2);
  77.                                 beep();
  78.                                 keyword[i]=3;
  79.                                 OLED_P6x8Str(location[i],5,"3");
  80.                                 i++;
  81.                         }
  82.                
  83.                         if(b6==0)
  84.                         {
  85.                                 delay(20);
  86.                                 while(!b6);
  87.                                 beep();
  88.                                 keyword[i]=4;
  89.                                 OLED_P6x8Str(location[i],5,"4");
  90.                                 i++;
  91.                         }
  92.                 }

  93.                 if(b3==0&&i<=6)
  94.                 {
  95.                         delay(20);
  96.                         while(!b3);
  97.                         beep();
  98.                         i--;
  99.                         OLED_P6x8Str(location[i],5," ");
  100.                 }

  101.                 if(b4==0)
  102.                 {
  103.                         delay(20);
  104.                         while(!b4);
  105.                         beep();
  106.                         break;
  107.                 }
  108.         }
  109. }

  110. void main()
  111. {
  112.         unsigned int t;
  113.     data_input();
  114.         for(y=0;y<6;y++)
  115.         {
  116.                 if(keyword[y]==right[y])
  117.                 {
  118.                         t++;
  119.                 }
  120.         }
  121.         while(1)
  122.         {
  123.                 if(t==5)
  124.                 {
  125.                         bee=0;
  126.                 delay(10);
  127.                  OLED_Init();
  128.                 OLED_CLS();
  129.                 OLED_Fill(0x00);
  130.                         OLED_P14x16Ch(30,6,3);
  131.                         OLED_P14x16Ch(46,6,4);
  132.                         OLED_P14x16Ch(62,6,5);
  133.                         OLED_P14x16Ch(78,6,6);
  134.                         delay(20);
  135.                         bee=1;
  136.                         delay(10000);
  137.                         bee=0;        
  138.                 }
  139.                 else
  140.                 {
  141.                         OLED_P14x16Ch(30,6,3);
  142.                         OLED_P14x16Ch(46,6,4);
  143.                         OLED_P14x16Ch(62,6,7);
  144.                         OLED_P14x16Ch(78,6,8);
  145.                         delay(20);
  146.                         bee=1;
  147.                         delay(1000);
  148.                         bee=0;
  149.                         led=0;
  150.                         delay(50000);        
  151.                         while(1)
  152.                 {
  153.                                 P0=0x00;
  154.                     delay(1000);
  155.                     P0=0xff;
  156.                     delay(1000);
  157.                }
  158.                 }
  159.         }
  160. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2021-9-2 19:14 | 顯示全部樓層
本帖最后由 xuyaqi 于 2021-9-2 19:17 編輯

這個(gè)循環(huán)進(jìn)去就出不來(lái),程序沒(méi)發(fā)循環(huán)。while(1)
{
    P0=0x00;
    delay(1000);
    P0=0xff;
   delay(1000);
}

回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2021-9-2 19:31 | 顯示全部樓層
做這樣判斷有和用處!Y值一樣數(shù)組值一樣還用判斷?
回復(fù)

使用道具 舉報(bào)

ID:950769 發(fā)表于 2021-9-2 19:33 | 顯示全部樓層
xianfajushi 發(fā)表于 2021-9-2 19:31
做這樣判斷有和用處!Y值一樣數(shù)組值一樣還用判斷?

兩個(gè)數(shù)組一樣是之前為了查問(wèn)題換了,原來(lái)keyword那個(gè)數(shù)組應(yīng)該是空的
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-9-2 19:47 | 顯示全部樓層
把:
unsigned int right[6]={1,3,1,4,2,1};
unsigned int keyword[6]={1,3,1,4,2,1};
改成:
unsigned char code right[]={1,3,1,4,2,1};
unsigned char code keyword[]={1,3,1,4,2,1};
試試,別談理論,試完再說(shuō)。
回復(fù)

使用道具 舉報(bào)

ID:950769 發(fā)表于 2021-9-2 19:59 | 顯示全部樓層
xuyaqi 發(fā)表于 2021-9-2 19:14
這個(gè)循環(huán)進(jìn)去就出不來(lái),程序沒(méi)發(fā)循環(huán)。while(1)
{
    P0=0x00;

我知道這里跳不出來(lái)但我想問(wèn)的問(wèn)題是
for(y=0;y<6;y++)
        {
                if(keyword[y]==right[y])
                {
                        t++;
                }
        }
這里的判斷為什么不起作用
回復(fù)

使用道具 舉報(bào)

ID:950769 發(fā)表于 2021-9-2 20:01 | 顯示全部樓層
188610329 發(fā)表于 2021-9-2 19:47
把:
unsigned int right[6]={1,3,1,4,2,1};
unsigned int keyword[6]={1,3,1,4,2,1};

已經(jīng)試過(guò)了,沒(méi)用
回復(fù)

使用道具 舉報(bào)

ID:624769 發(fā)表于 2021-9-2 20:11 | 顯示全部樓層
雨人1212 發(fā)表于 2021-9-2 20:01
已經(jīng)試過(guò)了,沒(méi)用

for(y=0;y<6;y++)
        {
                if(keyword[y]==right[y])
                {
                        t++;
                }
        }
你這里只跑一次,跑完t = 6;
之后進(jìn)入while(1) 這里就再也不跑了,你說(shuō)的不起作用是什么不起作用? 不相等? t不變6?
回復(fù)

使用道具 舉報(bào)

ID:950769 發(fā)表于 2021-9-2 21:27 | 顯示全部樓層

按道理是t變成6進(jìn)入循環(huán),循環(huán)判斷t==6,然后執(zhí)行t=6時(shí)的程序,但是始終執(zhí)行的是else后的程序,我想不通是哪里出問(wèn)題了
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2021-9-2 22:18 | 顯示全部樓層
雨人1212 發(fā)表于 2021-9-2 21:27
按道理是t變成6進(jìn)入循環(huán),循環(huán)判斷t==6,然后執(zhí)行t=6時(shí)的程序,但是始終執(zhí)行的是else后的程序,我想不通是 ...

2021-09-02_221652.png
t==6 執(zhí)行else,沒(méi)錯(cuò)啊~?
回復(fù)

使用道具 舉報(bào)

ID:950769 發(fā)表于 2021-9-2 22:25 | 顯示全部樓層
lkc8210 發(fā)表于 2021-9-2 22:18
t==6 執(zhí)行else,沒(méi)錯(cuò)啊~?

那個(gè)是之前調(diào)試錯(cuò)誤的時(shí)候改的忘了改為“t==6”,但就算改為"t==6"這個(gè)判斷仍然是不起作用的,我很迷
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2021-9-2 22:57 | 顯示全部樓層
雨人1212 發(fā)表于 2021-9-2 22:25
那個(gè)是之前調(diào)試錯(cuò)誤的時(shí)候改的忘了改為“t==6”,但就算改為"t==6"這個(gè)判斷仍然是不起作用的,我很迷

我改為“t==6”
運(yùn)行后直接按b4
可以進(jìn)if(t==6)啊~

你如何判斷進(jìn)哪個(gè)?

另外
你開(kāi)頭#define led P1
在else內(nèi)又是用P0=0x00;
你硬件是接哪組腳?
回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2021-9-3 06:19 | 顯示全部樓層
雨人1212 發(fā)表于 2021-9-2 19:59
我知道這里跳不出來(lái)但我想問(wèn)的問(wèn)題是
for(y=0;y

你根據(jù)什么說(shuō)判斷不起作用。
回復(fù)

使用道具 舉報(bào)

ID:935919 發(fā)表于 2021-9-3 08:18 | 顯示全部樓層
代碼我沒(méi)有細(xì)看, 不知道right和keword的值在中間過(guò)程有沒(méi)有變化.

但是根據(jù)你的描述, 你看看編譯后的匯編代碼, 看看right[y] == keyword[y]是否存在?

可以試試用下面的方法再試試看看:
volatile unsigned int right[6]={1,3,1,4,2,1};
volatile unsigned int keyword[6]={1,3,1,4,2,1};
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2021-9-3 08:50 | 顯示全部樓層
從哪里你得出無(wú)法正確判斷的結(jié)論?
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2021-9-3 08:51 | 顯示全部樓層
代碼執(zhí)行后t等于多少知道?
回復(fù)

使用道具 舉報(bào)

ID:332444 發(fā)表于 2021-9-3 08:52 | 顯示全部樓層
而且那段代碼只能執(zhí)行一次
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区在线 | 国产欧美一区二区三区久久 | 久久综合久色欧美综合狠狠 | 亚洲精品一区中文字幕乱码 | 国产999在线观看 | 久久草在线视频 | 亚洲第一在线视频 | 午夜a级理论片915影院 | 欧美精品日韩精品国产精品 | 99热国产在线播放 | 欧美另类视频在线 | 一区二区三区免费 | 伊人狠狠 | 国产激情在线 | 欧美美女二区 | 久久久久国产精品午夜一区 | 视频一二区 | 二区欧美 | 日韩免费视频一区二区 | 日韩精品久久久 | 成人精品久久日伦片大全免费 | 久久黄网 | 欧美成视频 | 日韩不卡在线 | 毛片一区二区三区 | 国久久| 国产视频久久久 | 天天综合网天天综合色 | 热99在线| 日韩欧美大片 | 黄视频免费 | 亚洲欧洲精品一区 | 一区二区三区福利视频 | 欧美天堂 | 婷婷色国产偷v国产偷v小说 | 自拍偷拍第一页 | 91精品国产综合久久精品图片 | 免费的av网站 | 久久国产精品视频 | 久久久久9999亚洲精品 | 91污在线 |