Спойлер
#include <mega8.h>#include <alcd.h>
#include <delay.h>
#include <stdio.h>
unsigned int temp=0;
interrupt [USART_RXC] void se (void)
{ temp=30;
PORTC.5=~PORTC.5;}
void wait (void)
{TCNT1=0;
while (TCNT1<13){};
}
void main(void)
{
unsigned char string[20];
UCSRA=(0<<MPCM|0<<U2X|0<<UPE|0<<DOR|0<<FE|0<<UDRE|0<<TXC|0<<RXC);
UCSRB=(0<<TXB8|0<<RXB8|0<<UCSZ2|0<<TXEN|1<<RXEN|0<<UDRIE|0<<TXCIE|1<<RXCIE);
UCSRC=(0<<UCPOL|1<<UCSZ0|1<<UCSZ1|0<<USBS|0<<UPM0|0<<UPM1|0<<UMSEL|0<<URSEL);
UBRRH=0;
UBRRL=51;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xFF;
PORTD=0xFF;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x03;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
lcd_init(16);
while (1)
{#asm ("sei");
lcd_gotoxy(0,0);
sprintf(string,"%05x\n",temp);
lcd_puts(string);
delay_ms(1000);
lcd_clear();
PORTC.4=0;
wait ();
PORTC.4=0;
wait ();
PORTC.4=1;
wait ();
PORTC.4=0;
wait ();
PORTC.4=1;
};
}
в общем то у меня получилось отправлять и принимать данные. причем повесил сравнение на принятый байт и действие. но сегодня написав код на другом компе получилась непонятная абра кадабра. прерывания совсем никак не хотели появляться. сравнив код разницы не заметил. для управления выбраны те же самые биты в регистрах. все совершенно одинаково.
а на данный момент codevishion пишет что библиотека alcd.lib испорчена и не может использоваться

слева!