导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:快来帮帮我呀,我的程序哪里有问题呀?工作指示灯闪

* 7757: C51编程:快来帮帮我呀,我的程序哪里有问题呀?工作指示灯闪,其他的不行

   红蚂蚁 
红蚂蚁发表的帖子 

 C51编程:快来帮帮我呀,我的程序哪里有问题呀?工作指示灯闪,其他的不行
/*p1.0~p1.3 接按键,低电平有效,防抖40ms。按一次亮,再按一次灭。四个键不可一起按
着。
  p2.0~p2.3 接led, 低电平有效
  p3.7      工作灯,低电平有效。周期0.4s
  key 为键值积存器
  _tt1为防抖使用时间积存器
  _tt2为工作灯使用时间积存器
  p1reg为p1口上次值积存器
*/


#include <reg51.h>

unsigned char key=0xff;
unsigned char _tt1=0;
unsigned char _tt2=0;
unsigned char p1reg=0xff;  

sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;

sbit p37=P3^7;


/*TO中断服务子程序 */
void  timer0(void) interrupt 1 using 2
{   
   TH0=-2000/256;
   TL0=-2000%256;
   if(P1^p1reg!=0)
     { if(_tt1=0) _tt1=1;
         else { if(_tt1>20)   /*防抖动*/
                 { key=P1;
                   switch(key)
                   { case 1:p20=!p20;break;
                     case 2:p21=!p21;break; 
                     case 4:p22=!p22;break;
                     case 8:p23=!p23;break;
                     default :break;
                   }
                 }
                _tt1=0;
              }          
        p1reg=P1;        
     } 
   else if(_tt1>0) _tt1++;
   _tt2++;
}

/*T0中断设置  2ms*/
void sett0()

  TH0=-2000/256;
  TL0=-2000%256;
  TMOD=0x01;  /*T0方式1*/ 
  EA=1;
  ET0=1;  
  TR0=1;      /*启动订时器T0*/
}  

/*指示灯子程序*/
void led()

 
  if(_tt2>100) 
       { p37=!p37;
         _tt2=0;         
       }
  
}


/* 调用子程序*/
void main()

   P1=0xff;
   P2=0xff;
   p37=1 ;
   sett0();
   while(1) led();
}


发表时间:2002年5月23日11:38:00

  
回复该帖

本主题共有 9 帖,分页:>>>>>该主题的所有内容[9]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  7758.[详细]老古在吗?
摘要:......(无内容)
- [红蚂蚁][992次] 2002年5月23日

  7759.[详细]来人呀,救救我呀
摘要:......(无内容)
- [红蚂蚁][980次] 2002年5月23日

  7760.[详细]有人帮我吗?555555555
摘要:......(无内容)
- [红蚂蚁][1043次] 2002年5月23日

[上一篇帖子]:老古在吗?
[下一篇帖子]:C51编程:各位请看各位老大,我最近做upd6453,各位有没有12*18点阵的中文字库呵。或者有什