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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

新手求教,Keil編譯時顯示** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY

[復(fù)制鏈接]
ID:187835 發(fā)表于 2017-4-29 00:09 | 顯示全部樓層 |閱讀模式
代碼如下:
/************************************
頻率部分
************************************/
#include <reg51.h>
#include <intrins.h>
#define out P0
#define send P2
unsigned int ADresult[11];
sbit DATOUT=P1^0;
sbit DATIN=P1^1;
sbit CS=P1^2;
sbit IOCLK=P1^3;
sbit EOC=P1^4;
sbit RS=P3^0;
sbit RW=P3^1;
sbit E=P3^5;
sfr16 DPTR=0x82;//定義寄存器DPTR(頻率部分)
unsigned char cnt_t0,cnt_t1,qian,bai,shi,ge;
unsigned char freq;
unsigned char code digit[10]={"0123456789"};
unsigned char code Str_V[]={"V="};
unsigned char code Str_U[]={"Vm="};
unsigned char code Str_F[]={"F="};
void delay_ms(unsigned int z)
{
unsigned char i,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
/**********************************
定時器的初始化
**********************************/
void init()
{
  freq=0;//賦頻率初值
cnt_t1=0;
cnt_t0=0;
IE=0x8a;//開T0,T1中斷
TMOD=0x15;//T0為定時器方式1,T1為計(jì)數(shù)器方式1
TH1=0x3c;//T1定時50ms
TL1=0xb0;
TH0=0;//T0清0
TL0=0;
TR0=1;//開啟定時器T0
}
/********************************
lcd1602的準(zhǔn)備工作
********************************/
void check_busy()//檢測忙函數(shù)
{
unsigned char dt;
do{
   dt=0xff;//dt作為變量單元,初值為0xff
  E=0;
  RS=0;//按照讀寫操作規(guī)定RS=0,E=1時才可以讀忙標(biāo)志
  RW=1;
  E=1;
  dt=out;
   }while(dt&0x80);
   E=0;
}
void write_command(unsigned char com)//寫命令函數(shù)
{
check_busy();
E=0;
RS=0;
RW=0;
out=com;
E=1;
_nop_();
_nop_();
E=0;
delay_ms(10);
}
void write_data(unsigned char dat)//寫數(shù)據(jù)函數(shù)
{
  check_busy();
E=0;
RS=1;
RW=0;
out=dat;
E=1;
_nop_();
E=0;
delay_ms(10);
}
void LCD_initial(void)//液晶顯示器的初始化函數(shù)
{
  write_command(0x38);//寫入0x38(命令6):兩行顯示,5*7點(diǎn)陣,8位數(shù)據(jù)
_nop_();          //空操作,給硬件反應(yīng)時間
write_command(0x0C);//寫入0x0C(命令4):開整體顯示,光標(biāo)關(guān),無閃爍
_nop_();          //空操作,給硬件反應(yīng)時間
write_command(0x06);//寫入0x06(命令3),寫入一個字符后,地址指針加1
_nop_();          //空操作,給硬件反應(yīng)時間
write_command(0x01);//寫入(命令1):清屏
delay_ms(10);
}
/****************************
lcd1602上符號的顯示
****************************/
void display_V(void)//顯示‘V=’
{
unsigned char i;
write_command(0x80);
i=0;
while(Str_V[i]!='\0')
{
   write_data(Str_V[i]);
   i++;
}
}
void display_U(void)//顯示‘Vm=’
{
unsigned char i;
write_command(0x88);
i=0;
while(Str_U[i]!='\0')
{
   write_data(Str_U[i]);
   i++;
}
}
void display_F(void)//顯示‘F=’
{
  unsigned char i;
  write_command(0x40+0x80);
  i=0;
  while(Str_F[i]!='\0')
  {
    write_data(Str_F[i]);
    i++;
  }
}
void display_Hz(void)//頻率的單位‘Hz’的顯示
{
  write_command(0x47+0x80);
write_data('H');
write_command(0x48+0x80);
write_data('z');
}
void display_mV(void)
{
write_command(0x05+0x80);//V的單位‘mv’的顯示
write_data('m');
write_command(0x06+0x80);
write_data('v');
write_command(0x0e+0x80);//Vm的單位'mv'的顯示
write_data('m');
write_command(0x0f+0x80);
write_data('v');
}
/********************************
將數(shù)據(jù)輸出到lcd1602上
********************************/
void displayV(unsigned char x)//V值送lcd1602
{
   unsigned char i,j,k;
   i=x/100;
   j=x/10%10;
   k=x%10;
   write_command(0x05+0x80);
   write_command(0x04+0x80);
   write_command(0x03+0x80);
   write_data(digit[i]);
   write_data(digit[j]);
  write_data(digit[k]);
}
void displayU(unsigned char x)//Vm值送lcd1602
{
  unsigned char l,w,n;
   l=x*141/100/100;
    w=x*141/100/10%10;
    n=x*141/100%10;
    write_command(0x0d+0x80);
    write_command(0x0b+0x80);
    write_data(digit[l]);
    write_data(digit[w]);
    write_data(digit[n]);
}
void displayF(unsigned char x)//頻率值送lcd1602
{
  qian=x/1000 ;  
  bai= x/100%10 ;
  shi=x/10%10;
  ge=x%10 ;
  write_command(0x46+0x80);
  write_command(0x45+0x80);
  write_command(0x44+0x80);
  write_command(0x43+0x80);
  write_data(digit[qian]);
  write_data(digit[bai]);
  write_data(digit[shi]);
  write_data(digit[ge]);
}
/**********************************
中斷函數(shù)(頻率部分)
**********************************/
void t1_func() interrupt 3
{
  TH1=0x3c;
TL1=0xb0;
cnt_t1++;
}
void t0_func() interrupt 1
{
  cnt_t0++;
}
/*********************************
電壓數(shù)據(jù)獲取函數(shù)
*********************************/
unsigned int getdata(unsigned char channel)//channel是通道號
{
  unsigned char i,temp;
unsigned int read_ad_data=0;
channel=channel<<4;
IOCLK=0;
CS=0;
temp=channel;
for(i=0;i<12;i++)
{
     if(DATOUT)read_ad_data=read_ad_data|0x01;//讀入第一次的數(shù)據(jù)
   DATIN=(bit)(temp&0x80);//寫入方式/通道命令字
   IOCLK=1;               //IOCLK上跳沿
   _nop_();                 //空操作延時
   _nop_();
   _nop_();
   IOCLK=0;               //IOCLK下跳沿
   _nop_();                 //空操作延時
   _nop_();
   _nop_();
   temp=temp<<1;          //丟棄最高位,讀取第二高位的值
   read_ad_data<<=1;     //轉(zhuǎn)換結(jié)果左移一位
}
    CS=1;                     //CS上跳沿
   read_ad_data<<=1;         //抵消第12次左移,得到12位轉(zhuǎn)換結(jié)果
   return(read_ad_data);
}
/*********************************
主函數(shù)
*********************************/
main(void)
{
init();//定時器初始化
LCD_initial();//lcd1602初始化
display_Hz();//各類字符的顯示
_nop_();
display_F();
_nop_();
display_V();
_nop_();
display_U();
_nop_();
display_mV();
_nop_();
/************************
主函中頻率部分
************************/
while(1)
{
   if(cnt_t1==19)//定時1s
  {
    cnt_t1=0;
   TR1=0;
   delay_ms(141);
   TR0=0;
   DPL=TL0;
   DPH=TH0;
   freq=cnt_t0*65535;
   freq=freq+DPTR;
  }
  send=freq;//數(shù)據(jù)送到P2口
  displayF(send);//通過P2發(fā)出去
  _nop_();
}
/***********************
主函數(shù)中電壓部分
************************/
while(1)
{
   _nop_();
  _nop_();
  _nop_();
  ADresult[2]=getdata(2);
  while(!EOC);
  out=ADresult[2]*122;//數(shù)據(jù)送到P0口
  displayV(out);//改成1602的顯示方式
  _nop_();
    _nop_();
  displayU(out);//通過P0發(fā)出去
  _nop_();
}
}


回復(fù)

使用道具 舉報(bào)

ID:187835 發(fā)表于 2017-4-29 00:21 來自手機(jī) | 顯示全部樓層
明明調(diào)用了這三個函數(shù),另外用peoteus仿真時,lcd1602也只是把字符顯示一遍然后就沒了。。代碼哪里錯了啊?
回復(fù)

使用道具 舉報(bào)

ID:187835 發(fā)表于 2017-5-4 01:02 | 顯示全部樓層
main函數(shù)中兩個while,去掉一個
回復(fù)

使用道具 舉報(bào)

ID:187614 發(fā)表于 2017-5-4 07:11 | 顯示全部樓層
主函數(shù)中電壓部分中的while(1)永遠(yuǎn)執(zhí)行不了,用分支結(jié)構(gòu)吧。warning只是警告信息,先看其內(nèi)容
回復(fù)

使用道具 舉報(bào)

ID:501681 發(fā)表于 2019-4-27 14:13 | 顯示全部樓層
我的好像也用不了
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费看 | 一级欧美一级日韩片免费观看 | 国产精品毛片一区二区在线看 | 国产成人精品久久二区二区 | 成人在线观| 精品国产不卡一区二区三区 | 在线91| 精品无码久久久久久国产 | 黄色av网站免费看 | 国产精品国产精品国产专区不卡 | 羞羞的视频免费在线观看 | 国产免费拔擦拔擦8x高清 | 黄色欧美在线 | 久久国产欧美日韩精品 | 国产精品久久国产精品久久 | 亚洲国产精品第一区二区 | 在线视频91 | 亚洲人成人一区二区在线观看 | 9191av | 亚洲视频一区在线观看 | 91久久久久久久久久久久久 | 国产午夜精品一区二区三区在线观看 | 久久av资源网 | 久久精品一区 | 三区四区在线观看 | 国产三级精品三级在线观看四季网 | 精品免费国产视频 | 日日夜夜天天 | 米奇狠狠鲁 | 精品久久国产视频 | 97热在线| 成人av高清 | 国内成人免费视频 | 国产一区二区免费 | 欧美成人高清视频 | 一区二区三区精品在线视频 | 91欧美精品成人综合在线观看 | 一区二区三区日韩 | 欧美中文一区 | 日本成人二区 | 久久久www成人免费无遮挡大片 |