| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1076 人关注过本帖
标题:单片机一段代码,输入信号感到困惑!!
只看楼主 加入收藏
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
结帖率:73.33%
收藏
 问题点数:0 回复次数:3 
单片机一段代码,输入信号感到困惑!!
/*键扫描子程序*/
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-06-05 11:34
lnhaing
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2008-1-30
收藏
得分:0 
51的?
问题说的具体点

我来自偶然! bitter C
2008-06-05 17:01
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
哎……好羡慕你啊。曾经我也想过编单片机程序,但是我没有单片机模拟器,本地也没有卖,就连51单片机都买不到。
其实我觉得单片机编程比电脑编程好玩多了,因为单片机是从0开始,而在电脑上,这些API接口、系统都为你准备好了,玩起编程来不是很爽。
不过做游戏我还是喜欢电脑的,毕竟人家技术成熟、速度又快,有什么理由不用呢?

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2008-06-05 17:20
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
谢谢了,我都无语了

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

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

晕了,看不懂

偶是菜鸟鸟偶惧WHO?!!!!
2008-06-07 13:50
快速回复:单片机一段代码,输入信号感到困惑!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016759 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved