Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7560486
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2011-01-14 19:44:17

  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. }
阅读(1243) | 评论(0) | 转发(2) |
0

上一篇:内核定时器

下一篇:proc文件系统

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