打印
[电机及执行机构驱动]

【求助】用51单片机控制电调程序。

[复制链接]
8711|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
langoczn|  楼主 | 2016-8-7 10:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为刚刚开始自学无刷电机,所以程序还有许多不懂的地方,希望能够得到解答,十分感谢!

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int  
uchar code duojishu[]= {11,12,13,14,15,16,17,19,20,21,22,23,24};/*?70us????????????***/
                                                                                 /*  0  1  2  3  4  5  6  7  8  9 10 11 12*/

sbit Sevro_moto_pwm                =        P1^5;                  
sbit Sevro_moto_pwm2        =        P1^4;                  

uchar            pwm_val_left  =        0;                                                
uchar              push_val_left =        0;                                 
uchar                 AD_CHANNEL;                                                                              

void delay1ms(uchar z)   
{
    uchar a,b,c;
    for(c = z ;c > 0 ;c--)
        for(b = 142 ; b > 0 ;b--)
            for(a = 2 ;a > 0 ;a--);
}

void pwm_Servomoto(void)
{  

        if(pwm_val_left <= push_val_left)
        {        
                Sevro_moto_pwm  = 1;
                Sevro_moto_pwm2 = 1;
        }
        else
        {         
                Sevro_moto_pwm  = 0;
                Sevro_moto_pwm2 = 0;
        }
        if(pwm_val_left >= 215)
                pwm_val_left = 0;

}

time1() interrupt 1
{         
                TH0 = (65536 - 70)/256;         
                TL0 = (65536 - 70)%256;
                pwm_val_left++;
                pwm_Servomoto();
}  
void main()
{         
        TMOD = 0x01;        
        TH0 = (65536 - 70)/256;         
        TL0 = (65536 - 70)%256;
        TR0 = 1;
        ET0 = 1;                 
        EA  = 1;            
        
        push_val_left = duojishu[0]; //???????
           
        delay1ms(5000);delay1ms(5000);delay1ms(5000);
        delay1ms(5000);delay1ms(5000);delay1ms(5000);
        delay1ms(5000);delay1ms(5000);delay1ms(5000);
        delay1ms(5000);delay1ms(5000);delay1ms(5000);
        delay1ms(5000);delay1ms(5000);delay1ms(5000);//?????????????????/??0?(????5???)

        while(1)
{         
           
         for( AD_CHANNEL = 0; AD_CHANNEL < 9; AD_CHANNEL++) //??????????!(??/???1)????9?
        {         push_val_left = duojishu[AD_CHANNEL];
                delay1ms(5000);  
                delay1ms(5000);
         }
        
        for( AD_CHANNEL = 9; AD_CHANNEL > 1; AD_CHANNEL--) //?9????????!(??/???1)????1?
        {         push_val_left = duojishu[AD_CHANNEL];
                delay1ms(5000);  
                delay1ms(5000);
         }  
        
                push_val_left = duojishu[0];
        
                while(1)
                        ;
}  
}
已经用程序将电机驱动转动起来,但是注释的部分不知为何变成了问号。
可是我还有许多不懂的地方,希望有大神能帮我注释一下。不胜感激!

相关帖子

沙发
changle11sdo5| | 2016-8-7 12:04 | 只看该作者
delay1ms(5000);

使用特权

评论回复
板凳
changle11sdo5| | 2016-8-7 12:07 | 只看该作者
编码格式不同,所以乱码

使用特权

评论回复
地板
langoczn|  楼主 | 2016-8-8 15:32 | 只看该作者
本帖最后由 langoczn 于 2016-8-8 15:37 编辑
changle11sdo5 发表于 2016-8-7 12:07
编码格式不同,所以乱码

因为注释部分是中文,我想知道那些中文是什么。。。。还有数组部分 我也不太懂为何是 从11开始

使用特权

评论回复
5
changle11sdo5| | 2016-8-8 17:29 | 只看该作者
void delay1ms(uchar z)   delay1ms(5000)   都错了,有什么好看的

使用特权

评论回复
6
langoczn|  楼主 | 2016-8-9 09:20 | 只看该作者
changle11sdo5 发表于 2016-8-8 17:29
void delay1ms(uchar z)   delay1ms(5000)   都错了,有什么好看的

首先,如果错了你可以告诉我错哪里了吗?
其次,这本来就是一个求助贴,你愿意回答就回答,不愿意看就不看。
最后,看来你真的飞得起,就算程序再简单,初学者不是都会迷惑吗?谁刚刚开始学就全懂了?你真屌。

使用特权

评论回复
7
yangzhen1001| | 2021-7-24 11:15 | 只看该作者
langoczn 发表于 2016-8-9 09:20
首先,如果错了你可以告诉我错哪里了吗?
其次,这本来就是一个求助贴,你愿意回答就回答,不愿意看就不 ...

数据类型错了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