Код: Выделить всё
#include <mega8.h>
#define BLDC_DDR DDRD
#define BLDC_PORT PORTD
#define UH PORTD.0
#define UL PORTC.1
#define VH PORTC.2
#define VL PORTC.3
#define WH PORTC.4
#define WL PORTC.5
unsigned char a=0;
unsigned char b=0;
void main()
{
DDRB.3=1;
PORTB.3=1;
BLDC_DDR|=0x3F;
BLDC_PORT=0x00;
//Настройка TC0
TCCR0=0x04;
TIMSK|=0x01;
TCNT0=0x7F;
TCCR2|=(1<<WGM21)|(1<<CS22)|(1<<CS21); // clock/256, CTC
TIMSK|=(1<<OCIE2);//T/C2 compare match interrupt
OCR2=0xFF;
SREG|=0x90;
ADMUX= 0x20;//ADLAR, ADC0, AREF
//ADCSRA= 0xC8;//ADEN, ADIE
ADCSRA= 0x88;
while (1);
}
interrupt [TIM2_COMP] void TC2_CMP(void)
{
a+=1;
if (a==1)
{
UH=1;
VL=1;
WH=0;
}
else if (a==2)
{
VL=0;
WL=1;
}
else if (a==3)
{
UH=0;
VH=1;
}
else if (a==4)
{
UL=1;
WL=0;
}
else if (a==5)
{
VH=0;
WH=1;
}
else if (a==6)
{
UL=0;
VL=1;
a=0;
}
}
interrupt [TIM0_OVF] void tim0_isr(void)
{
TCNT0=0x7F;
ADCSRA|=0x40;
}
interrupt [ADC_INT] void adc_isr(void)
{
b=ADCH;
OCR2=b;
}
- Вложения
-
- BLDC.rar
- (18.9 КБ) 1078 скачиваний


