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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請教*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS要怎么消除?

[復制鏈接]
跳轉到指定樓層
樓主
ID:130231 發表于 2017-9-4 13:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//----------------------------------------------------------------------------------------------------------------------------------
//程序名:  main.c  2017/8/16
//程序功能:安卓手機藍牙控制繼電器程序并用1602顯示*
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar buf[10]=0;  //接收緩存數組
uchar  r_x=0;//接收計數
uchar  r_flag=0;//接收成功標志
sbit SPK=P0^5;
sbit DA =  P1^7;//繼電器1
sbit DB =  P1^6;//繼電器2
sbit DC =  P1^5;//繼電器3
sbit DD =  P1^4;//繼電器4
sbit RS=P2^6;                                   // 引腳定義  
sbit RW=P2^5;                                                           
sbit EN=P2^7;      
sbit busy=P0^7;                                 // "忙"標志位
void fs_d () ;   
#define LCD P0                                  //命令或數據線
unsigned char code TAB1[]={"Welcome to use"};     //歡迎用語
unsigned char code TAB2[]={"Light up"};     //點亮字符
unsigned char code TAB3[]={"open"};   //定義字符打開
unsigned char code TAB4[]={"Shut down"};   //定義字符關閉
unsigned char code digit[10]={"0123456789"};     //定義字符數組顯示數字
//------------------------------------  延時函數  -------------------------------------------
void delay(unsigned int t)                      //延時若干微秒
{
   while(t--);
}
//----------------------------------------- 發聲函數 ----------------------------------------------

  void  fs_d ()                                         
    {   
      unsigned int j,y;                        // 聲明無符號整型變量j, y        
       {                    
         for(y=0;y<1000;y++)                   //循環1000次,嘀響0.5s
          {  
            SPK=~SPK;                          //反相輸出
         for(j=0;j<50;j++);                 //延時約500μs
           }  
        delay(200);                                       
      }                                          
   }
  
//---------------------------------- 判斷液晶顯示器是否忙函數 ----------------------------------
void CHECK_BF()                                      //判斷是否忙碌
{
  do
   {
    LCD=0xff;   
    RS=0;                                       // RS=0,選擇指令寄存器
    RW=1;                                       // RW=1,選擇讀模式
    EN=0;                                       // 執行顯示命令
    EN=1;                                       // 允許讀/寫
   }  
  while(busy);                                  //busy為高電平表示忙,循環等待
}
//--------------------------------------  寫命令函數  -----------------------------------
void WR_COMM()                                       //寫命令
{
  RS=0;                                         // RS=0,選擇指令寄存器
  RW=0;                                         // RW=0,選擇寫模式
  EN=0;                                         // 執行顯示命令
  CHECK_BF();                                   // 等待
  EN=1;                                         // E=1,允許讀/寫LCD
}
//-------------------------------------- 寫數據函數 -------------------------------------
void WR_DATA()                                       //寫數據
{
  RS=1;                                         // RS=1,選擇數據寄存器
  RW=0;                                         //準備寫入數據
  EN=0;                                         //執行顯示命令
  CHECK_BF();                                   //判斷液晶模塊是否忙
  EN=1;                                         // E=1,允許讀/寫LCD
}
//--------------------------------------- 初始化函數   ----------------------------------
void INIT_LCD()                                       //初始化
{
   unsigned char i=200;
    {
      while(--i);
      LCD=0x01;                                 //清屏并光標復位
      WR_COMM();                                //寫入命令
      LCD=0x38;                                 //設置顯示模式:8位2行5x7點陣
      WR_COMM();
      LCD=0x0c;                                 //開顯示屏
   WR_COMM();
      LCD=0x06;                                 //文字不動,光標自動右移
      WR_COMM();                                //寫入命令
    }
}

//------------------------------------------ 顯示歡迎用語字符菜單函數 ------------------------------------------------

   void DISP_EXP (void)  
  
    {
    unsigned char i;
    LCD=0x80;                                  //寫入顯示起始地址                 
       WR_COMM();                                 //寫入命令
       for(i=0;i<15;i++)                                
        {
         LCD=TAB1[i];                             //提取字符
         WR_DATA();                               //送出
        }                                    
    }
   
//------------------------------------------- 顯示點亮菜單函數 --------------------------------------------
  void DISP1_EXP( )
     {
    unsigned char i;
    LCD=0xc0;                                    //寫入顯示起始地址                 
       WR_COMM();                                   //寫入命令
       for(i=0;i<9;i++)                                
        {
         LCD= TAB2[i];                                //提取字符
         WR_DATA();                                  //送出
        }
  }  
     //--------------------------------------------顯示打開函數--------------------------------------------
  void dakai ()  
  
    {
    unsigned char i;
    LCD=0xCE;                                  //寫入顯示起始地址                 
       WR_COMM();                                 //寫入命令
       for(i=0;i<5;i++)                                
        {
         LCD=TAB3[i];                             //提取字符
         WR_DATA();                               //送出
        }                                    
    }
//--------------------------------------------顯示關閉函數--------------------------------------------   
    void Shut_down ()  
  
    {
    unsigned char i;
    LCD=0xCE;                                  //寫入顯示起始地址                 
       WR_COMM();                                 //寫入命令
       for(i=0;i<10;i++)                                
        {
         LCD=TAB4[i];                             //提取字符
         WR_DATA();                               //送出
        }                                    
    }   
uchar read_data(void)//讀取接收數據
{
// uchar i=0;
   uchar tep = 0;
   if(r_flag == 1)
   {
    r_flag = 0;
    tep = buf[2];
  fs_d ();    //鳴響
}      
   return tep;
}
void uart_init()
{
  TMOD=0x20;
  TH1=0xfd;   //波特率9600
  TL1=0xfA;
  TR1=1;
  SM0=0;
  SM1=1;
  REN=1;
  EA=1;
  ES=1;
}
  /********************************************************************
函數功能:主函數
********************************************************************/
void main()
{
INIT_LCD();                                       //LCD初始化函數
   delay(100);           
   DISP_EXP();            //歡迎用語字符菜單函數
   DISP1_EXP();
    delay(100);
   {
  uchar key=0;
  uart_init(); //串口初始化
  SPK=1;//蜂鳴器關
  DA=1;
  DB=1;
  DC=1;
  DD=1;
  while(1)
  {
   key = read_data();//讀取接收數據
if(key == 'A');
{
DA =0;//打開A
    delay(100);
  fs_d();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[1];      //提取字符,數組中的1,
  WR_DATA();             //送出
   dakai  ();
   break;
  }
if(key == 'B');
{
DA =1;//關閉A
delay(100);
    fs_d();
  LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[1];    //提取字符,數組中的1,
  WR_DATA();            //送出
   Shut_down ();      //顯示關閉
   break;
   }
if(key == 'C');
{
  DB =0;//打開B
delay(100);
  fs_d();
  LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[2];    //提取字符,數組中的2,
  WR_DATA();            //送出
  dakai();         //顯示打開
    break;
  }
  if(key == 'D');
  {
DB =1;//關閉B
  delay(100);
  fs_d ();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[2];     //提取字符,數組中的2,
  WR_DATA();             //送出
     Shut_down ();      //顯示關閉
  break;
}
  if(key == 'E');
  {
  DC =0;//打開C
  fs_d();
  LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[3];      //提取字符,數組中的3,
  WR_DATA();           //送出
  dakai();         //顯示打開
    break;
  }
  if(key == 'F');
  {
   DC =1;//關閉C
    delay(100);
    fs_d ();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[3];      //提取字符,數組中的3,
  WR_DATA();           //送出
      Shut_down ();      //顯示關閉
   break;
}
if(key == 'G');
{
  DD =0;//打開D
   delay(100);
  fs_d();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[4];      //提取字符,數組中的4,
  WR_DATA();           //送出
   dakai();           //顯示打開
    break;
  }
  if(key == 'H');
  {
  DD =1;//關閉D
    delay(100);
  fs_d();
  LCD=0Xcc;     //寫入顯示起始地址
  WR_COMM();    //寫入命令
  LCD=digit[4];    //提取字符,數組中的4,
  WR_DATA();            //送出
     Shut_down ();     //顯示關閉
    break;
  }
}
}
}
void ser()interrupt 4  //接收中斷
{
   RI=0; //清除接收標志
   buf[r_x] = SBUF;//接收數據至緩存區
   r_x++;
   if(buf[0]!='O'){r_x=0;}
   if(r_x == 3) //接收完成
   {
    r_x=0;
r_flag=1;
   }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:130231 發表于 2017-9-4 14:07 | 只看該作者
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?SHUT_DOWN?MAIN,
這個主程序,沒有調SHUT_DOWN(),也就說從下述語句中就開始不能運行了,不知道如何去掉警告。請教各位高手??
if(key == 'B');
{
DA =1;//關閉A
delay(100);
     fs_d();
   LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[1];    //提取字符,數組中的1,
  WR_DATA();            //送出
   Shut_down ();      //顯示關閉
   break;
    }
回復

使用道具 舉報

板凳
ID:190832 發表于 2017-9-4 15:38 | 只看該作者
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯的,if()應該去掉后面的';'。順便,你好好學學C語言基礎。連if都不會用就來寫單片機了。。。。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:130231 發表于 2017-9-4 18:56 | 只看該作者
hange_v 發表于 2017-9-4 15:38
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯的,if()應該去掉后面的';'。順便,你好好學學 ...

新手級別,見笑了,多謝大哥指教,原來是別人的else if(key == 'B') DA =1;//關閉A。這樣的語句。我改成的那樣。沒有注意到。編譯時沒提示。
回復

使用道具 舉報

5#
ID:130231 發表于 2017-9-4 19:11 | 只看該作者
hange_v 發表于 2017-9-4 15:38
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯的,if()應該去掉后面的';'。順便,你好好學學 ...

你說if(key == 'A'/'B'/'C'/'D')這些語句都是錯的,去‘;’后。程序沒提示警告了,程序能成功運行嗎?請求分析一下。
回復

使用道具 舉報

6#
ID:130231 發表于 2017-9-4 19:11 | 只看該作者
hange_v 發表于 2017-9-4 15:38
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯的,if()應該去掉后面的';'。順便,你好好學學 ...

你說if(key == 'A'/'B'/'C'/'D')這些語句都是錯的,去‘;’后。程序沒提示警告了,程序能成功運行嗎?請求分析一下。
回復

使用道具 舉報

7#
ID:130231 發表于 2018-1-11 19:41 | 只看該作者
zqy181818 發表于 2017-9-4 19:11
你說if(key == 'A'/'B'/'C'/'D')這些語句都是錯的,去‘;’后。程序沒提示警告了,程序能成功運行嗎? ...

成功了。多謝大哥指導。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日日摸夜夜爽人人添av | 欧美精品在线一区 | 国产黄色小视频在线观看 | 精品一区二区免费视频 | 丁香综合| 欧美激情久久久 | 精品伊人 | 成人国产一区二区三区精品麻豆 | 欧美一级免费观看 | 日韩毛片视频 | 韩国av电影网| 久久久久亚洲av毛片大全 | 日韩欧美成人精品 | 91玖玖 | www免费视频 | 成人福利电影 | 日日干天天操 | 免费黄色的网站 | 中文字幕视频在线 | 亚洲成人精品一区 | 欧美久久精品 | 国产一区二区三区高清 | 色婷婷综合久久久中字幕精品久久 | 精品亚洲一区二区三区 | 久久亚洲精品国产精品紫薇 | 日韩字幕 | 久久99国产精品 | 在线国产中文字幕 | 国产精品片 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 欧美在线观看一区二区 | www久久久| 国产一在线观看 | 超碰97免费观看 | 九九热精品在线 | 求毛片 | 亚洲精品久久久一区二区三区 | 国产精品色 | 成人黄色网址大全 | 天天夜干| 日本成人福利视频 |