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

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

?? zhudanyuan.c

?? 新華龍c8051f020單片機 串口調試示例程序
?? C
字號:
#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 UART0and1_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口
 UART0and1_Init ();                       // 初始化UART0及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 UART0and1_Init (void)
{
   SCON0   = 0x50;                       // UART0工作模式1, 8-bit UART, 使能RX
   SCON1   = 0x50;                       // UART1工作模式1, 8-bit UART, 使能RX
   T2CON   = 0x30;                       // 定時器 2, UART0波特率發生器
   TMOD    = 0x20;                       //定時器 1, 模式 2, 8-bit 重裝載
   CKCON |= 0x20;                        // Timer2使用系統時鐘
   PCON  |= 0x90;                        // 禁止UART0及UART1的波特率/2
   TH1    = -(SYSCLK/BAUDRATE/16);       //設定定時器1為重裝載模式
   TR1    = 1;                           // 啟動Timer1
   ET0 = 1;
   TR0 = 0;
   ET1 = 0;
   TR2    = 1;                           // 啟動Timer2
   TI0    = 1;                           // 表示 TX0 就緒
   ES0    = 1;
}


	
//初始化計時器
    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麻豆蜜桃一区二区三区| 精品欧美乱码久久久久久1区2区| 亚洲视频中文字幕| 国产精品2024| 91精品福利在线一区二区三区| 一色桃子久久精品亚洲| 国产精品综合av一区二区国产馆| 6080yy午夜一二三区久久| 亚洲女性喷水在线观看一区| 国产精品系列在线播放| 欧美变态tickle挠乳网站| 亚洲一区中文在线| 91免费精品国自产拍在线不卡| 久久夜色精品国产欧美乱极品| 午夜精品一区在线观看| 一本色道a无线码一区v| 最新国产の精品合集bt伙计| 成人自拍视频在线观看| 2020国产精品自拍| 国产一区二区久久| 精品处破学生在线二十三| 偷拍自拍另类欧美| 欧美日韩一区二区在线观看| 一区二区三区视频在线观看| 色综合久久中文综合久久牛| 国产精品乱码人人做人人爱| 成人动漫一区二区三区| 国产日韩欧美不卡| 国产精品一区二区免费不卡| 久久先锋影音av| 精品一区二区免费视频| 久久网这里都是精品| 国产酒店精品激情| 国产精品久久久久7777按摩| 成人国产在线观看| 亚洲精品一二三| 色偷偷久久一区二区三区| 亚洲精品视频自拍| 欧美日韩国产欧美日美国产精品| 天天综合网 天天综合色| 7777精品伊人久久久大香线蕉的 | 懂色av一区二区三区免费观看| 日本一区二区免费在线| 97久久超碰精品国产| 亚洲影院理伦片| 日韩精品专区在线| 国产风韵犹存在线视精品| 国产精品色呦呦| 色爱区综合激月婷婷| 日本欧美大码aⅴ在线播放| 精品国产sm最大网站| 国产高清亚洲一区| 亚洲欧美日韩系列| 日韩欧美卡一卡二| 色综合一区二区| 日本欧美在线观看| 国产精品久久毛片| 制服丝袜成人动漫| 国产成人鲁色资源国产91色综| 亚洲精品一卡二卡| 精品久久久久久久一区二区蜜臀| 不卡的电视剧免费网站有什么| 亚洲午夜电影在线观看| 亚洲精品一区二区三区福利| 91啪亚洲精品| 久久97超碰国产精品超碰| 亚洲欧洲国产专区| 日韩久久久久久| 欧美在线一二三四区| 国产精一品亚洲二区在线视频| 亚洲狠狠丁香婷婷综合久久久| 精品久久久久久久久久久院品网| 91免费版在线看| 国产一区不卡精品| 午夜精品久久久久久久久| 欧美激情一区三区| 日韩一卡二卡三卡四卡| 一本一本久久a久久精品综合麻豆| 日本大胆欧美人术艺术动态| 亚洲欧美自拍偷拍色图| 精品99999| 欧美日韩一区高清| 94色蜜桃网一区二区三区| 激情综合网av| 三级久久三级久久久| 亚洲欧美日韩国产综合| 国产亚洲一本大道中文在线| 日韩一区二区中文字幕| 欧美日韩在线免费视频| aa级大片欧美| 成人综合婷婷国产精品久久蜜臀| 捆绑调教一区二区三区| 丝袜亚洲精品中文字幕一区| 亚洲免费大片在线观看| 国产三级一区二区| 久久综合成人精品亚洲另类欧美| 678五月天丁香亚洲综合网| 欧美在线不卡视频| 91麻豆swag| 色综合天天在线| 北条麻妃国产九九精品视频| 国产高清视频一区| 国产成人综合在线观看| 激情小说亚洲一区| 激情成人综合网| 国内精品在线播放| 久久国产精品无码网站| 久久99热这里只有精品| 六月丁香婷婷久久| 国产不卡视频一区| 成人性视频网站| 成人免费看的视频| 99精品视频一区二区| 99久久夜色精品国产网站| 成人开心网精品视频| www.66久久| 色天天综合久久久久综合片| 欧美在线观看一二区| 欧美日韩一区不卡| 欧美一级免费观看| 精品欧美乱码久久久久久 | 欧美婷婷六月丁香综合色| 91黄色免费版| 在线不卡的av| 欧美成人猛片aaaaaaa| 欧美精品一区二区久久久| 国产女人aaa级久久久级 | 亚洲国产精品视频| 日韩二区三区在线观看| 久久99精品国产麻豆婷婷洗澡| 国产精品资源网| 97精品超碰一区二区三区| 在线视频观看一区| 日韩午夜激情视频| 亚洲国产经典视频| 亚洲国产视频在线| 国产在线麻豆精品观看| 99在线视频精品| 欧美疯狂做受xxxx富婆| 久久久久9999亚洲精品| 综合欧美亚洲日本| 免费一级欧美片在线观看| 国产一区91精品张津瑜| 色婷婷久久久久swag精品 | 久久99国内精品| 成人性视频网站| 欧美丰满一区二区免费视频| 久久影视一区二区| 亚洲一区二区三区四区的| 国产一区二区不卡| 欧美视频在线一区| 国产欧美va欧美不卡在线| 亚洲妇女屁股眼交7| 国产白丝精品91爽爽久久| 欧美日韩日日骚| 国产精品亲子伦对白| 日产欧产美韩系列久久99| 成人高清av在线| 日韩精品影音先锋| 一区二区三区日韩欧美| 国产电影一区在线| 8v天堂国产在线一区二区| 亚洲欧美在线高清| 国产精品一区二区无线| 91精品国产手机| 亚洲欧美激情小说另类| 国产经典欧美精品| 欧美一卡2卡3卡4卡| 亚洲一区二区精品视频| 成人精品鲁一区一区二区| 欧美xxxx老人做受| 婷婷中文字幕一区三区| 成人黄色在线网站| 久久久综合九色合综国产精品| 午夜精品久久久久久久99水蜜桃| 94色蜜桃网一区二区三区| 国产女人水真多18毛片18精品视频| 欧美aaaaaa午夜精品| 欧美日韩国产在线观看| 亚洲区小说区图片区qvod| 成人精品视频网站| 国产午夜精品久久久久久久| 另类调教123区 | 中文字幕不卡在线播放| 狠狠色伊人亚洲综合成人| 日韩亚洲欧美在线观看| 日日夜夜精品免费视频| 欧美日韩国产综合视频在线观看 | 天天av天天翘天天综合网| 一本久道久久综合中文字幕| 国产精品免费av| av网站一区二区三区| 国产精品久久久久久久久图文区| 国产成都精品91一区二区三| 国产精品亲子伦对白| 成人黄色a**站在线观看| 国产精品不卡视频|