| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 461 人关注过本帖
标题:单片机一段代码,输入信号感到困惑!!
收藏  订阅  推荐  打印 
我是菜鸟哦
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:676
积分:7564
注册:2007-5-4
单片机一段代码,输入信号感到困惑!!

/*键扫描子程序*/
void  keyscan(void)
{
    P1=0x0F ;         //低四位输入  
    delay(1) ;
    temp=P1 ;         //读P1口
    temp=temp&0x0F ;
    temp=~(temp|0xF0) ;
    if(temp==1)
        key=0 ;
    else if(temp==2)
        key=1 ;
    else if(temp==4)
        key=2 ;
    else if(temp==8)
        key=3 ;
    else
        key=16 ;
        
    P1=0xF0 ;        //高四位输入
    delay(1) ;
    temp=P1 ;        //读P1口      
    temp=temp&0xF0 ;
    temp=~((temp>>4)|0xF0) ;
    if(temp==1)
        key=key+0 ;
    else if(temp==2)
        key=key+4 ;
    else if(temp==4)
        key=key+8 ;
    else if(temp==8)
        key=key+12 ;
    else
        key=16 ;

    if(key>=12&&key<=16&&kaishi==1&&daoshi==1)
{
     dis_buf[7]=table ; //查表得键值
  kaishi=0 ;
  TR1 = 0 ;
  beep1() ;
  qiangda=0 ;
}
else if(key == 8 && qiangda==1)  // 抢答开始
{
  TR1 = 1 ;
  kaishi=1 ;
  beep2() ;
  shezhi=0 ;
}
else if(key == 9) // 复位
{
  TR1 = 0 ;
  hour = shour ;
  kaishi=0 ;
  daoshi=1 ;
  shezhi=0 ;
  qiangda=1 ;
  if(shour > 9)
   dis_buf[0] = table ;  
  else
   dis_buf[0] = 0xff ;     
  dis_buf[1] = table ;
  dis_buf[7] = table[0] ;
}
else if(key == 4 && kaishi==0) // 设置限时
{
  shezhi=1 ;
}
else if(key == 5&& shezhi==1) // 增加时间
{
shour++ ;
  if(shour > 99)
  {
   shour = 0 ;
  }
  if(shour > 9)
   dis_buf[0] = table ;  
  else
   dis_buf[0] = 0xff ;     
  dis_buf[1] = table ;  
  hour=shour ;                         //开始使用新限时
  delay(250) ;       //延时
}
else if(key == 6&& shezhi==1) // 减少时间
{
if(shour == 0)
  {
   shour = 100 ;
  }
  shour-- ;
  if(shour > 9)
   dis_buf[0] = table ;  // 十位
  else
   dis_buf[0] = 0xff ;     // 当十位为0时不显示
  dis_buf[1] = table ;  // 个位
  hour=shour ;                         //开始使用新限时
     delay(250) ;       //延时
}
}



貌似shi 用8个口实现了16个口得输入?????
还是理解有误?
搜索更多相关主题的帖子: temp  单片机  key  信号  else  
2008-6-5 00:24
我是菜鸟哦
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:676
积分:7564
注册:2007-5-4

..............没人帮看

偶是菜鸟鸟偶惧WHO?!!!!
2008-6-5 11:32
smweixp
Rank: 1
等级:新手上路
帖子:8
积分:180
注册:2008-6-10

想帮,可是帮不上,不好意思哦

坚强自信是力量的源泉!
2008-6-10 02:31
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.063956 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved