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

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

QQ登錄

只需一步,快速開始

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

請(qǐng)教*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS要怎么消除?

[復(fù)制鏈接]
ID:130231 發(fā)表于 2017-9-4 13:58 | 顯示全部樓層 |閱讀模式
//----------------------------------------------------------------------------------------------------------------------------------
//程序名:  main.c  2017/8/16
//程序功能:安卓手機(jī)藍(lán)牙控制繼電器程序并用1602顯示*
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
uchar buf[10]=0;  //接收緩存數(shù)組
uchar  r_x=0;//接收計(jì)數(shù)
uchar  r_flag=0;//接收成功標(biāo)志
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;                                 // "忙"標(biāo)志位
void fs_d () ;   
#define LCD P0                                  //命令或數(shù)據(jù)線
unsigned char code TAB1[]={"Welcome to use"};     //歡迎用語
unsigned char code TAB2[]={"Light up"};     //點(diǎn)亮字符
unsigned char code TAB3[]={"open"};   //定義字符打開
unsigned char code TAB4[]={"Shut down"};   //定義字符關(guān)閉
unsigned char code digit[10]={"0123456789"};     //定義字符數(shù)組顯示數(shù)字
//------------------------------------  延時(shí)函數(shù)  -------------------------------------------
void delay(unsigned int t)                      //延時(shí)若干微秒
{
   while(t--);
}
//----------------------------------------- 發(fā)聲函數(shù) ----------------------------------------------

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

//------------------------------------------ 顯示歡迎用語字符菜單函數(shù) ------------------------------------------------

   void DISP_EXP (void)  
  
    {
    unsigned char i;
    LCD=0x80;                                  //寫入顯示起始地址                 
       WR_COMM();                                 //寫入命令
       for(i=0;i<15;i++)                                
        {
         LCD=TAB1[i];                             //提取字符
         WR_DATA();                               //送出
        }                                    
    }
   
//------------------------------------------- 顯示點(diǎn)亮菜單函數(shù) --------------------------------------------
  void DISP1_EXP( )
     {
    unsigned char i;
    LCD=0xc0;                                    //寫入顯示起始地址                 
       WR_COMM();                                   //寫入命令
       for(i=0;i<9;i++)                                
        {
         LCD= TAB2[i];                                //提取字符
         WR_DATA();                                  //送出
        }
  }  
     //--------------------------------------------顯示打開函數(shù)--------------------------------------------
  void dakai ()  
  
    {
    unsigned char i;
    LCD=0xCE;                                  //寫入顯示起始地址                 
       WR_COMM();                                 //寫入命令
       for(i=0;i<5;i++)                                
        {
         LCD=TAB3[i];                             //提取字符
         WR_DATA();                               //送出
        }                                    
    }
