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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1800|回復: 1
收起左側

有關單片機C語言程序跳到未執行的子函數的有關問題

[復制鏈接]
ID:497242 發表于 2019-4-29 23:31 | 顯示全部樓層 |閱讀模式
這兩天在自己調程序,發現程序不按照預期的去執行,在判斷后會跳到未執行的子函數中,不明白是什么情況。
貼出有關的代碼:
  1. void main()
  2. {

  3.         lcd_init();
  4.         Uart_Init();
  5.         Key_Init();
  6.         clear_();
  7.         delay(100);
  8.         while(1)
  9.         {
  10.         cod_ = key_scan();//判斷以及編碼               
  11.         num_ = encode(cod_);//解碼程序。得出數字
  12.         if(num_!=16)
  13.         {
  14.                 if(num_==3)
  15.                         {
  16.                         key();
  17.                         }
  18.                 if(num_==7)
  19.                         {
  20.                          iccade();
  21.                         }
  22.                 if(num_==11)
  23.                         {
  24.                         AS_608();
  25.                         }                  
  26.         }
  27.         }
  28.         
  29. }


  30. 這是主函數。num==3,正常跳到指定函數,num==7會跳到非指定函數,按照正常來說會進入iccade()函數,但是會進到FPM10A_Add_Fingerprint()函數中。
  31. void iccade()
  32. {   
  33.      unsigned  char status,i,j=0;
  34.          unsigned  char m=0,a,b,c;

  35.      InitializeSystem( ); //中斷初始化
  36.          lcd_init();//lcd初始化
  37.      PcdReset();//尋卡
  38.      PcdAntennaOff();//關天線
  39.      PcdAntennaOn();//開天線
  40.          display();//顯示初始化         
  41.     while ( 1 )
  42.      {   
  43.          status = PcdRequest(0x52, g_ucTempbuf);//尋卡
  44.          if (status != MI_OK)
  45.          {   
  46.               InitializeSystem( );
  47.                        PcdReset();
  48.                        PcdAntennaOff();
  49.                       PcdAntennaOn();
  50.                           continue;
  51.          }
  52.         status = PcdAnticoll(g_ucTempbuf);//防沖撞
  53.          if (status != MI_OK)
  54.          {    continue;    }
  55.                  lcd_wcmd(0x01);
  56.                  delay(10);
  57.                  lcd_pos(0,0);
  58.                  for(i=0;i<4;i++)
  59.                  {
  60.                         a=g_ucTempbuf[i];
  61.                         b=a/16;
  62.                         c=a%16;                        
  63.                         data6[i*2]=table[b];
  64.                         delay(10);                                                                                       
  65.                         data6[i*2+1]=table[c];
  66.                    }
  67.                  for(i=0;i<8;i++)
  68.                  {
  69.                          if(ICpw[i]==data6[i])
  70.                         {
  71.                                 if(i==7)
  72.                                 {
  73.                                  same();
  74.                                  delay(1000);
  75.                                  lcd_wcmd(0x01);
  76.                                  display();
  77.                                  break;
  78.                                  }
  79.                                          continue;
  80.                         }
  81.                          else
  82.                          diff_();
  83.                          delay(500);
  84.                          lcd_wcmd(0x01);
  85.                          display();
  86.                          break;
  87.                  }           
  88. }
  89. }


  90. void FPM10A_Add_Fingerprint()
  91. {
  92.         unsigned char id_show[]={0,0,0};
  93.         lcd_wcmd(0x01); //清屏
  94.         finger_id=0;  
  95.         while(1)
  96.         {
  97.         LCD1602_Display(0x80,"   Add  finger  ",0,16);
  98.         LCD1602_Display(0xc0,"    ID is       ",0,16);
  99.         //按返回鍵直接回到主菜單
  100.         if(KEY_CANCEL == 0)
  101.         {
  102.                  while(KEY_CANCEL==0);
  103.                  break;
  104.         }



  105. 當num==11時,執行woshou()函數時,顯示完"Loading"后又會跳到FPM10A_Add_Fingerprint()函數,按下返回鍵才會回到woshou()函數繼續執行。
  106. void AS_608()
  107. {
  108.         lcd_wcmd(0x01);
  109.         LCD1602_Display(0x80,"Fingerprint Test",0,16);
  110.         delay(500);
  111.         WoShou();
  112.         delay(1000);
  113.         while(1)
  114.         {




  115. void WoShou()//握手指令
  116. {
  117.         char i;
  118.         LCD1602_Display(0xc0,"Loading",0,7);                   //設備加載中界面                                                           

  119.         for(i=0;i<8;i++)                                                           //進度條式更新,看起來美觀
  120.         {
  121.                 lcd_wdat(42);                               //42對應ASIC碼的 *
  122.                 delay(200);                                                           //控制進度條速度
  123.         }               
  124.         
  125.         FPM10A_Cmd_Check();
  126.         FPM10A_Receive_Data(12);
  127.         if(FPM10A_RECEICE_BUFFER[9]==0);        
  128.         LCD1602_Display(0xc0,"Docking  success",0,16);
  129.         delay(100);
  130.          
  131.         
  132. }
復制代碼




貼出有關函數的代碼 ,求各位大佬告知是什么情況。

回復

使用道具 舉報

ID:123289 發表于 2019-4-30 16:17 | 顯示全部樓層
沒有看你的程序,只看了題目!
估計程序中含有中斷,中斷發生時會打斷你的正常流程,跳到服務程序中去,不過會回來的,但中斷服務執行時間過長,就難說了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线高清 | 国产日韩一区二区 | 欧美中文字幕一区二区三区亚洲 | 亚洲成人一区二区 | 久久狠狠 | 狠狠的干狠狠的操 | 草久网| www.亚洲| 亚洲网站在线观看 | 免费观看av | 99久久国产综合精品麻豆 | 欧产日产国产精品国产 | 欧美黄色免费网站 | 日韩午夜激情 | 亚洲天堂精品一区 | 夜夜av| 免费观看一级毛片 | 日韩久久中文字幕 | 成人欧美一区二区三区黑人孕妇 | 亚洲人a | 国产精品福利网站 | 亚洲视频免费观看 | 男人天堂久久 | 日韩小视频在线 | 欧美9999 | 亚洲综合二区 | 日本在线视频一区二区 | 久久中文免费视频 | 一区二区福利视频 | 夜夜爽夜夜操 | 国产精品视频免费观看 | 欧美性乱 | 亚洲精品一二三区 | 日韩乱码av | 99在线免费观看 | 国产一区二区三区视频免费观看 | 亚洲综合在线一区二区 | 亚洲网站免费看 | 特级丰满少妇一级aaaa爱毛片 | 欧美性猛交一区二区三区精品 | 日韩久久久久 |