вот листинг моей программы , это грубо говоря пищалка против клопов ультро звуковая ,
должна настраиваться переменным резистором подключенным к порту а на нужной частоте.
Но факт в том что программа на каторой компелируется текст начинает глючить , то проходит через прерывание таймера Т1 по три раза , то скачет через строчку и появляется после нескольких
десятков нажатий F11 в разных местах. Самое интересное что эту же программу я заредил в VMLAB
Она и там показала ту же окалесицу. Я с этой бедой борюсь больше 2 лет ( а мне не смешно.)
Голова кругом!!! То-ли менять компилятор (я к этому то долгл приноравливался ) , То ли писать на Ассемблере. Я бы с Удовольствием выложил видео Файл Что эта программа вытворяет , если покажите куда.
#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
volatile unsigned char a;
#define INVBIT(x,y) (x^=(1<<y))
ISR(TIMER1_OVF_vect)
{
INVBIT(PORTB,PB1);// управление светодиод
INVBIT(PORTB,PB0);// управление светодиод
a=0;
}
void display(void);
int main(void)
{
TIFR =0;
TIMSK=0x04;// прерывание по перепол т1
TCCR1A=0;
TCCR1B=1;
TCNT1=65535-500;
sei();
SFIOR=0;
ADCSRA=0xe0;
SFIOR=0;
DDRA=0x00;//in
DDRB=0xff;//out
DDRC=0xff;//out
DDRD=0x00;//in
PORTA=0x00;
PORTB=0x01;
PORTC=0x00;
PORTD=0x00;
ADMUX=1;//vibor vhoda
horo:
ADMUX=1;
_delay_ms(1000);
ADCCompare=ADC;
ADCCompare=ADCCompare/3;
ADCCompare=500-ADCCompare;
TCNT1=65535-ADCCompare;
a=1;
horo1:
if (a==0)
{goto horo;}
goto horo1;
}