Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631142
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:29:31

原文地址:电机控制 作者:luozhiyong131

  1. #include <reg52.h>
  2. #include "sound.h"
  3. #include "LED.h"
  4. #include "moto.h"
  5. #include "key.h"
  6. #include "IT0.h"
  7.          
  8. char key_num=0; //保存原速度

  9. int num=0,num1,num2 ,moto_mian_i;

  10. /*当有键按下,电机转动调整速度,并在数码管上显示设置的数速*/
  11. void moto_seed(void)
  12. {
  13.     keydown(); //读按键程序    

  14.         
  15.     /*有新按键按下,则驱动电机转动相应角度*/
  16.     if(key_num!=key)
  17.     {        
  18.         /*显示按键值*/
  19.         if(key<0)
  20.             LED1_display(-key);
  21.         else
  22.             LED1_display(key);

  23.         key_num=key;
  24.         moto_dispose(key); //设置速度

  25.     }
  26. }

  27. /*速度计算*/
  28. void IT0_done()        
  29. {        
  30.     num /=1;         //计算速度

  31.     num1=num/10;    //分离出十位

  32.     num2=num%10;

  33.     num=0;            //计算清0

  34. }

  35.     
  36. void main()
  37.  {
  38.     init_IT0(1);    //设置彩样周期

  39.     
  40.     IT0=1;
  41.     EX0=1;

  42.     while(1)
  43.     {        
  44. //        moto_seed(); //扫描有无键按下


  45.         /*防止误计数保持一定间隔时间(水滴的最大速度)*/
  46.         for(moto_mian_i=100;moto_mian_i>0;moto_mian_i--)    
  47.         {
  48.             EX0=0;
  49.             LED2_display(num1,num2);    
  50.         }
  51.         
  52.         EX0=1;     
  53.         
  54.     }
  55.     
  56.  }

  57.  void Int0()    interrupt 0    //采样处理函数

  58. {
  59.         
  60.     EX0=0;                 //防止连续计数

  61.     
  62.     sound();        //发出声音、同时起延时作用

  63.     
  64.     num ++;        //保存计数值    

  65.     
  66.     EX0=1;
  67.     
  68. }
阅读(115) | 评论(0) | 转发(0) |
0

上一篇:proc文件系统

下一篇:内核定时器

给主人留下些什么吧!~~