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

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

?? admain.c

?? 絕對好東西!aduc812AD轉換代碼,望對大家學習有所幫助!
?? C
字號:
 /***********************************************************************

***********************************************************************/
#include <ADUC812.H>
#include <math.h>

sbit Run_Id=P2^5;  //工作指示燈
sbit Ctrl1 =P2^6;
sbit Ctrl0 =P2^7;
sbit Adv0  =P1^2;
sbit Adv1  =P1^3;

#define    RUN         0
#define    STOP        1
#define    V_ref       5       //5伏參考電壓
#define    V_12        4095	   //12位A/D轉換系數 1024=8位
#define    ADIN_V0	   0x02	   //ad輸入通道號2
#define    ADIN_V1     0x03	   //ad輸入通道號3

unsigned int      Ad_o[2];
unsigned int      Da_i[2];

struct segment{
 unsigned char V_start;	 //電壓啟示值*10  相當于0.1V為單位
 unsigned char V_end;	 //電壓結束值*10
 unsigned char mul_col;	 //成績系數*10
 unsigned char add_col;  //加法系數*10
};	 //00,12,02,30  含義0v到1.2v 范圍內y=0.2x+3 單位V

struct segment Seg;

unsigned char DATA_U[64];
unsigned char Rptr,Wptr;
unsigned char DATA_W[16];
unsigned char Uptr,Ulen; 
unsigned char flag,flag1,flag_s;
unsigned char time_p,time_r;
idata unsigned int  temp_s[20];
//---ad-轉換返回int型整數----------------------------------------------
//ADC function and choose ADC0---ADC7 by Channel
unsigned int GetADC(unsigned char Channel)	 //ADIN_V0,V1
  { 
   unsigned char *p;
   unsigned char  variable;
   unsigned int  ADC_value;		//用指針將2個char類型數合并成一個int型數
   
   p=(unsigned char *)&ADC_value;
   ADCCON2=Channel;
   SCONV=1;
   while (SCONV)
	 {	 }
   SCONV=1;
   while (SCONV)
	 {	 }
   variable=0x0F&ADCDATAH;		//屏蔽ADC輸入的通道標識符號
   *p=variable;
    p++;
   *p=ADCDATAL;
	//Write_Serial(ADC_value);
    return(ADC_value);
  }
//----Da轉換----0-1--------------------
void SetDac(unsigned char num,unsigned int Da_data)
{
   if(num==0)
   { 
   DACCON=0x1F;
   DAC0H=(unsigned char)((Da_data>>8) & 0x000f);
   DAC0L=(unsigned char)(Da_data & 0x00ff);
   }
   else if(num==1)
   {
    DACCON=0x1F;
    DAC1H=(unsigned char)((Da_data>>8) & 0x000f);
    DAC1L=(unsigned char)(Da_data & 0x00ff);
   }
}
 //--------------------------------
void Delay(unsigned char  D_time)  
   {
   unsigned char i,j,k;
    for(i=0;i<D_time;i++)
	   {  
	   for(j=0;j<0xff;j++);
		{
		   k=j;
		   k=i;
		   i=i;
  		}
     }
   }
//-----------------eeprom中的數據為10倍數--------------------
unsigned char  Select_V(unsigned int Y)		  //查表找運算參數
{
 unsigned long M;
 unsigned char i,Vsel;
 M=(unsigned long)Y*10*V_ref*2; //2-運放的倍數
 M=M / V_12;
 Vsel=(unsigned char)(M & 0x000000ff);
 if(Vsel>100) Vsel=100;
 for(i=0;i<20;i++)
 {
  EADRL=i;
  ECON=0x01;
  if((Vsel>=EDATA1)&&(Vsel<EDATA2))   
   {
   Seg.V_start= EDATA1;
   Seg.V_end  = EDATA2;
   Seg.mul_col= EDATA3;
   Seg.add_col= EDATA4;
   return 1;
   }
 }
 return 0;
}
//------------------------------------------------------
unsigned char Write_f(unsigned char type,unsigned char Addr)
{
  switch(type)
  {
   case 0:	   //全部擦除
		 ECON=0x06;      
         Delay(20);		 //20ms
         ECON=0x03; 
	   break;
   case 1:	  //通過結構進行4字節寫操作
         EADRL=Addr;
         ECON=0x01;  
  		 EDATA1=Seg.V_start;
         EDATA2=Seg.V_end  ;
         EDATA3=Seg.mul_col;
         EDATA4=Seg.add_col;
  	     ECON=0x05;  
         ECON=0x02;
	     ECON=0x03; //讀
	   break;
   case 2:	  //只進行寫操作
	    EADRL=Addr;
	    ECON=0x02; //寫
	    ECON=0x03; //讀
       break;
  }
 
 return 1;
}

