پاسخ : خواندن سطح ولتاژ با مبدل آنالوگ به دیجیتال میکرو
سلام مجدد
کدی که من نوشتم
[حالا نمیدونم درست دراومده یا نه ولی موقع کامپایل بهم ارور میدخ که نتونسته فایلی رو ار atmel باز کنه
ممنون
سلام مجدد
کدی که من نوشتم
کد:
[CENTER][LEFT]Chip type : ATmega16A
Program type : Application
AVR Core Clock frequency: 8/000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*******************************************************/
#include <mega16a.h>
#include <delay.h>
#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR)) /* ????? ?? ???? adc ?? ???? ??? ?????? ?? ???????? adc ?? ?? 7 ?? 16 ??????? ????? ?? */
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
delay_us(10);
ADCSRA|=(1<<ADSC);
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}
void main(void)
{
float i , volt ;
DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
//DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
ADMUX=ADC_VREF_TYPE; /* ?? ?? ???? ?? ??????? ?? ?? ???? ???????? ????? ?? ???? adc ?? ?? 28 ?? 30 ????????? ????? ?? */
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (1<<ADPS0);
SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
while (1)
{
i=read_adc(0); // i ?????? ???? ??? 0 ?? 1023 ?? ???? ????? ????? ????? ?????? ??? ?? ??? ????? ??? ? ????? ?? ?? ????? //
volt=(i*5)/1023 ; // ????? ????? ??? ?????? ??? ??? 0 ?? 1023 ?? ?? ???? ? 0 ?? 5 ????? ?? ??? //
if (volt<0.9){
PORTC.0=1 ;
}
}[/LEFT]
[FONT=Yekan]}[/FONT][/CENTER][FONT=Yekan][/FONT]
[حالا نمیدونم درست دراومده یا نه ولی موقع کامپایل بهم ارور میدخ که نتونسته فایلی رو ار atmel باز کنه
ممنون





دیدگاه