亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? KEILC RTX51tiny開發的程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include<STC12C5410AD.H>
#include<MATH.H>
#include<Key.H>	   //按鍵定義 
#include<rtx51tny.H>
#define byte unsigned char	 
#define T1_Reload_CNT 0x98	     //晶振為16MHz,1T模式下,SMOD=1,波特率為9600時,T1的自動裝載值 
#define True 1
#define False 0
#define SendReData 0   //指令0表示回傳接收到的數據 
#define SendYValue 1   //指令1表示回傳m值 
#define SendMValue 2   //指令2表示回傳y值 
#define conSampNo 0x04      //采樣數達到多少時,計算均值 
#define condispVolval1 1    //顯示控制常數 ,顯示電壓值1
#define condispYval 2      // 顯示控制常數 ,顯示Y值 
#define condispVolval2 3      //顯示控制常數,顯示電壓值2
#define condispMval 4    //顯示控制常數,顯示M值  

#define conArrowReturn 1    //光標位置為返回 
#define conArrowReset 2    //光標位置為復位 
#define conArrowSetD 3     //光標位置為設定d值 
#define conArrowSetPara 4   //光標位置為標定 

#define conFaceDispItemName 1   //項目名稱界面 
#define conFaceDispSysSet 2   //系統設定界面 

#define conTmrClr 4000000000   //清屏定時常數 

#define task_INIT 0   //任務0,初始化任務 
#define task_CalVal 1  //任務1, 計算各值任務 
#define task_SetPara 2  //任務2,設定參數任務 

//外部函數定義 
extern  void displayItemName();   //OCMJ15X20D.C中定義 ,顯示采集數據的項目名稱 
extern  displayFloat(float FloatVal,unsigned char orignX,unsigned orignY);//  OCMJ15X20D中定義,顯示小數 
extern void displayFloat2(float FloatVal,unsigned char orignX,unsigned orignY);    //OCJ15X20D中定義,顯示一位小數和三位整數  
extern void displayFloat4(float FloatVal,unsigned char orignX,unsigned orignY);	   //OCJ15X20D中定義,顯示一位小數和三位整數 
extern void displaySignFloat(float FloatVal,unsigned char orignX,unsigned orignY);  //OCJ15X20D中定義,顯示一位小數和三位整數 (帶負號) 		 數)

extern 	 void dispInitial();		 //OCMJ15X20D中定義,LCM模塊初始化 
extern  void Delay(unsigned char DelayTM);	  //OCMJ15X20D中定義,延時子程序,延時 單位為ms			
extern unsigned char readKey(); 		 //OCMJ15X20D中定義,讀取按鍵子程序 
extern void displayArrow(unsigned char orignX,unsigned orignY);	  //OCMJ15X20D中定義,顯示光標 
extern void clearDispData(unsigned char orignX,unsigned orignY);	    //OCMJ15X20D中義,按坐定標清除顯示 
extern void displaySysSet();  //OCMJ15X20D中義,顯示系統設定界面 
extern void displayInteger(unsigned char IntVal,unsigned char orignX,unsigned orignY);		 //OCMJ15X20D中定義,顯示整數 
extern void LCM_Clr();		//OCMJ15X20D中定義,液晶模塊清屏 
extern void displayOk(unsigned char orignX,unsigned orignY);	   //OCMJ15X20D中定義,顯示'OK'
extern void adInit(void); //ad7705中定義,AD轉換初始化 
extern unsigned int get(unsigned char chanNo);  //讀取AD7705的采樣值 		 
extern void selectChan0(void);   //ad7705中定義,選擇通道0 
extern void selectChan1(void);   //ad7705中定義,選擇通道1 
extern void HC595Output(unsigned int outData);  //在74HC595中定義,串并轉換發送數據函數 



extern void E2PROM_Close();   //E2PROM.C中定義,關閉E2PROM 
extern unsigned char E2PROM_Read(unsigned char E2addrH,unsigned char E2addrL);  //E2PROM.C中定義,讀E2PROM 
extern void E2PROM_Write(unsigned char E2addrH,unsigned char E2addrL,unsigned char E2Data);  //E2PROM.C中定義,寫E2PROM 
extern void E2PROM_Erase(unsigned char E2addrH,unsigned char E2addrL);     //擦除扇區 