//------Ad-Da轉化函數-------y=ax+b----------------------
 void Calcu(unsigned char num)
 {	
   unsigned long G;
   unsigned int Y;
   if(num==0) 
     {Y=GetADC(ADIN_V0);}
   else if(num==1) 
     {Y=GetADC(ADIN_V1); }   //讀取ad 轉換值
   
   Ad_o[num]=Y;
   if(Select_V(Y)==1);		  //查表找運算參數
   {
    G=Seg.add_col *V_12;
	G=G/V_ref/2; 		  //電壓〉點數 2--運放調整
	Y=(unsigned int)((Seg.mul_col*Y+G)/10);
   	if(Y>=0x0FFF)
      {
	     Y=0x0FFF;
	  }
    if(Y<=0x0000)
      {
	    Y=0x0000;
	  }
   }
   Da_i[num]=Y;
   SetDac(num,Y);
 }

void SystemInit()		//系統初始化函數
  {
 
   TL2=0xDC;
   TH2=0xFF;
   RCAP2L=0xDC;
   RCAP2H=0xFF;
   T2CON=0x30;       //set rate and start  9600
   TR2=1;
   SCON=0x50;        //set serial port mode
   ES=1;			 //允許串口中斷 
  
   TMOD=0x01;		 //定時器0工作在方式1 10ms
   TL0=0xFF;
   TH0=0xDB;         //設定定時器初值
   TR0=1;
   ET0=1;            //允許定時器0中斷

// EX1=1;
// EX0=1;			 //允許外部中斷  
// IT0=1;
// IT1=1;			//設置外部中斷為下降沿觸發方式
// PX1=1;
// PX0=1;            //設定外部中斷優先位
   ADCCON1=0x7c;
   EA=1;  			 
   }
//--------------------------------------------
 void Write_Serial(unsigned int T_Data)	   //串口發送函數 在發送的過程中沒有禁止中斷
  {
  unsigned char *p;
  p=(unsigned char *)&T_Data;
  DATA_W[0]=*p;
  DATA_W[1]=*(p+1);
  Uptr=0;
  Ulen=2;
  TI=1;
  flag=1;
  }

 //---------------------------------------------
 void W_Uart(unsigned char *p, unsigned char len)	   //串口發送函數 在發送的過程中沒有禁止中斷
  {
   unsigned char i;
   for(i=0;i<len;)
   {
    DATA_W[i]=*p;
    i++;
	p++;
   }
   Uptr=0;
   Ulen=len;
   TI=1;
   flag=1;
  }

 //###########################################
void main(void)
{
 unsigned char  i,k;
 unsigned char  len_r,count; 
 unsigned char  Addr_P;
 unsigned char  temp_t;
 unsigned char  j;
 SystemInit();
 // P1^2=1; P1^3=1;
 Rptr=Wptr=Uptr=0x00;
 flag=flag1=0x00;
 flag_s=0x00;
 temp_t=0;
 W_Uart("Aduc812 start",13);
  //ptr =(unsigned char*)&Seg_r;
 for(i=0;i<20;i++) { temp_s[i]=0x00;}
 //--------初始化flash-----------
  EADRL=0;
  ECON=0x01;
  if(EDATA1==0xff)
  {
   Write_f(0x00,0x00);  //擦除flash
   EADRL=0x9f;
   for(i=0;i<16;i++)
     {
      EADRL=i;  	 
	  EDATA1=i*10;
      EDATA2=(i+1)*10;
      EDATA3=10;
      EDATA4=0;
	  ECON=0x02;
      EADRL=0x9f;
	 }
   }
   EADRL=0x40;
   ECON=0x01;
   j=EDATA1;//j=EDATA1&0x01;
  //------------------------------
 while(1)
  {	
   if(time_r==0){Run_Id=~Run_Id;time_r=10;}
   if(Ctrl0)
   {
    if(GetADC(ADIN_V0)>0x0030)
	{
	i=j&0x1f;
	if(i>20) i=20;
	//SetDac(0,Da_i[i]);
    SetDac(0,temp_s[i]);
   	}
    else
	{
	 SetDac(0,0x0000);
	 for(i=0;i<20;i++) { temp_s[i]=0x00;}
 	}
   }
   else
   {
   Calcu(0);
   if(flag_s==1)
     {
   	  for(i=19;i>0;i--) { temp_s[i]=temp_s[i-1];}
	  temp_s[0]=Da_i[0];
      flag_s=0;
	  if((j&0x80)!=0) temp_t++;
	 //if((temp_t>=0x64)&&((flag_u&0x01)==0x01))
	  if(temp_t>=0x64)
	  {
	  Write_Serial(Ad_o[0]);   //test zhy
	  while(flag){;}
	  Write_Serial(Da_i[0]);
	  temp_t=0;
	  }
	 } 
   }
   //-----------------------
   if((time_p==0)&&(flag1>0))
    {
	 flag1=0x00;   
     W_Uart("uart err",8);
	 Rptr=Wptr=0x00;
	}
   //-----------------------
   if(Rptr!=Wptr)
     {
	  time_p=0x80;
	  k=DATA_U[Rptr];
	  Rptr++;
	  if(Rptr>=64) {Rptr=0;}
	  switch(flag1) 
	   {
	    case 0:				//0xaa 頭  下載
	         if(k==0xaa) {flag1=0x01;}
			 else if(k==0xbb){flag1=0x10;}
			 else if(k==0xcc)
			    {
				  for(i=0;i<20;i++)
				  {
				  Write_Serial(temp_s[i]);   //test zhy
	              while(flag){;}
	              }
				 /*EADRL=0x40;
                 ECON=0x01;  	  //按頁擦
				 EDATA1=0x00;
		         EDATA2=0x00;
			     EDATA3=0xcc;
			     EDATA4=0xcc;	
                 ECON=0x05;  	  //按頁擦
				 ECON=0x02;
			     EADRL=0x9f; // 最后一頁
				 j=0;
				 W_Uart("ok" ,2);
			   	 Rptr=Wptr=0x00;
				 */
				}
			 else if(k==0xcd){flag1=0x20;}
			 break;
	    case 1:
		     if(k>0x00)  //長度  
			    {
				flag1=0x02;
			    len_r=k;
				if(len_r>60) {len_r=60;}
				count=0x00;
			    Addr_P=Rptr;
			  	}
			 else 
			   {flag1=0x00;}
			 break;
	    case 2:     	//等待消息結束長度  
			 count++;
			 if(count==len_r){flag1=0x03;}
		
			 break; 		  
	    case 3: //數據下載完成 	寫消息
	  		 Write_f(0x00,0x00);  //擦除flash
			 Rptr=Addr_P;
			 count=len_r/4;
			 for(i=0;i<count;i++)
			 {
			  EADRL=i;
             // ECON=0x01;  	  //按頁讀
              EDATA1=DATA_U[Rptr];
		      EDATA2=DATA_U[Rptr+1];
			  EDATA3=DATA_U[Rptr+2];
			  EDATA4=DATA_U[Rptr+3];	
             // ECON=0x05;  	  //按頁擦
              ECON=0x02;
			  EADRL=0x9F; // 最后一頁
			  Rptr=Rptr+4;
  			 
			 } 
             len_r=0;
			 Addr_P=0;
			 flag1=0x00;
			 Rptr=Wptr=0x00;
			 W_Uart("down ok" ,7);
			 break;
	    case 0x10:		         //讀frlash數據
	   		 flag1=0x00;
			 Rptr=Wptr=0x00;
			 len_r=0;
			 for(i=0;i<65;i++)
			 {
			  EADRL=i;
              ECON=0x01;
			  Seg.V_start= EDATA1;
              Seg.V_end  = EDATA2;
              Seg.mul_col= EDATA3;
              Seg.add_col= EDATA4;
			  while(flag){;}
	    	  W_Uart((unsigned char*)&Seg ,4);
			 } 
			 break;
	    case 0x20:
		        {
				 flag1=0x00;
				 EADRL=0x40;
                 ECON=0x01;  	  //按頁讀
				 EDATA1=k;
		         EDATA2=0x0f;
			     EDATA3=0xcd;
			     EDATA4=0xcd;	
                 ECON=0x05;  	  //按頁擦
				 ECON=0x02;
			     EADRL=0x41; // 最后一頁
				 j=k;
				 W_Uart("ok" ,2);
				 Rptr=Wptr=0x00;
				}
	   }
	
	 }

  } 	

}




