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

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

?? zhudanyuan.#3

?? 新華龍c8051f020單片機 串口調試示例程序
?? #3
字號:
#include <c8051f020.h>               
#include <stdio.h>
#include <math.h>
#include <absacc.h>
#include <intrins.h>


    //C8051F020的16位SFR定義
/*sfr16 DP       = 0x82;                // 數據指針
  sfr16 TMR3RL   = 0x92;                // 定時器T3重裝值
  sfr16 TMR3     = 0x94;                // 定時器T3計數器
  sfr16 ADC0     = 0xbe;                // ADC0數據
  sfr16 ADC0GT   = 0xc4;                // ADC0大于窗口
  sfr16 ADC0LT   = 0xc6;                // ADC0小于窗口
  sfr16 RCAP2    = 0xca;                // 定時器T2捕捉/重裝
  sfr16 T2       = 0xcc;                // 定時器T2
  sfr16 RCAP4    = 0xe4;                // 定時器T4捕捉/重裝
  sfr16 T4       = 0xf4;                // 定時器T4
  sfr16 DAC0     = 0xd2;                // DAC0數據
  sfr16 DAC1     = 0xd5;                // DAC1數據*/

#define	DELAY	_nop_();_nop_();_nop_();_nop_();
#define uint    unsigned int
#define uchar   unsigned char
#define ulong   unsigned long
#define BAUDRATE      5600             // UART波特率(bps)
#define SYSCLK        24000000         // 系統時鐘頻率(Hz)
#define SAMPLE_RATE   50000            // 采樣頻率(Hz)
#define N0   5
#define N1   5




//********************************* ***** 系統參數設定 **************************************/
#define CUR_SHG    0.00036             //SHG溫控恒流源360uA
#define CUR_THG    0.001000            //THG溫控恒流源1000uA
#define SHGSetL    5000                //50攝氏度
#define SHGSetH    7500                //75攝氏度
#define THGSetL    13000               //130攝氏度
#define THGSetH    16000               //160攝氏度
#define DAC_dat    0x012000
#define DAC_cha1   0x000000
#define DAC_cha2   0x002000

uint SHGSet;                           //SHG晶體設定溫度*100
uint SHGAct;                           //SHG晶體實際溫度*100
uint THGSet;                           //THG晶體設定溫度*100
uint THGAct;                           //THG晶體實際溫度*100

uint xdata filter0_buf[N0];
uint xdata filter1_buf[N1];
uchar xdata array0,array1;
 
void delay(uint i);
void long_delay(void);
void short_delay(void);
void PCA_Init (void);
void PCA_ISR  (void);
void StoreData(void);
void Receiveing(uchar in_byte);
void ReceiveingPC(uchar in_byte);
void Send_data( uchar out_byte);
void Send_dataPC(uchar out_byte);
void Spi_Write( uint DACcode);
void GetSHG(uchar channel,float current);   
void GetTHG(uchar channel,float current);
uint GetADCData(uchar channel);
uint filter(uchar channel);           //遞推平均濾波法
uint Set_SHG(uint tem);
uint Set_THG(uint a);

sbit LIGHTH      = P2^6;
sbit LIGHTL      = P2^7;
//MAX125功能口定義
sbit MAX_CS      = P2^0;
sbit MAX_CON     = P2^1;
sbit MAX_RD      = P2^2;
sbit MAX_WR      = P2^3;
sbit MAX_INT     = P2^4;
sbit MAX_CLK     = P2^5;


//DAC8164功能口定義 
sbit DAC_LDAC    = P3^0;
sbit DAC_ENAB    = P3^1;
sbit DAC_A0      = P3^2;
sbit DAC_SYNC    = P3^3;
sbit DAC_SCLK    = P3^4;
sbit DAC_DIN     = P3^5;


void send_byte( uchar out_byte);
void SYSCLK_Init (void);
void PORT_Init (void);
void UART0_Init (void);
void UART1_Init (void);
void PCA_Init (void);
void DAC8164_Init (void);
void MAX125_Init (void);
void Timer3_Init (int counts);
void DAC8164_ISRA (void);
void DAC8164_ISRB (void);
void Pwm(void);

//主程序
void main (void)
{
 unsigned int ch1mv,ch2mv;
 unsigned long a;
 WDTCN = 0xde;                         
 WDTCN = 0xad;                            // 禁止看門狗

 SYSCLK_Init ();                          // 初始化振蕩器
 PORT_Init ();                            // 初始化數據交叉開關和通用I/O口
 UART0_Init ();                           // 初始化UART0
 UART1_Init ();                           // 初始化UART1
 Timer3_Init (SYSCLK/SAMPLE_RATE);        // 初始化Timer3 
 DAC8164_Init ();                         // 初始化DAC8164 
 MAX125_Init ();                          // 初始化MAX125
 PCA_Init ();			                  // PCA初始化成8位脈寬調置
//配置中斷優先級
	IP = 0x02;     //UART0=0; Timer0=1; Timer1=0;
	EIP1 = 0x08;   //PCA0=1; SMBus=0;
	EIP2 = 0x11;   //INT6=1; PR4=0; PR3 = 1;		

	EA = 1;

 for(a=0;a<0xffff;a++)
 {
  LIGHTH = 1; 
  LIGHTL = 0;
  delay(999999);
  LIGHTH = 0; 
  LIGHTL = 1;
 }
 Set_SHG(SHGSet);                         //SHG溫度設定
 delay(1000);
 Set_THG(THGSet);                         //THG溫度設定
 delay(1000);
 DAC8164_ISRA (ch1mv);                         //A/D轉換通道A
 delay(1000);
 DAC8164_ISRB (ch2mv);                         //A/D轉換通道B
 delay(1000);
 GetADCData();                            //D/A數據采集
 }


  //系統時鐘初始化
void SYSCLK_Init (void) 
{
 int i;                                   //延時計數器
 OSCXCN = 0x67;                          //啟動外部振蕩器
 for (i=0;i<256;i++) ;                    //等待振蕩器啟動
 while (!(OSCXCN & 0x80));               //等待晶體振蕩器穩定
 OSCICN = 0x88;                           //選擇外部振蕩器為系統時鐘源并使能丟失時鐘檢測器
 }

//I/O口初始化,配置數據交叉開關和通用I/O口
void PORT_Init (void)
{  
 XBR0 = 0x0e;                             // 使能CEX0,CEX1,CEX2,UART0和SPI0
 XBR1 = 0x80;                             // 使能T1
 XBR2 = 0x44;                             // 使能數據交叉開關和UART1
 P1MDIN = 0xff;                    
 P1MDOUT= 0xfc;                           // P1.0,P1.1設為漏開方式,P1.2-P1.7設為推挽方式
 P2MDOUT= 0xff;                           // P2口設為推挽方式
 P3MDOUT= 0xff;                           // P3口設為推挽方式
 P74OUT = 0xf0;                           // P4,P5口設為漏開方式 
 P4 = 0Xff;                                                                   
}

//配置PCA的CEX0,CEX1,CEX2輸出8位PWM信號
void PCA_Init (void)
{
    PCA0CN    = 0x40;                    //允許PCA0
    PCA0CPM0  = 0x42;                    //使能PCA0的PWM輸出
    PCA0MD    = 0x02;                    //系統時鐘的4分頻
    PCA0CPL0  = 0x00;                  
    PCA0CPH0  = 0x7e;                    //占空比50%
}

 
//UART0配置
void UART0_Init (void)
{
   SCON0   = 0x50;                       // UART0工作模式1, 8-bit UART, 使能RX
   T2CON   = 0x30;                       // 定時器 2, UART0波特率發生器
   TR2    = 1;                           // 啟動Timer2
   CKCON |= 0x20;                        // Timer2使用系統時鐘
   PCON  |= 0x90;                        // 禁止UART0及UART1的波特率/2
   TI0    = 1;                           // 表示 TX0 就緒
   ES0    = 1;
}

