智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1627|回复: 2
打印 上一主题 下一主题

光电舵机控制,附上程序

[复制链接]

15

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2909
威望
1025
贡献
1370
兑换币
50
注册时间
2011-9-26
在线时间
257 小时
跳转到指定楼层
1#
发表于 2012-5-29 12:39:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
void main() {
   DisableInterrupts;
   Init_PLL();
   Init_PWM();
   Init_PIO();
   Init_PIT0();
   //Init_Pulse();
   //Init_RTI();
  // Init_IncPID();

   //int addpid;
   EnableInterrupts;
   for(;;)
    {
       while(Laser_ok==0) ;
       DisableInterrupts;
        Laser_ok=0;
      chuli();
    //  qingling();
     duoji_speed();
     dianji_speed();
      EnableInterrupts;



    }
}


#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)    // 激光分时发射,频率180Khz
{
    static unsigned int count1;
    static char laser[12]={1};
     DisableInterrupts;
   // PORTB=count1;


  count1++;  
  switch (count1)
  {


  case 1:        
                 PORTB=0x05;
                 delay10us(1);
                 laser[0]=PORTK_PK0; //第一个接收管,接在PK1,PK[3:1]均为GPIO(普通IO口)
                 laser[11]=PORTK_PK3;



                 break;

  case 2:
                  PORTB=0x0c;
                 delay10us(1);
                 laser[1]=PORTK_PK0;
                 laser[10]=PORTK_PK3;

                 break;
  case 3:
                 PORTB=0x13;
                 delay10us(1);
                 laser[2]=PORTK_PK0;
                 laser[9]=PORTK_PK3;

                 break;


  case 4:      PORTB=0x1A;
               delay10us(1);
               laser[3]=PORTK_PK1;
               laser[8]=PORTK_PK2;

               break;


  case 5:     
              PORTB=0x21;
              delay10us(1);
              laser[4]=PORTK_PK1;
              laser[7]=PORTK_PK2;

              break;


  case 6:    PORTB=0x28;
             delay10us(1);
             laser[5]=PORTK_PK1;
             laser[6]=PORTK_PK2;

              count1=0;
            jiguang[0]=laser[0];
            jiguang[1]=laser[1];
            jiguang[2]=laser[2];
            jiguang[3]=laser[3];
            jiguang[4]=laser[4];
            jiguang[5]=laser[5];
            jiguang[6]=laser[6];
            jiguang[7]=laser[7];
            jiguang[8]=laser[8];
            jiguang[9]=laser[9];
            jiguang[10]=laser[10];
            jiguang[11]=laser[11];
            heidian++;
            break;
    }
      最近因朋友所托在弄光电,程序如上,问题:  jiguang[]里面有几个数组  用来控制舵机不好使,但是观察示波器,接受都正常。。。。。这好奇怪啊~~~~希望大神求救~~

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
148
威望
101
贡献
35
兑换币
4
注册时间
2012-4-29
在线时间
6 小时
2#
发表于 2012-5-29 21:09:51 | 只看该作者
中断中不要用延时

回复

使用道具 举报

15

主题

209

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2909
威望
1025
贡献
1370
兑换币
50
注册时间
2011-9-26
在线时间
257 小时
3#
 楼主| 发表于 2012-5-30 12:25:20 | 只看该作者
hu_qiang 发表于 2012-5-29 21:09
中断中不要用延时

一点延时都不要的么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-5 16:21 , Processed in 0.047585 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表