سلام دوستان
من یه مشکلی دارم....من تا الان با زبان c کار نکردم و نمیدونم این برنامه های این زیر یعنی چی
اگه کسی لطف کنه یه توضیح کامل و خط به خط بده ممنون میشم
#include <mega8.h>
#include <delay.h>
#include <math.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>
#define ADC_VREF_TYPE 0xC0
//---------------Defines
#define green PORTC.2
#define blue PORTC.3
#define red PORTC.4
//---------------Functions
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
unsigned int sum=0,i;
sum=0;
for(i=0;i<10;i++)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
sum+=ADCW;
}
return sum/10;
}
void main(void)
{
DDRC =0b011100;//tanzime port baraye khorooji shodan baraye ledha
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: Int., cap. on AREF
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
while (1)
{
int vGreen,vBlue,vRed,M;
red=1;green=0;blue=0;
delay_ms(2);
vRed =read_adc(1)*1.000000;
/////
red=0;green=1;blue=0;
delay_ms(2);
vGreen=read_adc(1)*1.02;
/////
red=0;green=0;blue=1;
delay_ms(2);
vBlue =read_adc(1)*1.128272;
/////
printf("R%3d G%3d B%3d ",vRed,vGreen,vBlue);
M=max(vRed,max(vGreen,vBlue));
lcd_gotoxy(0,1);
if(M==vRed )putsf("Red \n"
;
if(M==vGreen)putsf("Green \n"
;
if(M==vBlue )putsf("Blue \n"
;
}
}
و این یکی هم هست
#include <mega8.h>
#include <delay.h>
#include <math.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>
//---------------Variables
char str[32];
//---------------Func
void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x10;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
lcd_init(16);
while (1)
{
lcd_gotoxy(0,0);
gets(str,32);
lcd_puts(str);
}
}
من یه مشکلی دارم....من تا الان با زبان c کار نکردم و نمیدونم این برنامه های این زیر یعنی چی
اگه کسی لطف کنه یه توضیح کامل و خط به خط بده ممنون میشم
#include <mega8.h>
#include <delay.h>
#include <math.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>
#define ADC_VREF_TYPE 0xC0
//---------------Defines
#define green PORTC.2
#define blue PORTC.3
#define red PORTC.4
//---------------Functions
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
unsigned int sum=0,i;
sum=0;
for(i=0;i<10;i++)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
sum+=ADCW;
}
return sum/10;
}
void main(void)
{
DDRC =0b011100;//tanzime port baraye khorooji shodan baraye ledha
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: Int., cap. on AREF
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
while (1)
{
int vGreen,vBlue,vRed,M;
red=1;green=0;blue=0;
delay_ms(2);
vRed =read_adc(1)*1.000000;
/////
red=0;green=1;blue=0;
delay_ms(2);
vGreen=read_adc(1)*1.02;
/////
red=0;green=0;blue=1;
delay_ms(2);
vBlue =read_adc(1)*1.128272;
/////
printf("R%3d G%3d B%3d ",vRed,vGreen,vBlue);
M=max(vRed,max(vGreen,vBlue));
lcd_gotoxy(0,1);
if(M==vRed )putsf("Red \n"

if(M==vGreen)putsf("Green \n"

if(M==vBlue )putsf("Blue \n"

}
}
و این یکی هم هست
#include <mega8.h>
#include <delay.h>
#include <math.h>
// Alphanumeric LCD functions
#include <alcd.h>
#include <stdio.h>
//---------------Variables
char str[32];
//---------------Func
void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x10;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
lcd_init(16);
while (1)
{
lcd_gotoxy(0,0);
gets(str,32);
lcd_puts(str);
}
}
دیدگاه