[电机及执行机构驱动] 【求助】用51单片机控制电调程序。

[复制链接]
9078|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开始
changle11sdo5 发表于 2016-8-8 17:29 来自手机 | 显示全部楼层
void delay1ms(uchar z)   delay1ms(5000)   都错了,有什么好看的
 楼主| langoczn 发表于 2016-8-9 09:20 | 显示全部楼层
changle11sdo5 发表于 2016-8-8 17:29
void delay1ms(uchar z)   delay1ms(5000)   都错了,有什么好看的

首先,如果错了你可以告诉我错哪里了吗?
其次,这本来就是一个求助贴,你愿意回答就回答,不愿意看就不看。
最后,看来你真的飞得起,就算程序再简单,初学者不是都会迷惑吗?谁刚刚开始学就全懂了?你真屌。
yangzhen1001 发表于 2021-7-24 11:15 | 显示全部楼层
langoczn 发表于 2016-8-9 09:20
首先,如果错了你可以告诉我错哪里了吗?
其次,这本来就是一个求助贴,你愿意回答就回答,不愿意看就不 ...

数据类型错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部