Хотел тебе написать прогу но у самого голова опухла
я тоже новичек в этом деле.
Думаю тебя устроит простой вариант :
кнопки a и s прибовляют z и x уменшают
Написано в AVR Studio 5 если будут проблемы с модулем delay.h то надо включит оптимизацию.
хотя его можно удалить он сдесь ненужен
// DEFINE___________________________________________________________
#define F_CPU 8000000UL // Скорость мк 8 Мгц
#define BAUD 9600L
#define CR 0x13
#define LF 0x10
// INCLUDE__________________________________________________________
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdlib.h>
// VARIABLES________________________________________________________
volatile char temp;
// INTERRUPT________________________________________________________
ISR(USART_RX_vect)
{
temp=UDR;
switch (temp)
{
case 'a': OCR0A=OCR0A+10; break;
case 'z': OCR0A=OCR0A-10; break;
case 's': OCR0B=OCR0B+10; break;
case 'x': OCR0B=OCR0B-10;
}
}
// INIT FUNCTIONS___________________________________________________
void port_init(void)
{
DDRB=0xff;
PORTB=0x00;
DDRD=0xff;
PORTD=0x00;
}
void pwm_init(void) // Выводы OC0A и OC0B шим
{
TCCR0A|=_BV(WGM00)|_BV(WGM01)|_BV(COM0B1)|_BV(COM0A1);
TCCR0B|=_BV(CS02);
OCR0A=0x00;
OCR0B=0x00;
}
void usrt_init(void) // 8bit 1stop NOParity
{
UCSRB|=_BV(RXEN)|_BV(TXEN)|_BV(RXCIE);
UCSRC|=_BV(UCSZ0)|_BV(UCSZ1);
UBRRH=(F_CPU/16/BAUD-1)>>8;
UBRRL=(F_CPU/16/BAUD-1)&0xff;
sei();
}
// FUNCTIONS________________________________________________________
void usrt_send(char data)
{
while(!(UCSRA&_BV(UDRE)));
UDR=data;
}
// MAIN FUNCTION____________________________________________________
int main(void)
{
port_init();
usrt_init();
pwm_init();
usrt_send('o');
usrt_send('k');
while(1)
{
}
}