atmega16驱动舵机程序

2019-07-16 02:24发布

我用示波器看了pwm的波形,周期什么都是对的,为什么舵机不动?要么就乱动了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
╭丶胖羊羊°
1楼-- · 2019-07-16 06:03
#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();
        }
}
jinshaojia
2楼-- · 2019-07-16 06:28
 精彩回答 2  元偷偷看……

一周热门 更多>