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

📄 adc_avr._c

📁 AVR单片机采集AD,并通过串口发回上位机。
💻 _C
字号:
/*ad转换,利用串口调试;输出为电压的伏特数;
    2005.7.12*/ 
#include "iom16v.h"
#include "macros.h"
#define uint unsigned char
#define uchar unsigned int

uchar data_temp;
uchar tmpUDR,tmp;

void delay(char);
//void _ADC(uchar);

#pragma  interrupt_handler  ad_handler:15
void ad_handler(void)
{      
       char i,j,k,l; 
       int  data_temp;
       ADCSR&=~0x08;
	   data_temp=ADC;

       data_temp=(int)(data_temp*5.00/1024*1000);
	   l=data_temp/1000+0x30;
	   k=(data_temp%1000)/100+0x30;
	   j=(data_temp%100)/10+0x30;
	   i=data_temp%10+0x30;
	   
		UDR=l;
		while(!(UCSRA&0X40));
		UCSRA|=0x40;
		UDR='.';
	    while(!(UCSRA&0X40));
		UCSRA|=0x40;
		UDR=k;
		while(!(UCSRA&0X40));
		UCSRA|=0x40;
	    UDR=j;
		while(!(UCSRA&0X40));
		UCSRA|=0x40;
		UDR=i;
		while(!(UCSRA&0X40));
		UCSRA|=0x40;
		UDR=' ';
		while(!(UCSRA&0X40));
		UCSRA|=0x40;
		UDR='V';
		while(!(UCSRA&0X40));
		UCSRA|=0x40;
		
		//ADCSR|=0x08;
} 

#pragma  interrupt_handler  rx_handler:12
void rx_handler(void)
{
 	 UCSRB&=~0x10;
 	 tmpUDR=UDR;
	 if(tmpUDR=='P')
	 {
	  ADMUX=0x40;
	  ADCSR|=BIT(ADSC);
	  //tmpUDR&=0x07;
	  //ADMUX+=tmpUDR;
	  //ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	  //while(1)
	  //{
	  //UDR='V';
	  //while(!(UCSRA&0X40));
	  //UCSRA|=0x40;
	  //}
	 }

	 if(tmpUDR=='Q')
	 {
	  ADMUX=0x41;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }

	 if(tmpUDR=='R')
	 {
	  ADMUX=0x42;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }

	 if(tmpUDR=='S')
	 {
	  ADMUX=0x43;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }

	 if(tmpUDR=='T')
	 {
	  ADMUX=0x44;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }

	 if(tmpUDR=='U')
	 {
	  ADMUX=0x45;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }

	 if(tmpUDR=='V')
	 {
	  ADMUX=0x46;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }

	 if(tmpUDR=='W')
	 {
	  ADMUX=0x47;
	  ADCSR|=BIT(ADSC);
	  //ADCSR|=0x08;
	  //UCSRB|=0x10;
	 }
	 ADCSR|=0x08;
	 UCSRB|=0x10;
}

void main(void)
{
//disable the Interrupt bit.
	SREG=0x00; 		 
	
///// Initialize the USART ///////				 
    UCSRB=0x00;
    UCSRA=0x00;
    UBRR=12;
    UCSRB=0x98;
///// Initialize the ADC /////////
	ADCSR=0X8b;

	
tmpUDR=UDR;
////Enable the Interrupt bit.
	
	SREG=0x80;
	while(1)
	{

	}
 
 
}


void delay(char i)
{
  uchar j;
  for(j=1;j<i;j++)
  asm("nop");
}   

/*
void _ADC(uchar N)
{

	 ADCSR|=BIT(ADSC);
	 //ADCSR|=0x08;
}

*/

⌨️ 快捷键说明

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