| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 341 人关注过本帖
标题:单片机一段代码,输入信号感到困惑!!
收藏  订阅  推荐  打印 
我是菜鸟哦
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:676
积分:7582
注册: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 11:34
lnhaing
Rank: 2
等级:注册会员
帖子:110
积分:1480
注册:2008-1-30

51的?
问题说的具体点

我来自偶然! bitter C
2008-6-5 17:01
flyue
Rank: 6Rank: 6
等级:金牌会员
威望:6
帖子:1721
积分:17882
注册:2006-6-20

哎……好羡慕你啊。曾经我也想过编单片机程序,但是我没有单片机模拟器,本地也没有卖,就连51单片机都买不到。
其实我觉得单片机编程比电脑编程好玩多了,因为单片机是从0开始,而在电脑上,这些API接口、系统都为你准备好了,玩起编程来不是很爽。
不过做游戏我还是喜欢电脑的,毕竟人家技术成熟、速度又快,有什么理由不用呢?

大家一起来编程吧!
2008-6-5 17:20
我是菜鸟哦
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:676
积分:7582
注册:2007-5-4

谢谢了,我都无语了

本来我不会单片机就是对C有点研究

让同学拉去做单片机抢答器

晕了,看不懂

偶是菜鸟鸟偶惧WHO?!!!!
2008-6-7 13:50
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

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