专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

按键改变流水灯速度

作者:佚名   来源:本站原创   点击数:  更新时间:2009年10月13日   【字体:

/*
程序效果:有三个按键,按下其中任意一个流水灯的速度改变
*/
#include<reg52.h> //52系列单片机的头文件
#define uchar unsigned char//宏定义
#define uint  unsigned int
uchar count=40,flag=0; //定义刚开始的流水灯的速度,后一个为标志变量
void main()
{
   uchar i=0;//定义局部变量
   EA=1; //打开总中断
   ET0=1; //打开定时器
   TR0=1; //启动定时器
   TH0=(65536-50000)/256; //装初值
   TL0=(65536-50000)%256;    
   P2=0xfe;   //点亮第一个数码管,为下次循环做准备
   while(1)
   {
      if(flag)   //flag被置位
      {
         flag=0;//清零,为下次做准备
         P2=~P2; //取反
         P2<<=1; //左移一位
         P2=~P2;  //取反
         i++;
         if(i==8) //移到第八个数码管,则从新装初值
         {
            i=0;
            P2=0xfe;
         }
      }
      P0=0xf0;   //赋初值
      if((P0&0xf0)!=0xf0) //判断是否有按键按下
      {
         if(P0==0x70) //按下第一个按键
            count=60; //给count从新赋值
         if(P0==0xb0)
            count=20;  
         if(P0==0xd0)  
            count=10;
      }
   }
}
void time0() interrupt 1 //定时器0
{
   static uchar cnt; //定义静态变量
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   cnt++;     //计数
   if(cnt==count)
   {
    cnt=0;    //清零
    flag=1;   //置标志位
   }
}
 

关闭窗口