//UART1配置
void UART1_Init (void)
{
   SCON1   = 0x50;                       // UART1工作模式1, 8-bit UART, 使能RX
   TMOD    = 0x20;                       //定時器 1, 模式 2, 8-bit 重裝載
   CKCON |= 0x10;                        // Timer1使用系統時鐘
   TH1    = -(SYSCLK/BAUDRATE/16);       //設定定時器1為重裝載模式
   TR1    = 1;                           // 啟動Timer1
  
   ET0 = 1;
   TR0 = 0;
   ET1 = 0;
}
	
//初始化計時器
    TMOD = 0x21;     //T1工作方式2,8位重裝,作為串口通訊波特率發生時鐘源;T0工作方式1,16位計時
	CKCON |= 0x18;   //T0與T1,T2均使用系統時鐘
	TH1 = -(SYSCLK/BAUDRATE/16);
	TR1 = 1;
	
	//T2CON = 0x00;

//MAX125初始化
void MAX125_Init (void)        
{  
    MAX_CS  =01;
    MAX_CON =01;
    MAX_RD = 1;
    MAX_WR = 1;
	delay(100);
    MAX_CS = 0;
    MAX_WR = 0;
    P4 = 0X01;
    MAX_CS = 1;
    MAX_WR = 1;
            
}


//DAC8164初始化
void DAC8164_Init (void)        
{ 
   unsigned int dat;
   DAC_LDAC = 0;
   DAC_ENAB = 1;
   DAC_A0   = 0;
   DAC_SYNC = 1;  
   dat = DAC_dat;
   Spi_Write(dat);
 }





//----------SHG與THG的溫度設定-------------//
unsigned int Set_SHG(uint tem)                //SHG 50 -70 度
 {
    unsigned int  dat;	        
    float a,b;
    float t;
    float v;
    float r; 
    tem = 6000;
    t = tem/100.0; 	
    a = 1/(273.15+t)-1/298.15;
    b = exp(3.940009*a*1000)*10;
    r = 1.01*b-0.03187;
    v = r * CUR_SHG*1000;
    dat = (uint)(16384/5*v);
    if(dat>16383)
    {
      dat = 16383;
     }
    else if(dat<0)
     {
      dat = 0;
     }
    dat &=0x3fff;                   //14 bits is vaild.
    DAC_A0  = 0;
    return dat;                     //SHG設定, DAC8164通道A
 }	
unsigned int Set_THG(uint tem)                 //THG 130 -160 度
 {
    unsigned int  dat;			
    float v;
	tem = 15000;
    v = tem/1000.0;
    dat = (uint)(16384/5*v);
    if(dat>16383)
   {
      dat = 16383;
   }
    else if(dat<0)
   {
      dat = 0;
   }
   dat &=0x3fff;                   //14 bits is vaild.
   DAC_A0  = 0;                      
   return dat;                     //THG 設定, DAC8164通道B
 }

void DAC8164_ISRA(unsigned int tem)
{
   unsigned int dat;
   dat =  Set_SHG(tem);
   dat<<=2;
   dat |= DAC_cha1|0x800000;
   Spi_Write(dat);
 }
void DAC8164_ISRB(unsigned int tem)
{
   unsigned int dat;
   dat = Set_THG(tem);
   dat<<=2;
   dat |= DAC_cha2|0x800000;
   Spi_Write(dat);
 }
void Spi_Write(unsigned int dat)
{
	unsigned char i;
	DAC_ENAB=0;
    _nop_(); 
    DAC_SYNC=0;
    DAC_SCLK = 1; 
    for(i=0;i<24;i++)
	{
	   DAC_DIN = ((dat&0x800000)>0)?1:0;
	   DAC_SCLK = 0;DAC_SCLK = 1; 
	   dat<<=1;
	 }
    _nop_();
    _nop_();
    DAC_SYNC=1;
    _nop_(); _nop_();
	DAC_LDAC=1; 
	delay(10);
    DAC_ENAB=1;
}

