#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
void beep(unsigned int frequency, unsigned int duration)
{
unsigned int i,t,n;
t = 125000/frequency;
n = (250UL*duration)/t;
PORTB |= 0x01;
PORTB &= ~0x02;
for(i=0; i < n; i++)
{
PORTB ^= 0x01;
PORTB ^= 0X02;
_delay_loop_2(t);
}
}
int (main) {
DDRB = 0x03;
PORTB = 0x00;
DDRD = 0x0F;
int i = 1;
int n;
while(1) {
switch(i) {
case 1: for(n=0;n<1000;n=n+250) {
beep(7000+n,2500);
switch(PIND) {
case 0x01: i = 2;
break;
case 0x02: i = 3;
break;
case 0x03: i=4;
break;
}
break;
case 2: for(n=0;n<1000;n=n+250) {
beep(10000+n,2500);
switch(PIND) {
case 0x00: i = 1;
break;
case 0x02: i = 3;
break;
case 0x03: i=4;
break;
}
break;
case 3: for(n=0;n<1000;n=n+250) {
beep(12000+n,2500);
switch(PIND) {
case 0x00: i = 1;
break;
case 0x01: i = 2;
break;
case 0x03: i=4;
break;
}
break;
case 4: for(n=0;n<1000;n=n+50) {
beep(300+n,2500);
switch(PIND) {
case 0x00: i = 1;
break;
case 0x01: i = 2;
break;
case 0x02: i=3;
break;
}
break;
}
}
}
Czy może mi ktoś powiedzieć co jest źle w tym programie??
