zoukankan      html  css  js  c++  java
  • STC12C5201AD AD采样+串口发送模板


    #include<reg52.h>    
    
    sfr	ADC_CONTR = 0xBC; //ADC control register
    sfr ADC_RES    = 0xBD; //ADC 8-bit result register						  
    sfr P1ASF      = 0x9D; //P1 secondary function control register
    
    /* Define ADC operation const for ADC_CONTER */
    #define ADC_POWER 0x80
    #define ADC_FLAG  0x10
    #define ADC_START 0x08
    #define ADC_SPEEDLL 0x00
    #define ADC_SPEEDL 0x20
    #define ADC_SPEEDH 0x40
    #define ADC_SPEEDHH 0x60 
    
    unsigned char ADC_ch = 0;
    void Delay(unsigned int n);
    
    /*Initial ADC sfr*/
    void initADC()
    {
    	P1ASF = 0xff; //Set All P1 as analog input port
    	ADC_RES = 0;  //Clear previous result
    	ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ADC_ch;
    	Delay(2);     //ADC power-on delay and Start A/D conversion
    
    	//IE = 0xa0;    //Enable ADC interrupt and Open master interrupt switch
    }
    
      
    void initSCI(void)  
    {  
        SM0 = 0;      /*Step 1 :  确定串口通信方式*/    
        SM1 = 1;    
            
        TMOD = 0x20;  /*step 2: 根据串口通信方式 确定是否设置波特率*/     
        TH1  = 0xfd;    
        TL1  = 0xfd;    
            
        TR1  = 1;     /*step 3 :启动*/    
        REN  = 1;    
        
        EA = 1;       /*step 4: 是否启用中断函数*/    
        ES = 1;   
    }  
      
    void putChar (unsigned char chr)//发送一个字符  
    {  
        SBUF = chr;  
        while(!TI); TI=0;                                                   
    }  
      
    void putStr(unsigned char str[], unsigned char n)  
    {  
        while( n-- )  
        {  
            SBUF = str[n];  
            while(!TI); TI=0;  
        }  
    }  
    
    void Delay(unsigned int n)
    {
    	unsigned int x;
    	while( n-- ){
    		x = 5000;
    		while(x--);
    	}
    }    
    
    
    int main()    
    {    
        initSCI();   
        initADC();
    	    
        while(1)  
        {  
            //operation;    
        }      
        return 0;     
    }  
      
    /* ADC interrupt service routine */
    void adc_isr() interrupt 5 using 1    
    {
    	ADC_CONTR &= !ADC_FLAG; // Clear ADC interrupt flag
    
    	//SendData(ADC_ch);	  //Show Channel NO.
    	//SendData(ADC_RES);  //Get ADC 8-bit result and Send to UART
    	
    	if(++ADC_ch > 7) ADC_ch = 0;  //switch to next channel
    	ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ADC_ch;
    }
    
    void ser() interrupt 4    
    {    
        if( RI )    
        {    
            RI = 0;    
            /*Operation SBUF*/    
        }    
        else if( TI )    
        {    
            TI = 0;     
        }    
        return ;    
    }    


  • 相关阅读:
    ammap demo
    sql批量新增和修改
    js右键菜单
    C# 索引器
    NUnit使用体会
    js拖动效果
    Js 原型对象与原型链(转)
    sql for xml子句
    ASP.NET应用程序生命周期
    HttpWebRequest和HttpWebResponse
  • 原文地址:https://www.cnblogs.com/riskyer/p/3327477.html
Copyright © 2011-2022 走看看