| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1018 人关注过本帖
标题:C语言菜鸟一个,希望有高手帮忙解答下。
只看楼主 加入收藏
laylay0803
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-4-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:19 
C语言菜鸟一个,希望有高手帮忙解答下。
程序代码:
void board_process( void )
{
    INT8U i,j;
        for(i=0;i<4;i++)
    {
      if(get_key())
      {
        password[i]=get_key();
      }
    }
       for(j=0;j<4;j++)       //比较密码
    {
       if(password[j]==rightpassword[j])
       {
         bPass=1;
         DisplayListChar(1,1,"password right");
       }    
        else
       { 
         bWarn=1;
         DisplayListChar(1,1,"password error");
       }
    }
}

以上是我自己写的,主要目的是从键盘上获取一个四个数的密码,再和程序设定好的密码进行比较,错误的话蜂鸣器就连响三声,液晶显示password error。程序下载好不等我按键蜂鸣器就响了。
程序代码:
#include "include.h"

INT8U KeyTime = 0;

INT8U get_key(void)
{
    //uchar tmp=0;
    SET_LINE1;
    SET_LINE2;
    CLR_LINE1;
  
    nop();
    if( ( STU_ROW1 == 0 ) && ( !KeyTime ) )
    {
        KeyTime = KEY_DELAY;
        return KEY_1;
    }
    else if( ( STU_ROW2 == 0 ) && ( !KeyTime ) )
    {
        KeyTime = KEY_DELAY;
        return KEY_2;
    }
  
    SET_LINE1;
    SET_LINE2;
    CLR_LINE2;

    nop();
    if( ( STU_ROW1 == 0 ) && ( !KeyTime ) )
    {
         KeyTime = KEY_DELAY;
        return KEY_3;
    }
    else if( ( STU_ROW2 == 0 ) && ( !KeyTime ) )
    {
        KeyTime = KEY_DELAY;
        return KEY_4;
    }  
  
    return 0; 
}

这个是买的模块里给的按键程序,。

希望有高手指点下,不胜感激!

C[GQ)E@0D(~7HZFEQ{{3~UM.png (4.87 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: C语言 password 
2015-04-13 10:14
laylay0803
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-4-13
收藏
得分:0 
回复 楼主 laylay0803
最后是个截图,忘记删了。
2015-04-13 10:16
z_j_j_1
Rank: 4
等 级:业余侠客
威 望:1
帖 子:62
专家分:213
注 册:2015-4-4
收藏
得分:10 
回复 楼主 laylay0803
你刚上电后会初始化,默认输入密码为0,密码肯定不匹配 所以蜂鸣器会叫
2015-04-13 10:39
z_j_j_1
Rank: 4
等 级:业余侠客
威 望:1
帖 子:62
专家分:213
注 册:2015-4-4
收藏
得分:0 
回复 楼主 laylay0803
另外 你还需要把main 函数贴出来,单片机代码只看一部分很难整体把握的哦
2015-04-13 10:42
laylay0803
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-4-13
收藏
得分:0 
回复 4楼 z_j_j_1
按键也没有什么反应,一直报警。
报警.rar (141.76 KB)

这是完整的一个工程。
2015-04-13 10:47
laylay0803
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-4-13
收藏
得分:0 
有没有人可以指点下,像这种程序编译没错但现象不对的情况要怎么排查错误呢?、
2015-04-13 13:50
AleTiff
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:157
注 册:2015-3-30
收藏
得分:10 
你发的这个“报警.rar”里面什么都没有啊,给了一堆 obj 和 lst,唯一一份 c 却是空的。

依我猜,你如果不利用中断控制,直接在 main() 函数里对键盘读的话,你需要添加一些标志位。比如:在键盘没有按下或者按下但没有输入完整前,需要一个键盘接收是否完成的标志位,这个标志位没有设置前,不要让程序进入口令比较,让它处于空循环状态。

看你贴的 get_key() 函数里,原来设计会对 KeyTime 进行设置,如果现在你改变了 KeyTime 的设置方法,有可能你需要修改这个 get_key() 函数,以便让这个函数针对性地去读 Key。

看你调试程序那么费劲,我倒建议你不要做太大改动,开始的时候,你还是仅仅修改下 rightpassword 数组里的东西来改变到你需要的口令,等比较熟悉代码流程和控制原理后,再对代码做修改。另外,如果你可以找到你这块板子的 Proteus 仿真原理图,你都可以直接把编译出来的 .hex 文件放到 Proteus 里仿真,那样调试程序就方便多了。
2015-04-13 17:00
laylay0803
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-4-13
收藏
得分:0 
回复 7楼 AleTiff
非常感谢!!
2015-04-15 10:31
laylay0803
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-4-13
收藏
得分:0 
回复 7楼 AleTiff
图片附件: 游客没有浏览图片的权限,请 登录注册

其实打开这个就可以了。
妹子一个,感觉好难!
2015-04-15 10:35
AleTiff
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:157
注 册:2015-3-30
收藏
得分:0 
是啊,我是打开这个的。这个文件是个项目组织文件,它是可以打开,但被它组织管理的文件呢?一个都不存在,它就一光杆司令。


还有啊,是不是妹子,对我来说都不影响我认真回复,我会去别的社交论坛找妹子,也是只找炮友不找朋友。不过,妹子钻研这个,还真是稀缺物种。
2015-04-15 12:15
快速回复:C语言菜鸟一个,希望有高手帮忙解答下。
数据加载中...
 
   



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

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