搜索
bottom↓
回复: 1

利用外部中断点亮LED,求延时消抖函数,新手上路

[复制链接]

出0入0汤圆

发表于 2010-12-29 20:29:18 | 显示全部楼层 |阅读模式
这个是我写的利用外部中断点亮和熄灭LED,但是不能消抖,延时函数一写好,求消抖。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-12-29 20:30:46 | 显示全部楼层
while(1)
        {
             if(rEINTPEND&(1<<8))          //按下key1
             {
       
                   rEINTPEND |= 1<< 8;
                   i++;
                 if(i%2==1)
                   {
                      rGPBDAT=rGPBDAT&(~(1<<5))|(0<<5);    //点亮LED1  
                   }
                 else
               {
                      rGPBDAT=rGPBDAT&(~(1<<5))|(1<<5);
                   }
              }
             else if(rEINTPEND&(1<<11))   //按下key2
             {
                    rEINTPEND |= 1<< 11;
                   j++;
                 if(j%2==1)
                   {
                      rGPBDAT=rGPBDAT&(~(1<<6))|(0<<6);    //点亮LED2
                   }
                     else
                       {
                      rGPBDAT=rGPBDAT&(~(1<<6))|(1<<6);
                   }
              }
             else if(rEINTPEND&(1<<13))   //按下key3
             {
                   rEINTPEND |= 1<< 13;
                   m++;
                 if(m%2==1)
                   {
                      rGPBDAT=rGPBDAT&(~(1<<7))|(0<<7);    //点亮LED3
                   }
                 else
                  {
                      rGPBDAT=rGPBDAT&(~(1<<7))|(1<<7);   
                  }
             }
            else if(rEINTPEND&(1<<14))   //按下key4
             {
                  rEINTPEND |= 1<< 14;
                  n++;
                if(n%2==1)
                 {
                     rGPBDAT=rGPBDAT&(~(1<<8))|(0<<8);    //点亮LED4
                     }   
                  else
                 {
                     rGPBDAT=rGPBDAT&(~(1<<8))|(1<<8);
                 }   
             }
          
          else if(rEINTPEND&(1<<15))   //按下key5
             {
                     rEINTPEND |= 1<< 15;
                     rGPBDAT=rGPBDAT&(~(1<<5))|(1<<5);   
                     rGPBDAT=rGPBDAT&(~(1<<6))|(1<<6);     
                     rGPBDAT=rGPBDAT&(~(1<<7))|(1<<7);   
                     rGPBDAT=rGPBDAT&(~(1<<8))|(1<<8);   
                                                         //熄灭所有的灯
            }
         else if(rEINTPEND&(1<<19)) //按下key6
            {
                     rEINTPEND |= 1<< 19;
                     rGPBDAT=rGPBDAT&(~(1<<5))|(0<<5);   
                     rGPBDAT=rGPBDAT&(~(1<<6))|(0<<6);   
                     rGPBDAT=rGPBDAT&(~(1<<7))|(0<<7);   
                     rGPBDAT=rGPBDAT&(~(1<<8))|(0<<8);   
                                                        //点亮所有的灯
           }
        }
}

void delayms(unsigned char t)  //延时函数
{
       rTCFG1 &=rTCFG1&(~0x0F);
       rTCFG1|=0x02;    // 1/8分频
       rTCNTB0 =(PCLK)/8/1000; //时钟频率为PCLK/8
                            //  1ms延时 rTCON&= ~0x0F;    //  
       rTCON|= (1<<3)|(1<<1)|(1<<0);
       rTCON&= ~(1<<1);

while(t--)
{
       while(rTCNTO0!=(rTCNTB0-1));  
}
       rTCON&= ~(1<<0);   //停止定时器0
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表