//--------------------------------------------顯示關(guān)閉函數(shù)--------------------------------------------   
    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)//讀取接收數(shù)據(jù)
{
// 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;
}
  /********************************************************************
函數(shù)功能:主函數(shù)
********************************************************************/
void main()
{
INIT_LCD();                                       //LCD初始化函數(shù)
   delay(100);           
   DISP_EXP();            //歡迎用語字符菜單函數(shù)
   DISP1_EXP();
    delay(100);
   {
  uchar key=0;
  uart_init(); //串口初始化
  SPK=1;//蜂鳴器關(guān)
  DA=1;
  DB=1;
  DC=1;
  DD=1;
  while(1)
  {
   key = read_data();//讀取接收數(shù)據(jù)
if(key == 'A');
{
DA =0;//打開A
    delay(100);
  fs_d();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[1];      //提取字符,數(shù)組中的1,
  WR_DATA();             //送出
   dakai  ();
   break;
  }
if(key == 'B');
{
DA =1;//關(guān)閉A
delay(100);
    fs_d();
  LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[1];    //提取字符,數(shù)組中的1,
  WR_DATA();            //送出
   Shut_down ();      //顯示關(guān)閉
   break;
   }
if(key == 'C');
{
  DB =0;//打開B
delay(100);
  fs_d();
  LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[2];    //提取字符,數(shù)組中的2,
  WR_DATA();            //送出
  dakai();         //顯示打開
    break;
  }
  if(key == 'D');
  {
DB =1;//關(guān)閉B
  delay(100);
  fs_d ();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[2];     //提取字符,數(shù)組中的2,
  WR_DATA();             //送出
     Shut_down ();      //顯示關(guān)閉
  break;
}
  if(key == 'E');
  {
  DC =0;//打開C
  fs_d();
  LCD=0Xcc;    //寫入顯示起始地址
  WR_COMM();   //寫入命令
  LCD=digit[3];      //提取字符,數(shù)組中的3,
  WR_DATA();           //送出
  dakai();         //顯示打開
    break;
  }
  if(key == 'F');
  {
   DC =1;//關(guān)閉C
    delay(100);
    fs_d ();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[3];      //提取字符,數(shù)組中的3,
  WR_DATA();           //送出
      Shut_down ();      //顯示關(guān)閉
   break;
}
if(key == 'G');
{
  DD =0;//打開D
   delay(100);
  fs_d();
  LCD=0Xcc;      //寫入顯示起始地址
  WR_COMM();     //寫入命令
  LCD=digit[4];      //提取字符,數(shù)組中的4,
  WR_DATA();           //送出
   dakai();           //顯示打開
    break;
  }
  if(key == 'H');
  {
  DD =1;//關(guān)閉D
    delay(100);
  fs_d();
  LCD=0Xcc;     //寫入顯示起始地址
  WR_COMM();    //寫入命令
  LCD=digit[4];    //提取字符,數(shù)組中的4,
  WR_DATA();            //送出
     Shut_down ();     //顯示關(guān)閉
    break;
  }
}
}
}
void ser()interrupt 4  //接收中斷
{
   RI=0; //清除接收標(biāo)志
   buf[r_x] = SBUF;//接收數(shù)據(jù)至緩存區(qū)
   r_x++;
   if(buf[0]!='O'){r_x=0;}
   if(r_x == 3) //接收完成
   {
    r_x=0;
r_flag=1;
   }
}
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:190832 發(fā)表于 2017-9-4 15:38 | 顯示全部樓層
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯(cuò)的,if()應(yīng)該去掉后面的';'。順便,你好好學(xué)學(xué)C語言基礎(chǔ)。連if都不會(huì)用就來寫單片機(jī)了。。。。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:130231 發(fā)表于 2017-9-4 18:56 | 顯示全部樓層
hange_v 發(fā)表于 2017-9-4 15:38
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯(cuò)的,if()應(yīng)該去掉后面的';'。順便,你好好學(xué)學(xué) ...

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

使用道具 舉報(bào)

ID:130231 發(fā)表于 2017-9-4 19:11 | 顯示全部樓層
hange_v 發(fā)表于 2017-9-4 15:38
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯(cuò)的,if()應(yīng)該去掉后面的';'。順便,你好好學(xué)學(xué) ...

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

使用道具 舉報(bào)

ID:130231 發(fā)表于 2017-9-4 19:11 | 顯示全部樓層
hange_v 發(fā)表于 2017-9-4 15:38
哥來告訴你,你的if(key == 'A'/'B'/'C'/'D');這些語句都是錯(cuò)的,if()應(yīng)該去掉后面的';'。順便,你好好學(xué)學(xué) ...

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

使用道具 舉報(bào)

ID:130231 發(fā)表于 2018-1-11 19:41 | 顯示全部樓層
zqy181818 發(fā)表于 2017-9-4 19:11
你說if(key == 'A'/'B'/'C'/'D')這些語句都是錯(cuò)的,去‘;’后。程序沒提示警告了,程序能成功運(yùn)行嗎? ...

成功了。多謝大哥指導(dǎo)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区 | 国产精品久久久久无码av | 久久久久久中文字幕 | 国产精品免费视频一区 | 福利视频大全 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 99久热 | 精品国产乱码一区二区三区a | 日韩在线一区二区 | 国产丝袜一区二区三区免费视频 | 亚洲国产视频一区 | 国产精品久久久久影院色老大 | 久久丝袜 | 欧洲视频一区二区 | 97精品超碰一区二区三区 | 中文字幕亚洲一区二区三区 | 91久久精品国产91久久性色tv | 国产精品成人在线播放 | 国产精品99久久久久久www | 欧美一级淫片免费视频黄 | 午夜影院在线观看视频 | 日韩精品激情 | 国产在线观看一区 | 亚洲欧美精品一区 | 男女羞羞视频在线 | 日韩欧美在线视频 | 91在线电影| 精品国产伦一区二区三区观看方式 | 亚洲最大的成人网 | 精品久久久久久久久久久 | 日本精品视频在线观看 | 91伊人网| 国产免费一区二区 | 国产精品福利在线观看 | 国产传媒视频在线观看 | 国产欧美二区 | 成人免费视频在线观看 | 亚洲高清网| 日韩精品一区二区三区在线播放 | 国产一区二区三区在线免费观看 | 91小视频|