ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.04.2024
Просмотров: 21
Скачиваний: 0
DDRB|=(1<<1);
PORTB&=~(1<<1);
DDRD|=(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7);//leds for out PORTD&=~((1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7));//voltage for leds 0
}
void ADCPreset(void)
{
DDRC&=~(1<<0);//FOR INPUT ADC
ADCSRA|=(1<<ADEN)//enable adc
|(1<<ADSC)//write this bit to one to start each conversion. |(1<<ADFR)//adc free running mode |(1<<ADPS2)|(1<<ADPS0);//division factor 32
ADMUX &= (~(1 << REFS1))&(~(1 << REFS0));//external //voltage reference
//read from ADC0 admux =0000;
}
void InterruptPreSet()
{
//increase this value to see diods blinking like old tv
TCCR0|=(1<<CS01);// p 72 (clkI/O)/8 (From prescaler)
TCCR0&=~((1<<0)|(1<<2));//same as previous set 0 bit
TIMSK|=(1<<TOIE0);//p 100 datasheep timer/counter 0 overflow interrupt TCNT0=0;//tccr0 counting register
//SREG|=(1<<7);//global interrupt enable sei();
}
void USART_Init( unsigned int ubrr)
{
/* Set baud rate */
//UBRRH = (unsigned char)(ubrr>>8);
UBRRL = 51;//(unsigned char)ubrr;set baud rate 9600 /* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0); //UCSRC&=~(1<<UMSEL);//Asynchronous Operation
}
void UART_Tchar(unsigned char data)
{
UDR=data; while(~UCSRA&(1<<TXC));//check flag txc
}
void UART_Tstring(char *p)
{
while(*p)
{
UART_Tchar(*(p++));
_delay_ms(100);
}
}
char UART_Rchar()
{
while(~UCSRA&(1<<RXC));
return UDR;
}
char *UART_Rstring(char *buffer)
{
char *str=buffer; do
{
*(buffer++)=UART_Rchar(); }while(*(buffer-1)!='\r');//enter or carrigeReturn
*buffer='\0'; return str;
}
int main(void)
{
PreSet(); ADCPreset(); InterruptPreSet();
USART_Init(MYUBRR); char strR[10];
char *number;
char *enter = "Enter number 100 to 500 included: "; DDRB=0xFF;
UART_Tstring(enter);
_delay_ms(1); //Rdata=UART_Rchar(); //PORTB=Rdata; number=UART_Rstring(strR); value=atoi(number);
while (1)
{
TunOnLed();
}
}