亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
91免费在线看| 一区二区三区不卡在线观看| 天堂蜜桃一区二区三区| 欧美日本一区二区| 中文字幕人成不卡一区| 亚洲图片另类小说| 久久99精品网久久| 91视频国产资源| 精品乱人伦一区二区三区| 亚洲女同一区二区| 国产高清在线观看免费不卡| 欧美视频在线一区二区三区| 亚洲国产精品高清| 国产主播一区二区| 欧美老人xxxx18| 亚洲三级免费电影| 丁香天五香天堂综合| 日韩精品一区二区三区四区 | 一区二区三区日韩| 高清不卡在线观看| 久久久久久久免费视频了| 蜜臀va亚洲va欧美va天堂| 欧美午夜电影一区| 亚洲人成7777| 色综合久久久久综合体| 17c精品麻豆一区二区免费| 国产成人精品免费在线| 26uuu精品一区二区在线观看| 三级不卡在线观看| 欧美一区二区三区性视频| 亚洲国产va精品久久久不卡综合| 色婷婷亚洲婷婷| 日韩美女啊v在线免费观看| gogogo免费视频观看亚洲一| 国产日韩欧美精品在线| 风间由美一区二区三区在线观看| 精品国产乱子伦一区| 久久99精品一区二区三区| 亚洲精品一线二线三线无人区| 久色婷婷小香蕉久久| 精品国精品国产| 国产精品 欧美精品| 国产精品丝袜黑色高跟| 99在线精品免费| 一区二区三区鲁丝不卡| 欧美日韩国产乱码电影| 麻豆极品一区二区三区| 精品久久久久一区二区国产| 色94色欧美sute亚洲线路一ni| 久久精品免费看| 老司机精品视频导航| 日韩一二三区不卡| 久久在线免费观看| 成人免费视频一区| 亚洲黄色性网站| 欧美福利视频一区| 韩国欧美国产1区| 中文字幕亚洲一区二区av在线 | 亚洲激情在线激情| 在线不卡的av| 国产成人在线网站| 亚洲女性喷水在线观看一区| 欧美一区日韩一区| 成人精品免费看| 亚洲成人免费av| 久久久久久久综合狠狠综合| 91视视频在线观看入口直接观看www| 亚洲综合在线观看视频| 日韩亚洲电影在线| 99精品热视频| 琪琪久久久久日韩精品| 国产精品女同互慰在线看| 欧美系列在线观看| 国产一二精品视频| 亚洲一区在线看| 国产色91在线| 欧美日韩高清影院| 福利电影一区二区| 日韩不卡一区二区三区| 国产精品对白交换视频| 欧美一区二区女人| 色综合久久久网| 国产99久久久国产精品潘金网站| 一区二区不卡在线视频 午夜欧美不卡在| 91精品国模一区二区三区| youjizz久久| 国产一区亚洲一区| 视频一区二区三区中文字幕| 国产精品嫩草影院av蜜臀| 欧美一区二区视频观看视频 | 欧美顶级少妇做爰| 91麻豆swag| 成人午夜视频免费看| 青草av.久久免费一区| 亚洲一区二区三区在线| 国产精品久久久久久久久快鸭| 日韩欧美国产wwwww| 欧美三级中文字幕在线观看| av午夜一区麻豆| 国产成人精品三级| 国产麻豆欧美日韩一区| 热久久一区二区| 午夜伦理一区二区| 亚洲裸体在线观看| 成人免费视频在线观看| 久久久久久久综合狠狠综合| 2021久久国产精品不只是精品| 5858s免费视频成人| 欧美日韩在线播放三区| 欧美伊人久久大香线蕉综合69| www..com久久爱| 99久久免费视频.com| 丁香亚洲综合激情啪啪综合| 国产精品中文字幕一区二区三区| 激情成人午夜视频| 国内成人自拍视频| 国产伦精一区二区三区| 国产精品538一区二区在线| 黄页视频在线91| 国产成人精品在线看| 岛国精品在线观看| bt7086福利一区国产| 91天堂素人约啪| 欧洲人成人精品| 欧美日韩视频在线一区二区| 欧美视频一区二区| 91精品一区二区三区久久久久久 | 欧美精品v国产精品v日韩精品| 欧美性感一类影片在线播放| 精品视频在线视频| 91精品国产综合久久蜜臀| 日韩一级完整毛片| 久久久av毛片精品| 精品国产3级a| 国产精品一级二级三级| 国产精品亚洲一区二区三区妖精| 丁香六月久久综合狠狠色| 欧美性高清videossexo| 精品视频在线看| 日韩视频在线永久播放| 国产视频911| 亚洲人成网站在线| 天天色天天操综合| 国产自产高清不卡| 色呦呦日韩精品| 51精品视频一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 国产欧美日韩亚州综合| 一区二区免费在线播放| 久久精品国产亚洲aⅴ| 懂色av一区二区三区蜜臀 | 欧美视频在线观看一区二区| 这里只有精品99re| 中文字幕精品在线不卡| 亚洲一区二区三区视频在线播放 | 在线精品视频免费观看| 日韩一区二区三区精品视频| 国产调教视频一区| 亚洲亚洲精品在线观看| 国产一区二区三区黄视频 | 日韩不卡一区二区三区| 成人99免费视频| 日韩视频在线你懂得| 亚洲欧美日本在线| 韩日av一区二区| 欧美日韩成人在线| 中文字幕av不卡| 精品一区二区在线视频| 免费美女久久99| 久久女同精品一区二区| 天堂久久久久va久久久久| 日韩欧美亚洲国产另类| 欧美亚洲一区二区在线观看| 日韩免费一区二区三区在线播放| 亚洲欧洲日韩女同| 久久99精品国产麻豆不卡| 在线免费不卡视频| 日本一区二区电影| 国产最新精品免费| 日韩欧美123| 日韩电影在线免费观看| 91丨porny丨中文| 国产精品免费人成网站| 韩国v欧美v日本v亚洲v| 欧美一区二区美女| 亚洲国产综合人成综合网站| av午夜精品一区二区三区| 欧美国产激情一区二区三区蜜月 | 91成人国产精品| 亚洲国产精品黑人久久久| 久久99久久99小草精品免视看| 欧美猛男超大videosgay| 亚洲影院理伦片| 欧美男女性生活在线直播观看| 一区二区三区不卡在线观看| 色老头久久综合| 亚洲啪啪综合av一区二区三区| 成人av网址在线| 亚洲天堂免费在线观看视频| 95精品视频在线|