Я начал делать свой генератор, пока получается не очень.
Проблема 1: Как сделать что б при нажатии на кнопку "SIN" генерировался синус и при этом надпись на дисплее появлялась "Сигнал: синус". И так же при нажатии на кнопку "Pila" и "Meander"
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
#asm
.equ __lcd_port=0x12;
#endasm
#include <lcd.h>
unsigned char cos[]={254,254,254,254,253,253,253,252,252,251,250,249,248,248,247,245,244,243,242,240,
239,237,236,234,232,231,229,227,225,223,221,219,217,214,212,210,207,205,202,200,
197,195,192,189,186,184,181,178,175,172,169,166,163,160,157,154,151,148,145,142,
139,136,132,129,126,123,120,117,114,111,107,104,101,98,95,92,89,86,83,80,77,75,72,
69,66,63,61,58,56,53,50,48,46,43,41,39,36,34,32,30,28,26,24,22,21,19,17,16,14,13,12,
10,9,8,7,6,5,4,3,3,2,2,1,1,0,0,0,0,0,0,0,0,1,1,2,2,3,3,4,5,6,7,8,9,10,12,13,14,16,17,19,
21,22,24,26,28,30,32,34,36,39,41,43,46,48,51,53,56,58,61,64,66,69,72,75,78,80,83,86,
89,92,95,98,101,105,108,111,114,117,120,123,126,129,133,136,139,142,145,148,151,
154,157,160,163,166,169,172,175,178,181,184,186,189,192,195,197,200,202,205,207,
210,212,214,217,219,221,223,225,227,229,231,233,234,236,237,239,240,242,243,244,
245,247,248,249,249,250,251,252,252,253,253,253,254,254,254,254};
int FAZA=100;
int dis=0;
char i;
int ACCU=0;
void reset()
{
DDRB=0x00;
PORTB=0x00;
DDRC=0xFF;
PORTC=0x00;
lcd_putsf("Reset");
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
reset();
}
void main(void)
{
DDRB=0xff;
/*PORTB=0x00;
DDRB=0x08;*/
lcd_init(16);
lcd_gotoxy(0,0);
//lcd_putsf("Signal: Sin");
//настройка прерывания на сброс
DDRD.3=0; // высокий уровень на входе
PORTD.3=1; // при отсутствии внутренего сигнала
SREG|= (1<<7); //разрешаем общие прерывания
GICR|=(1<<7); //разрешаем прерывание по INT1
MCUCR|=(1<<1); //прерывание по ниспадающему фронту сигнала на INT0
/*DDRC&=~(1<<1);
PORTC|=(1<<1);*/
while (1)
{
if (!(PINC & (1<<PINC0)))// Косинус
{
PORTB = cos[i];
ACCU=ACCU+FAZA;
i=ACCU>>8;
}
if (!(PINC & (1<<PINC1))) // Пила
{
PORTB = cos[i/2];
ACCU=ACCU+FAZA;
i=ACCU>>8;
}
}
}