//函數定義 
void mainInitial();    //初始化函數 
float calVoltage(unsigned int sampVal);		//根據采樣值計算電壓值 
void UART_Initial();      //UART初始化函數 
void UART_SendByte(unsigned char SByte); //UART發送字節函數 
bit CheckFrame();  //用于判斷1楨數據是否接收完畢 
void DoIns();   //執行指令函數 
void mainDisplay();		 //主顯示函數 
void changeArrow();    //移動箭頭函數 
void saveDValue(float dValue);  //存儲D值到E2PROM 	(E2PROM地址:0x28,0x00)
float readDValue(void);  //讀取D值 
void saveI0P0Val(void);		//存儲I0Val,P0Val到E2PROM 	(E2PROM地址:0x2A00,0x00) 
void readI0P0Value(void);	  //讀取Samp值(I0Val,P0Val)到E2PROM 	(E2PROM地址:0x2A00,0x00)


//全局變量定義 


unsigned long sampInt;    //存儲AD7705的通道0采樣值的和 
unsigned int smpAvrInt;   //存儲AD7705的通道0采樣值的均值 
unsigned char sampNum;  //存儲AD7705的通道0采樣點數目 

unsigned long sampInt1;    //存儲AD7705的通道1采樣值的和 
unsigned int smpAvrInt1;   //存儲AD7705的通道1采樣值的均值 
unsigned char sampNum1;  //存儲AD7705的通道1采樣點數目 



unsigned char FrameNo;     //數據楨序號,用于存儲接收數據和判斷數據楨是否接收完畢 
bit isReceiveData;     //是否接受數據以及接收數據是否處理完畢標志
					   //(True-接收到數據,False-未接收到數據或者接收數據已處理完畢) 
unsigned char flagDispFace;      //標示界面狀態 
unsigned char flagSapChan;      //表示采集通道 
unsigned char FrameData[4];         //楨數據數組,存儲1楨數據中的各個字節 
unsigned ArrowState;    //記錄光標位置 
unsigned char ArrowOriX;   //光標的坐標 
unsigned char ArrowOriY;	
unsigned char fInt,fPoint1,fPoint2;   //整數部分,小數點后1位,后2位	

float P0Value,PValue,DZHI;    //計算m值, 
float I0Value,IValue,IZHI;     //計算y值時用 
float voltage,voltage2,mValue,yValue;   //采樣電壓,m值,y值 
float dValue; 


unsigned int tmpMval,tmpYval;    //臨時變量用存儲M值和Y值取整 
 
unsigned char dispctr;    //顯示控制變量 


unsigned long ctrlClr1,ctrlClr2;    //用于清屏循環控制 
//函數實現 



//主程序初始化 
void mainInitial()
{
  CLK_DIV=0x00;      //設置時鐘分頻寄存器 (不分頻) 
  FrameNo=0;    //數據楨序號賦初值 
  FrameData[0]=0;
  FrameData[1]=0;
  sampInt=0;    
  sampNum=0;
  sampInt1=0;    
  sampNum1=0;
  ArrowState=0;   //光標位置賦初值 	(不顯示光標) 
  ArrowOriX=0x0A;
  ArrowOriY=0x30;
  fInt=0;	    //小數寄存器初始化 
  fPoint1=0;
  fPoint2=0;
  dispctr=condispVolval1;
  dispInitial();  //顯示初始化 
  adInit(); 	  //AD7705初始化 
  UART_Initial();	//串口初始化 
}







//根據采樣值計算電壓值 
float calVoltage(unsigned int sampVal)
{float sampVoltage;
 sampVoltage=sampVal*2.5/65535;
 return(sampVoltage);
}

//UART初始化函數 
void UART_Initial()
{
  SCON=0x50;       //串口工作在方式1,無奇偶校驗,8位可變波特率 
  TMOD=0x21;      //設置定時器1為8位自動重裝方式 
  TH1=T1_Reload_CNT;
  TL1=T1_Reload_CNT;
  PCON=PCON|(0x80);	   //波特率加倍 
  AUXR=AUXR|(0x40);     //定時器1工作在1T模式下,波特率可以快12倍 
  TR1=1;	  //啟動定時器1 
  ES=1;	      //串行中斷允許位
  EA=1;		  //總中斷允許位 
}
 
 
 //UART發送字節函數 
