⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc12c5412adadc&uart.c

📁 在KEILC下实现STC12C5412AD的三通道A/D转换程序
💻 C
字号:
#include    "STC12C5410AD.h"
#define		uchar unsigned char  //single byte
#define		uint  unsigned int	//double byte

void	delay ( uint ms )		//1ms延时程序
{
	uint i;
	for(; ms > 0; ms-- )
		for( i = 0; i < 1010; i++ );
} 

void adc_init(void)
{  
	P1M0         =0xe0;         			  /*p1.7,p1.6,p1.5开漏,做AD使用*/
    P1M1         =0xe0;	         		      /*p1.7,p1.6,p1.5开漏,做AD使用*/
    ADC_CONTR    =0xc0;                       //启动A/D,540个CLK实现AD转换
	delay(2);

}
			  
void uart_init(void)
{ 	SCON  = 0x50;		        /* SCON: mode 1, 8-bit UART, enable rcvr      */
	PCON  = 0;
    TMOD  = 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
	TL1   = 244;
    TH1   = 244;                /* TH1:  reload value for 2400 baud @ 11.0592MHz   */
    TR1   = 1;                  /* TR1:  timer 1 run                          */
}

void putch(uchar senddata) 
{
	/* output one byte */
	SBUF = senddata;
	while(!TI)	
	continue; 
	TI=0;
}

void main (void)
{ 
   adc_init(  );
   uart_init( );
  
    while (1)
   { 
      
      

	  ADC_CONTR      = ADC_CONTR  | 0x07;     //设置P1.7通道进行AD转换 // 
	  delay(1);
      ADC_CONTR      = ADC_CONTR  | 0x08;     //启动AD转换 
      while ( (0x10 & ADC_CONTR)  != 0x10 )
	  continue; 
	  putch(ADC_DATA); 
      putch(ADC_LOW2); 

	  ADC_CONTR      = 0xc6; //清零ADC_FLAG标志位,设置P1.6通道进行AD转换 
      delay(1);
      ADC_CONTR      = ADC_CONTR  | 0x08;     //启动AD转换 
      while ( (0x10 & ADC_CONTR)  != 0x10 )
	  continue; 
	  putch(ADC_DATA); 
      putch(ADC_LOW2); 

      ADC_CONTR      = 0xc5; //清零ADC_FLAG标志位,设置P1.5通道进行AD转换 
      delay(1);
      ADC_CONTR      = ADC_CONTR  | 0x08;     //启动AD转换 
      while ( (0x10 & ADC_CONTR)  != 0x10 )
	  continue; 
	  putch(ADC_DATA); 
      putch(ADC_LOW2); 
	  ADC_CONTR      = 0xc0; //清零ADC_FLAG标志位
      delay(100);  
	 
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -