[开发工具] 求帮修改下程序按键发字符的程序

[复制链接]
1372|3
 楼主| wgwg558 发表于 2014-3-17 12:13 | 显示全部楼层 |阅读模式
3个脚踏开关,每次踩下哪个,哪个发一个字符,只发一次,当其中一个被踩下没有离开时,在踩别的开关还能在继续发字符一次,我做的程序因为中断问题,发字符没问题,但是当一个脚踏开关没松开时,在踩别的脚踏开关则不起作用。


  # include <reg52.h>
  # define uchar unsigned char
  # define uint  unsigned int

sbit  p00=P0^0;
sbit  p01=P0^1;
sbit  p02=P0^2;
sbit  p03=P0^3;
sbit  p04=P0^4;
sbit  p05=P0^5;
sbit  p06=P0^6;
sbit  p07=P0^7;


  
uchar i;

//-------------------------
void  delay(uint t)
{
   while(t--);

}

//--------------------------
void  chuan(uchar s1)
{
   SBUF=s1;
   while(!TI)  ;
   TI=0;
   delay(6000)                 ;
   
}

//==========================
void  main()
{

   SCON=0X40;
   TMOD=0X20;
   TH1=0XFD  ;
   TL1=0XFD  ;
   TR1=1;
   EA=1;
   ES=1;

//==========================
        while(1)
  
   {
   
       
        if(p00==0)
        {
        delay(600)        ;          
     chuan(65) ;

          while(!p00)  ;

                      }      

                  if(p01==0)
        {
           delay(600)        ;
                  
      chuan(66) ;
           while(!p01)  ;
                      }
                        if(p02==0)
        {

      chuan(67) ;
           while(!p02)  ;
                      }
                        if(p03==0)
        {
      chuan(68) ;
           while(!p03)  ;
                      }
                        if(p04==0)
        {
      chuan(69) ;
           while(!p04)  ;
                      }        
       
           if(p05==0)
   {
    chuan(70) ;
            while(!p05)  ;
                      }      

       
       
                      }

                      }        
mmuuss586 发表于 2014-3-17 12:22 | 显示全部楼层
while(!p00)  ;
后面还有个死循环,如果开关一直按下,程序一直等待这里。别的开关当然响应不了
 楼主| wgwg558 发表于 2014-3-17 13:15 | 显示全部楼层
mmuuss586 发表于 2014-3-17 12:22
while(!p00)  ;
后面还有个死循环,如果开关一直按下,程序一直等待这里。别的开关当然响应不了 ...

我知道,我是问怎么解决
songtao0728 发表于 2014-3-17 13:21 | 显示全部楼层
按键检测不要用while嘛,用状态机的思想去处理就解决了嘛
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0