Код: Выделить всё
#include<iom8.h>
#include <intrinsics.h>
#include "CPU_settings.h"
#include "makros.h"
#include "ks0066(wh0802).h"
int t;
char f=0;
int k=0;
unsigned char data;
char h=0;
char y=0;
int main()
{
DDRB=255;
CB(DDRD,2);
SB(DDRD,3);
CB(TCCR0,CS01);
SB(TCCR0,CS00);
CB(TCCR0,CS02);
TCNT0=0;
UCSRB|=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
UBRRH=0x00;
UBRRL=64;
SB(MCUCR,ISC00);
CB(MCUCR,ISC01);
asm("sei");
while(1)
{
PORTD_Bit3=1;
delay_us(10);
PORTD_Bit3=0;
SB(GICR,INT0);
while(f!=2);
f=0;
t=int((y*255/10)+(h/10));
t=t/58;
data=(t%100)%10+0x30;
SB(UCSRB,UDRIE);
data=(t%10)+0x30;
SB(UCSRB,UDRIE);
t=0;
data='\n';
SB(UCSRB,UDRIE);
data='\r';
SB(UCSRB,UDRIE);
delay_ms(1000);
}
}
#pragma vector=INT0_vect
__interrupt void INT0_vector(void)//Функция прерывания
{
if((PIND_Bit2==1)&&(f==0))
{
k=0;
h=0;
y=0;
TCNT0=0;
SB(TIMSK,TOIE0);
f=1;
}
else
{
if((PIND_Bit2==0)&&(f==1))
{
h=TCNT0;
y=k;
CB(TIMSK,TOIE0);
f=2;
}
}
}
#pragma vector=TIMER0_OVF_vect
__interrupt void T0_ovf(void)//Функция прерывания
{
k++;
}
#pragma vector =USART_UDRE_vect
__interrupt void UART_UDRE(void)
{
UDR=data;
CB(UCSRB,UDRIE);
}


