atmega16驱动舵机程序
#include <avr/io.h>
#define uchar unsigned char
#define uint unsigned int
uint low=0;
void delay(uint z)
{
uint x,y;
for (x=100;x>0;x--)
for (y=z;y>0;y--);
}
uchar key_press1()
{
uchar j;
DDRD|=0X0F;
PORTD|=0X0F;
DDRD&=0XF0;
j=PIND;
j=j&0X01;
if(j==0X01)
{
return 0;
}
else
{
return 1;
}
}
uchar key_press2()
{
uchar j;
DDRD|=0X0F;
PORTD|=0X0F;
DDRD&=0XF0;
j=PIND;
j=j&0X02;
if(j==0X02)
{
return 0;
}
else
{
return 1;
}
}
void keyscan()
{
if(key_press1())
{
low++;
delay(1);
if (low==2500)
{
low=0;
}
}if(!key_press1());
delay(5);
if (!key_press1());
if(key_press2())
{
low--;
delay(1);
if (low==2500)
{
low=0;
}
}if(!key_press2());
delay(5);
if (!key_press2());
}
void main()
{
DDRD|=1<<PD5;
PORTD|=1<<PD5;
TCCR1A=0X82;
TCCR1B=0X19;
ICR1=19900;
TCNT1=0;
//OCR1A=0;
OCR1B=0;
while(1)
{
OCR1A=low;
keyscan();
}
}
参考一下,好像是可以的
