|
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define uchar8 unsigned char
int T,N,PWM[8]={0,10,20,30,40,50,60,70};
int main(void)
{
DDRB |=0x02; //PB1 :PWM1
DDRC |=0x0C; //PC2,PC3:PWM2,3
DDRD |=0xC0; //PD6,PD7:PWM4,5
TCCR2 =0x05;
TIMSK =0xC0;
PORTB =0x00;
PORTC =0x00;
PORTD =0x00;
OCR2 =0x63+PWM[N % 8]+0x1F; //TCNT2+PWM[]+0.5MS 以后可以调中用。
TCNT2 =256-0.0025*(F_CPU/128);
sei();
while(1)
{
;
T++;
_delay_us(15);
T++;
}
}
SIGNAL(SIG_OUTPUT_COMPARE2)
{
switch (N % 8)
{
case 0:
;
break;
case 1:
PORTB|=0x02;
break;
case 2:
PORTC|=0x04;
break;
case 3:
PORTC|=0x08;
break;
case 4:
PORTD|=0x40;
break;
case 5:
PORTD|=0x80;
break;
case 6:
;
break;
case 7:
;
break;
}
}
SIGNAL(SIG_OVERFLOW2)
{
OCR2=0x63+PWM[N++ % 8]+0x1F;
TCNT2=256-0.0025*(F_CPU/128);
PORTB &=~(0x02);
PORTC &=~(0x0C);
PORTD &=~(0xC0);
}
一个mega8控制8个舵机,大家帮我看看可不可行。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|