void UART_SendByte(unsigned char SByte)
{
  TI=0;	   //清發送中斷標志 
  SBUF=SByte;  //字節寫入緩沖區 
  while(!TI)  //等待發送完畢 
    {;};
  TI=0;   //清0發送標志 
}

//判斷一楨數據是否接收完畢 
bit CheckFrame()
{
  if(isReceiveData==True)  //若接收到數據 
  {	
    isReceiveData=False;
    //判斷接收的楨數據是否完畢 
    if (FrameNo==FrameData[0])   //接收完畢 
	{
	  FrameNo=0;
	  return True;
	}
	else		  //未接收完畢 
	{
	  FrameNo++;  //序號加1 
	  return False;
	}
  }
  else
  {
    return False;
  }
}

//主顯示函數 
void mainDisplay()
{
    switch(dispctr)
	{
	  case condispVolval1:	   //顯示減光率 
	  {

	      if(DZHI>=1)
		  { 
		    displayFloat4((1-1/DZHI)*100,0x16,0x20);	  //顯示D值(比例數) 
		  }
		  else if(DZHI<1)
		  {
		    displaySignFloat((1-DZHI)*100,0x16,0x20);	  //顯示D值(比例數) 
		  }
		  //displayFloat3(100,0x18,0x10);
		  dispctr=condispYval;
		  break;
	  }
	  case condispYval:    // 顯示Y值 
	  {
	      displayFloat(yValue,0x18,0xB0); //顯示y值
		  dispctr=condispVolval2;
		  break;
	  }
	  case condispVolval2:	  //顯示電離室電流 
	  {
		  displayFloat4(IZHI*100.0,0x16,0x80); 	  //顯示I值(比例數) 
		  dispctr=condispMval;
		  break;
	  }
	  case condispMval:	  //顯示M值 
	  {
		  displayFloat(mValue,0x18,0x50); 
		  dispctr=condispVolval1;
		  break;
	  }
	}    
}

//執行指令函數 
/*在此程序中要對中斷中的一部份變量進行處理,所以在程序執行過程中一定記得關中斷 */
void DoIns()
{
 unsigned char  tmp,tmp2;    //臨時變量
 unsigned int tmpInt;   
 if (CheckFrame()==True)  //若楨數據接收完畢 
 {
   switch(FrameData[1]) //判斷指令代碼 
   {
    case SendReData:		//指令0表示回傳接收到的數據 
    {
      for(tmp=2;tmp<=FrameData[0];tmp++)
	  {
	    UART_SendByte(FrameData[tmp]);
	  }
	  break;
    }
    case SendYValue:    //指令1表示回傳Y值 
    {
	  tmp2=tmpYval&(0x00FF);  //tmp2存儲tmpYval低8位 
	  tmpInt=tmpYval;
	  tmpInt>>=8;
	  tmp=tmpInt&(0x00FF);   //tmp存儲tmpYval高8位 
	  UART_SendByte(tmp2);
	  UART_SendByte(tmp);

	  //UART_SendByte(170);
	  //UART_SendByte(85);
	  break;  
	}
	case SendMValue:		//指令2表示回傳M值 
    {
	  tmp2=tmpMval&(0x00FF);  //tmp2存儲tmpYval低8位 
	  tmpInt=tmpMval;
	  tmpInt>>=8;
	  tmp=(tmpInt)&(0x00FF);   //tmp存儲tmpYval高8位 
	  UART_SendByte(tmp2);
	  UART_SendByte(tmp);



	  //UART_SendByte(170);
	  //UART_SendByte(85);
	  break;
	}
   }
 }
}

//串口接收中斷函數 
void UART_ReceiveByte() interrupt 4
{ 
  RI=0;       //清接收中斷標志 
  FrameData[FrameNo]=SBUF;			 //接收數據放入楨數據數組    
  isReceiveData=True; 
  DoIns();  
}


