微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > atmega16驱动舵机程序

atmega16驱动舵机程序

时间:10-02 整理:3721RD 点击:
我用示波器看了pwm的波形,周期什么都是对的,为什么舵机不动?要么就乱动了?

#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();
        }
}

参考一下,好像是可以的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top