#include <mega8.h>
#include <delay.h>
#include <stdio.h>
unsigned int Tadc;
unsigned char dummyH;
unsigned char dummyL;
#define relay1 PORTB.0
#define relay2 PORTD.7
#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input){
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA.ADSC = 1;
// Wait for the AD conversion to complete
while (ADCSRA.ADIF==0);
ADCSRA.ADIF = 1;
dummyL = ADCL;
dummyH = ADCH;
//Tadc=(Tadc<< 8)| ADCL;
return ADCW;
}
void tst_value(){
if (Tadc<410){
relay1 =0;
relay2 =1;
TCCR1B=0x19;
OCR1AH=0x01;// 1
OCR1AL=0xff;// ff
PORTD |= (dummyL & 0x7c);
}
// if (615>Tadc && Tadc>410)
// { TCCR1B=0x00; }
if (Tadc>=460){
relay1 =1;
relay2 =0;
TCCR1B=0x19;
OCR1AH=0x00;// 1
OCR1AL=0xff;// ff
PORTD|=dummyL & 0x7f;
}
}
void main(void){
DDRC.0 = 0;
DDRD = 0xFF;
DDRB.0 = 1;
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x82;
while (1){
Tadc=read_adc(0);
tst_value();
}
}
/////////////
/**************************************************
***
Project : Board Test
Version : 1.0
Date : 2/25/2007
Chip type : ATmega8535
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
************************************************** ***/
#include <mega8535.h>
#include "stdio.h"
#include "realtime.h"
#include "delay.h"
#include "eeprom.h"
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void Init()
{
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
SFIOR&=0xEF;
}
unsigned int Get_Voltage()
{
unsigned char i;
unsigned int V=0;
unsigned int Data_ADC=0;
buff[4]=buff[3];
buff[3]=buff[2];
buff[2]=buff[1];
buff[1]=buff[0];
buff[0]=read_adc(7);
for(i=0;i<5;i++) Data_ADC+=buff[i];
V=(unsigned int)((float)Data_ADC/5);
return(V);
}
void main(void)
{
Vadc = Get_Voltage();
}
Good luck to YOU!
Project : Board Test
Version : 1.0
Date : 2/25/2007
Chip type : ATmega8535
Program type : Application
Clock frequency : 4.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 128
************************************************** ***/
#include <mega8535.h>
#include "stdio.h"
#include "realtime.h"
#include "delay.h"
#include "eeprom.h"
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void Init()
{
// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: None
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x86;
SFIOR&=0xEF;
}
unsigned int Get_Voltage()
{
unsigned char i;
unsigned int V=0;
unsigned int Data_ADC=0;
buff[4]=buff[3];
buff[3]=buff[2];
buff[2]=buff[1];
buff[1]=buff[0];
buff[0]=read_adc(7);
for(i=0;i<5;i++) Data_ADC+=buff[i];
V=(unsigned int)((float)Data_ADC/5);
return(V);
}
void main(void)
{
Vadc = Get_Voltage();
}
Good luck to YOU!
//////////////////////