void S_int0() interrupt 0
{

}

void S_int1() interrupt 2
{

}

void Time0() interrupt 1
{
     TL0=0xFF;
     TH0=0xDB; //TH0=0xDB;     //設定定時器初值
  	 TR0=1;        //停止計數
	 if(time_r>0){time_r--;flag_s=1;}
     if(time_p>0){ time_p--;}
    // flag_s=1;
}


void Uart_isr() interrupt 4
{
// unsigned char  R_Data; 
 EA=0;
 if(RI)
	{					 
     RI=0;
	 DATA_U[Wptr]=SBUF;
     Wptr++;
	 if(Wptr>=64) Wptr=0;
    }
 if(TI)
  	{
	TI=0;
	if((Uptr<Ulen) && (flag==0x01))
	 {
	  SBUF=DATA_W[Uptr];
	  Uptr++;
	 }
	else
	 {
	  flag=0;
     }
    }
 
 EA=1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频免费观看| 日韩成人dvd| 色综合久久久久综合体| 中文字幕日韩欧美一区二区三区| 成人午夜视频在线| 亚洲精品国产高清久久伦理二区| 在线视频一区二区免费| 亚洲小少妇裸体bbw| 国产精品天天看| heyzo一本久久综合| 亚洲美女免费视频| 欧美日韩大陆在线| 激情图区综合网| 国产精品亲子伦对白| 色综合天天天天做夜夜夜夜做| 亚洲动漫第一页| 欧美哺乳videos| av资源站一区| 午夜精品一区在线观看| 久久综合九色欧美综合狠狠| 国产69精品久久777的优势| 亚洲人快播电影网| 日韩欧美一二区| 成人av在线网| 日本欧美肥老太交大片| 国产精品天干天干在观线| 在线观看日韩一区| 国内精品伊人久久久久av一坑| 国产精品毛片大码女人| 欧美日本精品一区二区三区| 国产美女娇喘av呻吟久久| 亚洲欧美乱综合| 精品国产一区二区三区不卡 | 亚洲国产精品尤物yw在线观看| 欧美一区二区久久久| 99久久久久久99| 美女视频一区二区三区| 中文字幕中文字幕一区| 欧美电影免费观看高清完整版在线| 成人激情午夜影院| 久久99精品网久久| 亚洲国产一区二区视频| 中文字幕乱码久久午夜不卡 | 日韩精品乱码av一区二区| 日本一区二区三区四区| 欧美一区二区在线看| 91热门视频在线观看| 韩国av一区二区| 午夜久久久久久| 亚洲同性gay激情无套| 久久免费美女视频| 91精品国产麻豆| 在线视频中文字幕一区二区| 粉嫩在线一区二区三区视频| 美国毛片一区二区| 日韩制服丝袜先锋影音| 一区二区三区四区中文字幕| 国产精品日日摸夜夜摸av| 精品噜噜噜噜久久久久久久久试看 | 国产精品久99| 欧美成人一级视频| 在线一区二区视频| 成人精品亚洲人成在线| 国产在线不卡一区| 奇米一区二区三区| 亚洲成av人综合在线观看| 亚洲嫩草精品久久| 国产精品久久久久久久久图文区 | 亚洲福利视频一区二区| 亚洲精品日韩综合观看成人91| 国产精品日韩成人| 国产精品你懂的在线| 国产亚洲精品aa午夜观看| 久久精品人人做人人综合| 欧美精品一区二区在线播放| 精品欧美一区二区三区精品久久| 日韩一区二区麻豆国产| 日韩免费视频一区| 欧美成人精品3d动漫h| 日韩欧美一级二级三级| 欧美不卡在线视频| 337p粉嫩大胆色噜噜噜噜亚洲 | 久久久99精品免费观看不卡| 欧美精品一区二区三区蜜桃| 精品福利一二区| 久久免费的精品国产v∧| 26uuu色噜噜精品一区二区| 久久人人爽人人爽| 欧美韩国一区二区| 亚洲欧洲一区二区三区| 一区二区在线免费| 天天影视涩香欲综合网| 免费亚洲电影在线| 国产一区亚洲一区| 9i在线看片成人免费| 日本高清免费不卡视频| 欧美色老头old∨ideo| 欧美一级片在线看| 国产视频不卡一区| 亚洲男人天堂av| 丝袜亚洲精品中文字幕一区| 麻豆精品视频在线| 成人精品国产免费网站| 色视频欧美一区二区三区| 欧美日韩成人综合在线一区二区| 欧美一区二区不卡视频| 国产调教视频一区| 一区二区三区 在线观看视频| 婷婷中文字幕一区三区| 国产精品自拍三区| 日本久久电影网| 日韩一二三四区| 国产欧美一区二区精品婷婷| 亚洲黄色尤物视频| 麻豆久久久久久| 97精品超碰一区二区三区| 555www色欧美视频| 国产精品网站一区| 水蜜桃久久夜色精品一区的特点 | 亚洲一本大道在线| 久久99最新地址| 91在线观看成人| 欧美变态tickling挠脚心| 国产精品久久久久久久蜜臀| 天堂一区二区在线| 成人蜜臀av电影| 欧美一区二区美女| 亚洲乱码国产乱码精品精98午夜 | 亚洲福利一二三区| 国产精品资源在线| 欧美日韩免费视频| 国产精品毛片无遮挡高清| 日本不卡视频在线| 色综合久久综合| 久久综合九色综合97婷婷女人 | 中国色在线观看另类| 日韩精品乱码av一区二区| av在线不卡网| 久久这里只有精品首页| 亚洲国产日韩精品| 99免费精品在线观看| 精品国产一区二区亚洲人成毛片| 亚洲一二三四久久| 成人av影院在线| 精品国产一区二区精华| 午夜精品久久久久久久| 91小视频在线| 国产欧美日本一区二区三区| 另类中文字幕网| 欧美一区二区三区在线看| 一区二区三区在线免费播放| 成人激情视频网站| 久久精品在这里| 精品午夜久久福利影院| 欧美一卡在线观看| 亚洲va天堂va国产va久| 在线看日韩精品电影| 中文字幕在线不卡一区 | 欧美国产综合色视频| 老司机精品视频导航| 欧美高清视频不卡网| 一区二区三区91| 欧洲一区二区av| 亚洲一区影音先锋| 欧美调教femdomvk| 亚洲福利视频一区| 欧美日韩精品欧美日韩精品一 | 欧美高清你懂得| 视频在线观看国产精品| 欧美日韩国产精品成人| 亚洲亚洲人成综合网络| 欧美日韩综合一区| 激情丁香综合五月| 亚洲精品一区二区在线观看| 韩国视频一区二区| 精品美女一区二区三区| 国产一区二区毛片| 国产欧美日产一区| 99精品国产99久久久久久白柏| 国产精品成人免费| 欧美影视一区二区三区| 无吗不卡中文字幕| 日韩一级高清毛片| 国内精品写真在线观看| 久久久久久久国产精品影院| 国产传媒欧美日韩成人| 国产精品久久久久影院亚瑟| 91丨porny丨户外露出| 亚洲一二三区在线观看| 日韩一区二区中文字幕| 国产一区不卡视频| 中文字幕日韩精品一区| 欧美三级蜜桃2在线观看| 美女性感视频久久| 国产日产欧美一区二区视频| 91在线观看视频| 免费日韩伦理电影| 国产日韩欧美高清| 色噜噜偷拍精品综合在线| 日韩精品免费专区|