打印

请教:下面这样的情况需要怎么处理,谢谢!

[复制链接]
1600|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星电灯|  楼主 | 2007-5-26 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//-------------------------------------头文件--------------------------------------
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
//-------------------------------------头文件--------------------------------------

//-------------------------------------引脚定义------------------------------------
sbit   D0      =    P0^0;
sbit   D1      =    P0^1;
sbit   P10      =    P1^0;
sbit   D2      =    P0^2;     //按钮
sbit   P33      =    P3^3;    //喂狗
sbit   P23      =    P2^3;    //  
sbit   P22      =    P2^2;    //data
sbit   P21      =    P2^1;    //clk
sbit   P20      =    P2^0;    //latch
//-------------------------------------引脚定义------------------------------------

int WDogZdJs;   //喂狗中断计数


void  DLY50MS( )   //延时50ms
{
    int i,j;
    for (i=0; i<100; i++)
        {
           for(j=0; j<10 ;j++)
              {
                    ;
              }
        }
}

void leddisplay()  //数码管全亮
{
    int i;
    for (i=0;i<32;i++)
    {
        P21 = 0 ;  
      P22 = 1;
      _nop_();
    _nop_();
    P21 = 1;
    }
      _nop_();
    _nop_();
    
    P20 = 1;             //在时钟下降沿把数据送出
    _nop_();
    _nop_();
    P20 = 0;
}


void leddisplay2()  //数码管全灭
{
    int i;
    for (i=0;i<32;i++)
    {
        P21 = 0 ;  
      P22 = 0;
      _nop_();
    _nop_();
    P21 = 1;
    }
      _nop_();
    _nop_();
    
    P20 = 1;             //在时钟下降沿把数据送出
    _nop_();
    _nop_();
    P20 = 0;
}


void timer0(void) interrupt 1   //喂狗中断程序
{
  TH0 = (65536-5000)/256;     //重载计数初值 每 5 ms 中断一次
  TL0 = (65536-5000)%256;
  WDogZdJs ++;
  if ( WDogZdJs >= 20 )
       {
       P33 =! P33;  //不停喂狗
       WDogZdJs = 0;
    }
}

//-------------------------------------主程序---------------------------------------
void main()
{
// int i;
 DLY50MS( ); 
 P0 = 0xff;
 P1 = 0xff;
 P2 = 0xff;
 P3 = 0xff;
 P33 =! P33; 
 P10 = 0;
 leddisplay();
 while(1)
 {
      if(D1==0)
      {
          leddisplay2(); 
      }
     /*
     P23 = 0;
     for (i=0; i<50; i++)
      {
       _nop_();
      }
      D2 = 0;   //D2 输出 0 ,希望 57462 输出0 
      for (i=0; i<50; i++)
      {
       _nop_();
      }
   P23 = 1;
   */
 }
}
//-------------------------------------主程序---------------------------------------


请教:当一个 按钮按下时 D1 为0

现在情况是:
因为首先数码管全亮的
当我把按纽按下,数码管就全灭了,
可是当我把手松开,数码管又全亮了,
应该松开后,也是全灭的啊

各位大哥,我的程序应该怎么改啊?
谢谢!

相关帖子

沙发
星星电灯|  楼主 | 2007-5-26 15:36 | 只看该作者

解决了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

74

主题

121

帖子

1

粉丝