//***************************************數據采集******************************//
uint GetADCData(uchar channel)
 {	
	uchar xdata dtt,dth,dtl;
	uint xdata sump = 0;
	uint xdata i;
	MAX_CS = 0;	
	for(i=0; i<15; i++)
	{
	  MAX_CON = 0;
	  delay(10);
      MAX_CON = 0;
	  if(MAX_INT = 0);
	  { 
        for(i=0; i<2; i++)
	   {
	    MAX_RD  = 0;
        _nop_();
        _nop_();
	    dtt = P5&0x3f;
        dth = dtt;
		dtl = P4;
	    sump+= dtl+dth*256;
        MAX_RD  = 1;
        delay(3000);
	    }
	   }
		delay(30);
	}
	return sump / 15;
 }


//--------------遞推平均濾波--------------------//
uint filter(uchar channel)       
{ 
    char  count;
    uint  sum = 0;
	if(channel == 0)
	{
		filter0_buf[array0++] = GetADCData(0);
		if (array0 == N0)  
		array0 = 0;	
		for (count=0;count<N0;count++)
		{
		   sum += filter0_buf[count];
		}
		return (uint)(sum/N0);
	}
	else if(channel == 1)
	{
		filter1_buf[array1++] = GetADCData(1);
		if (array1 == N1)  array1 = 0;	
		for (count=0;count<N1;count++)
		{
		   sum += filter1_buf[count];
		}
		return (uint)(sum/N1);
	}
	
	}		

//--------SHG與THG的溫度讀取----------//
void GetSHG( uchar channel, float current)   
 {
	uint  adresult;
	float  v,tem,logval;
	float  m,n,z;

	adresult = filter(channel);	
	v = adresult*5.0/16384.0; 
	if(channel == 5)
	{
	 logval = log(v/CUR_SHG);
 	 _nop_();
     _nop_();
	  m = 1.120332914398244e-003 ;
	  _nop_();
     _nop_();
	  n = 2.354891980894096e-004*logval;
	  _nop_();
     _nop_();
	  z = 8.289547029771934e-008*logval*logval*logval;
	 _nop_();
     _nop_();
	 _nop_();
     _nop_();;
	  tem = 1.0/(m + n + z) - 273.15+0.11;  //實際溫度	
	 _nop_();
     _nop_();
	  SHGAct = tem*100;                     //SHG實際溫度
	}
	delay(3000);
 }
void GetTHG( uchar channel, float current )
 {
	uint  adresult;
	float  v,tem,res;
    adresult = filter(0);	
	v = adresult*5.0/16384.0; 
        res = v/CUR_THG;
        tem = 0.261643*res-261.643;
	THGAct = tem*100.0;                       //THG實際溫度
	
 }



//UART通信
void Receiving()
{
 #define PC_data (uchan xdata*) 0x0000;  //定義外部數據地址
 uchan xdata * point;                    //定義外部數據指針變量
 uchan ch;                              
 uint i;
 UART0_Init();          
 TR1 = 1;                                //啟動波特率發生器
 RI0 = 0;                                //清接受中斷標志
 point= PC_data;                         //指針變量賦初值
 P4= 0xf0;                               //CS0=0,CS1=1,選擇RAM中的第0頁
 for (i=0;i<oxffff;i++)                  //接受64K個數據(超過64K另置頁地址)
  {
   while(!RI0);                          //接受一個字節數據
   *point=SUBF0;                         //存儲一個字節數據到RAM中                     
   point++;                              //指向下一個地址
   RI0 = 0;                              //清接受中斷標志                                                            
  } 
 TR1=0;                                  //停止波特率發生器
 P4= 0xff;                              
 erase_flash();                          //擦除FLASH芯片
 point= PC_data;                         //指針變量賦初值                      
 for (i=0;i<oxffff;i++)                  //寫64K字節數據到FLASH中
  {
   P4= 0xf0;                             //選擇RAM中第0頁
   ch= *point;                           //讀RAM
   P4= 0x8e;                             //選擇FLASH中第0頁
   XBYTE[0X5555]= 0xaa;                  //寫一個字節的命令
   XBYTE[0X2aaa]= 0x55;                  //寫一個字節的命令  
   XBYTE[0X5555]= 0xa0;                  //寫一個字節的命令
   *point= ch;                           //寫一個字節到FLASH中
   delay(500);
   point++;                              //指針變量指向下一個地址
  }
  P4= 0xff;                              //CS0=0,CS1=1,重置頁地址
}