void init(void) _task_ task_INIT//任務0 
{
  dValue=readDValue();
  dValue=0.95;
  mainInitial();      //初始化 
  displayItemName(); 	  //液晶顯示 項目名稱 
  readI0P0Value(); 
  selectChan0();		   //選擇AD通道0 
  flagDispFace=conFaceDispItemName; //項目名稱界面 
  flagSapChan=0;   //表示當前采集通道為通道0 
  WDT_CONTR=0x3C;   //喂狗 
  os_create_task(task_CalVal);	  //建立任務1 
  os_create_task(task_SetPara);    //建立任務2 
  os_delete_task(task_INIT);    //刪除任務0 
}

void calvalue(void) _task_ task_CalVal//任務1 
{
  while(1)
  {	
    WDT_CONTR=0x3C;   //喂狗 
    ctrlClr1++;	   //清屏循環控制變量加1
	if (ctrlClr1>=conTmrClr)    //若清屏循環控制達到要求 
    {			
	  ctrlClr1=0;   //清屏循環控制清0 	
	  if(flagDispFace==conFaceDispItemName)	   	 //若在主界面 
	  {
	    LCM_Clr();  //清屏   
	    displayItemName(); 	  //液晶顯示 項目名稱
	  }
	}
    switch(flagSapChan)
	{
	  case 0:		  //AD采樣通道為通道0 
	  {
	    sampInt=sampInt+get(0);
        sampNum++;   //采樣個數加1;   
		selectChan1();   //選擇AD通道為通道1 
		flagSapChan=1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
18欧美亚洲精品| 91精品久久久久久久久99蜜臂| 久久天堂av综合合色蜜桃网| 精品一区二区免费在线观看| 精品国产乱码久久| 成人永久免费视频| 亚洲色图清纯唯美| 欧美视频一区在线观看| 老司机精品视频在线| 国产精品视频一二三| 色综合久久88色综合天天6| 午夜久久电影网| 久久嫩草精品久久久精品| 成人毛片视频在线观看| 亚洲激情图片小说视频| 日韩一区二区影院| 成人精品鲁一区一区二区| 综合色中文字幕| 欧美一区二区三区在线| 成人一区在线看| 五月综合激情婷婷六月色窝| 欧美精品一区二区三区蜜桃视频| 成人在线视频一区| 亚洲444eee在线观看| 久久久精品一品道一区| 一本一本大道香蕉久在线精品| 免费成人在线播放| 中文字幕一区二区三中文字幕| 欧美三级视频在线| 国产在线精品一区在线观看麻豆| 亚洲视频一二三区| 精品播放一区二区| 一本大道av伊人久久综合| 麻豆中文一区二区| 国产精品福利影院| 精品久久一区二区三区| 色婷婷综合久久| 国产激情视频一区二区三区欧美| 亚洲精品伦理在线| 久久久久一区二区三区四区| 欧美情侣在线播放| 99久久99久久综合| 经典三级视频一区| 日本人妖一区二区| 一区二区三区国产精华| 国产午夜亚洲精品理论片色戒| 欧美日韩国产在线观看| 9i在线看片成人免费| 国产一区视频在线看| 日韩精品五月天| 亚洲另类一区二区| 国产精品毛片久久久久久久| 精品国产一二三| 911国产精品| 在线观看91视频| 99精品久久99久久久久| 国产91露脸合集magnet | 99久久综合精品| 美腿丝袜亚洲综合| 首页亚洲欧美制服丝腿| 亚洲一区二区精品视频| 亚洲人成网站影音先锋播放| 国产精品美女久久久久aⅴ国产馆| 亚洲精品在线一区二区| 日韩一级视频免费观看在线| 欧美日韩国产影片| 欧美日韩一区二区三区免费看| 99视频精品全部免费在线| 成人激情综合网站| 大桥未久av一区二区三区中文| 国产精品888| 国产成人一区二区精品非洲| 国产乱理伦片在线观看夜一区| 九色综合国产一区二区三区| 蜜桃视频一区二区三区在线观看| 日韩中文字幕一区二区三区| 亚洲成av人片在线观看| 午夜精品视频一区| 日本美女视频一区二区| 久久精品久久久精品美女| 裸体歌舞表演一区二区| 国产又黄又大久久| 丁香婷婷综合色啪| 97久久人人超碰| 在线免费精品视频| 欧美日韩精品一区二区天天拍小说| 欧美日韩一区二区三区在线看| 欧美午夜在线一二页| 欧美一级欧美三级在线观看| 日韩精品最新网址| 久久久久青草大香线综合精品| 国产日韩欧美不卡在线| 亚洲人成网站精品片在线观看| 亚洲一区在线观看视频| 美美哒免费高清在线观看视频一区二区| 日本成人在线不卡视频| 国产成人h网站| 色综合久久六月婷婷中文字幕| 精品视频在线看| 2017欧美狠狠色| 亚洲色图色小说| 蜜臀av性久久久久蜜臀aⅴ| 国产酒店精品激情| 91看片淫黄大片一级| 欧美日韩国产首页在线观看| 欧美tk—视频vk| 日韩毛片精品高清免费| 免费在线看成人av| 丁香网亚洲国际| 在线播放欧美女士性生活| 久久久久久久久久电影| 亚洲一区二区三区四区中文字幕| 美脚の诱脚舐め脚责91| 99精品热视频| 精品入口麻豆88视频| 18成人在线视频| 狠狠狠色丁香婷婷综合久久五月| 91同城在线观看| 日韩女同互慰一区二区| 亚洲欧美国产三级| 国产美女精品在线| 欧美日韩国产在线观看| 国产精品沙发午睡系列990531| 日韩在线观看一区二区| www.亚洲人| 精品少妇一区二区三区视频免付费| 中文字幕一区二区在线观看| 精品亚洲免费视频| 欧美三级在线视频| 国产精品理论在线观看| 美女在线视频一区| 欧美午夜免费电影| 自拍偷自拍亚洲精品播放| 国内成人精品2018免费看| 色噜噜夜夜夜综合网| 欧美经典一区二区| 麻豆精品一二三| 欧美日韩国产一区二区三区地区| 国产精品久久久久四虎| 国产一本一道久久香蕉| 欧美一区二区播放| 亚洲国产日韩一区二区| 99re视频精品| 中文字幕巨乱亚洲| 久久99国产精品久久99果冻传媒| 欧美色视频一区| 一区二区三区蜜桃| 91女人视频在线观看| 国产精品你懂的| 国产精品99久久久久久似苏梦涵 | 亚洲最新视频在线观看| jlzzjlzz亚洲女人18| 国产亚洲成av人在线观看导航 | 日本一区二区成人在线| 激情久久五月天| 精品毛片乱码1区2区3区| 日日摸夜夜添夜夜添精品视频| 欧美日韩日日骚| 五月天丁香久久| 欧美日韩情趣电影| 亚洲chinese男男1069| 欧美日韩国产片| 日韩精品免费视频人成| 欧美日韩不卡一区| 爽好多水快深点欧美视频| 制服丝袜亚洲网站| 视频在线在亚洲| 91精品国产一区二区三区| 日本大胆欧美人术艺术动态| 日韩一本二本av| 精品无人码麻豆乱码1区2区| 久久看人人爽人人| 成人午夜精品一区二区三区| 亚洲欧美在线视频| 在线观看视频一区二区欧美日韩| 亚洲午夜三级在线| 欧美一区二区免费观在线| 久久99九九99精品| 中文字幕av一区二区三区高| 99久久精品情趣| 亚洲国产日韩精品| 欧美一区国产二区| 国产一区二区三区久久久| 中文字幕欧美三区| 91免费视频网址| 日韩精品一级中文字幕精品视频免费观看 | 香蕉加勒比综合久久 | 久久久久久毛片| 成人免费视频国产在线观看| 《视频一区视频二区| 欧美日韩午夜在线| 精品中文字幕一区二区小辣椒 | 91精品国产色综合久久不卡电影 | 国产成人精品免费视频网站| 中文字幕中文字幕一区| 欧美日韩国产综合草草| 国产精品自拍毛片| 夜夜揉揉日日人人青青一国产精品| 欧美久久久久免费| 国产成人在线免费观看|