liwenbao 发表于 2016-2-24 21:43

学到定时器和中断系统后又出51

学到定时器 和   中断系统了   于是乎 又编了 一个   能调速的啊大神给看看 这样   能行不。4个中断全用上了!赤纬 正反转只能直接控制驱动板了!还有导星赤经赤纬同时需要调整怎么弄好像弄不了啊?只能先调整赤经在调整赤纬了!
#include <reg52.h>
sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit DIR = P1^3;
unsigned int a;
unsigned int d;
void delay(int z)
{
   unsigned int b,c;
   for(b=z;b>0;b--)
   for(c=20;c>0;c--);                                                                        
}

void main()
{
      TMOD = 0X11; //定时器0,1。16位定时器
      TH0 = 0X45;
      TL0 = 0X96;         //装载初值17814.
      TR0 = 1;      //启动定时器0
      ET0 = 1;      //启动定时器0中断
      


      TH1 = 0X45;
      TL1 = 0X96;         //装载初值17814.
      TR1 = 1;      //启动定时器1
      ET1 = 1;      //启动定时器1中断

    IT0 = 0;//低电平触发
    EX0 = 1;//外部中断0允许
    IT1 = 0;//低电平触发
    EX1 = 1;//外部中断1允许
      EA = 1;                //开总中断
      while(1);      // 等待中断
      
}
void waizhong0() interrupt 0 //开外部中断0加速
{
LED1 = ~LED1;
delay(5);
LED1 =~LED1;
}
void waizhong1() interrupt 2 //开外部中断1减速
{
delay(1000);
LED1 =~LED1;
}               

void timer0() interrupt 1         //定时器0中断服务程序
{
LED1 = ~LED1;                                 //电机脉冲
}
void timer1() interrupt 3         //定时器1中断服务程序
{
LED2 = ~LED2;                                 //电机脉冲
}

xiaoguilink 发表于 2016-2-24 22:22

学得挺快嘛,加油啊

liwenbao 发表于 2016-2-24 22:25

xiaoguilink 发表于 2016-2-24 22:22
学得挺快嘛,加油啊

嘿嘿 没事的时候 一边学一边调试着玩还挺好玩!{:2_185:}

optical 发表于 2016-2-24 22:30

本帖最后由 optical 于 2016-2-24 22:36 编辑

不用软件延时加减速,直接在中断里改变定时器的装载值速度就变了,还占用CPU少,

xiaoguilink 发表于 2016-2-24 22:32

印象中在中断程序里面要给定时器重新赋值

optical 发表于 2016-2-24 22:40

另外楼主需要的话,我去年自己做的有AVR主控的带导星和USB转232的电跟控制器还有几套,主板是4层PCB,驱动32细分。原理图源代码都有你可以看我以前发过的帖子,目前只有跟踪功能,再多的功能没时间写了,你可以继续在这个基础上发挥。

liwenbao 发表于 2016-2-25 08:30

optical 发表于 2016-2-24 22:40
另外楼主需要的话,我去年自己做的有AVR主控的带导星和USB转232的电跟控制器还有几套,主板是4层PCB,驱动3 ...

本人 对于编程是个菜啊!!刚开始自学51这 AVR   不懂啊{:2_185:}
页: [1]
查看完整版本: 学到定时器和中断系统后又出51