void Send_data(void)
{
 uint i;
 P4= 0xf0;
 SCON1= 0x40;
 TR1 = 1;
 point= PC_data;
 P4= 0xf0;
 for (;point<ffff;)
 { for (i=0;i<10;i++)
  {
   SUBF1= *point;
   while((SCON1&0x02)==0);
   SCON1= 0x40;
   point++;
   }
  }
}

//--------------------延時指令定義//-----------------//
void delay(uint i)
{
	while (i--) ;		
}


void long_delay(void)
{
	uchar  i;
	for( i = 0; i <250; i++)
	{
		  _nop_();
          _nop_();
	}
}


void short_delay(void)
{
	uchar i;
	for( i = 0; i <100; i++);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91小视频免费观看| www.日本不卡| 国产精品一区一区| 精品视频在线视频| 久久久久国产精品麻豆ai换脸| 亚洲欧美日韩一区二区| 国产乱码一区二区三区| 欧美精品乱人伦久久久久久| 中文字幕在线一区| 麻豆成人91精品二区三区| 91久久精品网| 国产精品久久毛片| 国产东北露脸精品视频| 91麻豆精品国产91久久久| 亚洲蜜桃精久久久久久久| 成人在线综合网站| 9i看片成人免费高清| 精品一区二区三区免费观看| 国产风韵犹存在线视精品| 92国产精品观看| 欧美日韩高清一区二区不卡| 在线综合视频播放| 国产亚洲va综合人人澡精品| 中文字幕亚洲综合久久菠萝蜜| 一区二区三区蜜桃| 免费成人性网站| 东方欧美亚洲色图在线| 日本精品裸体写真集在线观看| 欧美久久久一区| 国产视频在线观看一区二区三区| 亚洲欧美电影一区二区| 日本怡春院一区二区| 国产 欧美在线| 欧美亚洲综合久久| 久久蜜桃av一区二区天堂 | 亚洲欧美一区二区三区国产精品| 欧美日韩一区在线观看| 国产亚洲欧美中文| 成人一区二区三区在线观看| 国产精品女主播在线观看| 成人黄色免费短视频| 国产精品沙发午睡系列990531| 成人污视频在线观看| 中文字幕一区二区三区av| 色噜噜夜夜夜综合网| 一区二区成人在线视频| 欧美高清精品3d| 男人的天堂亚洲一区| 亚洲精品一区二区三区香蕉| 91小视频在线免费看| 亚洲伊人色欲综合网| 91精品午夜视频| 国产麻豆精品在线| 综合久久给合久久狠狠狠97色| 色素色在线综合| 日本成人超碰在线观看| 精品成人一区二区| 成人av在线一区二区三区| 日韩理论片中文av| 欧美一级艳片视频免费观看| 国产精品中文欧美| 一区二区欧美国产| 日韩精品影音先锋| 91婷婷韩国欧美一区二区| 午夜精品福利久久久| 色呦呦一区二区三区| 欧美日韩国产首页在线观看| 日韩av中文字幕一区二区三区| 黑人巨大精品欧美黑白配亚洲| 国产成人免费av在线| 精品国产91亚洲一区二区三区婷婷| 亚洲va在线va天堂| 91高清视频在线| 亚洲自拍偷拍网站| 欧美亚洲综合在线| 亚洲成人一区二区在线观看| 色8久久精品久久久久久蜜| 亚洲欧美日韩国产一区二区三区| 不卡av免费在线观看| 18涩涩午夜精品.www| 99久久99久久精品免费看蜜桃| 国产精品九色蝌蚪自拍| 91美女在线看| 亚洲午夜久久久久| 欧美一区二区大片| 久草精品在线观看| 久久99精品久久久久久 | 亚洲麻豆国产自偷在线| 秋霞午夜鲁丝一区二区老狼| 美女视频黄 久久| 亚洲嫩草精品久久| 极品少妇xxxx精品少妇偷拍| 日本一区二区综合亚洲| 欧美欧美欧美欧美| 色婷婷精品久久二区二区蜜臀av| 国产一区视频导航| 日韩精品一卡二卡三卡四卡无卡| 中文字幕色av一区二区三区| 欧美精品一区二区久久久| 欧美日韩欧美一区二区| 色婷婷精品大视频在线蜜桃视频| 国产1区2区3区精品美女| 精品一二线国产| 另类调教123区| 亚洲h在线观看| 99综合电影在线视频| 中文字幕av一区二区三区高 | 欧美性色黄大片| 欧美系列亚洲系列| 91在线视频网址| 99国内精品久久| 91麻豆自制传媒国产之光| 成人免费高清在线观看| 国产精品亚洲综合一区在线观看| 美女视频黄频大全不卡视频在线播放| 亚洲va欧美va人人爽午夜| 午夜欧美电影在线观看| 午夜影院在线观看欧美| 香蕉av福利精品导航| 日本不卡一二三| 狠狠色狠狠色合久久伊人| 黄色日韩网站视频| 国产高清精品久久久久| 成人美女视频在线观看| 91久色porny | 国产在线看一区| 国产精品综合二区| 6080日韩午夜伦伦午夜伦| 欧美日韩你懂的| 久久午夜老司机| 久久综合网色—综合色88| 久久女同精品一区二区| 欧美极品美女视频| ...中文天堂在线一区| 一区二区三区.www| 视频一区中文字幕| 国内精品国产成人国产三级粉色| 国产精品123| 日本黄色一区二区| 日韩一级大片在线观看| 国产欧美一区二区三区在线看蜜臀| 性欧美疯狂xxxxbbbb| 黑人巨大精品欧美黑白配亚洲| 国产高清一区日本| 在线看国产一区| 欧美第一区第二区| 国产日本亚洲高清| 亚洲综合成人在线| 久久99日本精品| 91在线小视频| 欧美电影精品一区二区| 国产精品黄色在线观看| 日韩电影在线看| 不卡高清视频专区| 91福利社在线观看| 国产999精品久久久久久| 国产成人在线网站| 欧美日韩三级在线| 国产三区在线成人av| 亚洲精品日韩一| 国产一区二区精品久久99| 91免费版在线看| 欧美videossexotv100| 国产精品成人一区二区艾草 | 国产乱子伦视频一区二区三区| 91麻豆产精品久久久久久| 欧美成人精品1314www| 亚洲美女在线一区| 高清beeg欧美| 欧美mv日韩mv亚洲| 午夜精品福利一区二区蜜股av| 丁香啪啪综合成人亚洲小说 | 六月丁香婷婷色狠狠久久| 91免费看`日韩一区二区| 26uuu久久天堂性欧美| 亚洲曰韩产成在线| 成人激情免费网站| 久久久国产午夜精品| 秋霞国产午夜精品免费视频| 欧美专区在线观看一区| 欧美国产精品v| 韩国精品主播一区二区在线观看| 欧美日韩在线播| 亚洲一区二区三区四区在线| 成人久久18免费网站麻豆| 久久久久久久av麻豆果冻| 日本欧美一区二区| 91麻豆精品国产91久久久使用方法| 亚洲免费观看高清完整版在线| 成人精品免费看| 中文字幕精品—区二区四季| 国产一区二区剧情av在线| 精品国产污污免费网站入口 | 亚洲五码中文字幕| 日本高清不卡aⅴ免费网站| 中文字幕日韩av资源站| 国产成人免费视频网站| 久久精品一区二区三区不卡牛牛| 国产在线精品一区二区| 2014亚洲片线观看视频免费|