搜索
bottom↓
回复: 17

proteus的又一个小bug。。。。。。。。。。。

[复制链接]

出0入0汤圆

发表于 2009-10-23 09:45:40 | 显示全部楼层 |阅读模式
用了proteus自带的4*4键盘,按键扫描。用了如下的程序,始终调不通,后来发现系统的4*4按键尽然在高4bit,低4bit翻转时会失效。。。。。
于是自己用了16个按键,搭了4*4按键,程序通过。
呵呵,这个破东西搞了我一天。
另外,我以前用另外一种方法按键扫描是可以。
只是,这次用如下程序,系统4*4按键才会失效。。。。。。。。。
大家,看看。。。。。。。。
我觉得应该是proteus的bug了。。。。。。。。。

unsigned char KeyBord_Scan()
{
        unsigned char key=0;
//-------set low 4 bits   read high 4 bits --------       
        PORTA=0X00;
        PORTE=0X00;
        TRISA=0X30;
        TRISE=0X03;
        PORTA=0X30;
        PORTE=0X03;
        DelayUs(10);
        DelayUs(1);
        if(RA4==1)
                key=key|(1<<4);
        else
                key=key&(~(1<<4));
        if(RA5==1)
                key=key|(1<<5);
        else
                key=key&(~(1<<5));
        if(RE0==1)
                key=key|(1<<6);
        else
                key=key&(~(1<<6));
        if(RE1==1)
                key=key|(1<<7);
        else
                key=key&(~(1<<7));
        DelayMs(5);
//--------set high 4bits  read low 4bits------       
        DelayUs(1);
        PORTA=0X0;
        PORTE=0X0;
        TRISA=0X0F;       
        TRISE=0;
        PORTA=0X0F;
        PORTE=0X0;
        DelayUs(10);
        if(RA3==1)
                key=key|(1<<3);
        else
                key=key&(~(1<<3));
        if(RA2==1)
                key=key|(1<<2);
        else
                key=key&(~(1<<2));
        if(RA1==1)
                key=key|(1<<1);
        else
                key=key&(~(1<<1));
        if(RA0==1)
                key=key|(1<<0);
        else
                key=key&(~(1<<0));
        DelayMs(5);
        return key;
}

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-10-23 12:51:41 | 显示全部楼层
到底是不是proteus的bug,两说呢。
我所遇到的许多许多不能仿真的情况,大都是我自己的不当或失误。
当然,proteus的挑剔也是常见的。

出0入0汤圆

 楼主| 发表于 2009-10-23 14:49:25 | 显示全部楼层

(原文件名:KEYPAD.JPG)

使用proteus的按键有错(高4位,低4位只有一半是对的),使用右边自己搭的就可以。。。。。。。。。

出0入0汤圆

发表于 2009-10-23 16:24:13 | 显示全部楼层
编程总是必须同按键接线方式相关联。
自己搭的就可以,那是因为关联正确。
那么多的别人使用它,那么多的例程使用它,没有说不行的啊。
当编程者想像的接线方式同 Proteus 的 4x4 按键的默认接线方式不一致时,出现问题是必然的。
所以,不要一出问题,就说是 BUG 。

出0入0汤圆

发表于 2009-10-23 18:40:35 | 显示全部楼层
"所以,不要一出问题,就说是 BUG 。 "

but it is a lot easier to blame others than to blame oneself.

出0入0汤圆

 楼主| 发表于 2009-10-23 20:42:21 | 显示全部楼层
难道4*4还有多种连法?这是明显bug……如果不服,请编出程序来……前提是用我的扫描按健方式………

出0入0汤圆

 楼主| 发表于 2009-10-23 20:45:59 | 显示全部楼层
别人可以那是因为别人的方式可以,可是扫描按健是有很多方式的……

出0入0汤圆

发表于 2009-10-31 10:58:02 | 显示全部楼层
我也发现有这样的BUG,用这个键盘不行,但自己用按键搭了一个就没问题,4*4的才有这个问题,3*4好像不会
我的扫描代码
unsigned char Key_Scan()
{
        unsigned char temp=0;
        P1=0x0F;
        Delay_ms(1);
        if(P1!=0x0F)
        {
                Delay_ms(5);
                if(P1!=0x0F)
                {
                        P1=0xFE;
                        Delay_ms(1);
                        switch(P1)
                        {
                                case 0xEE:while(P1==0xEE); temp=0x36;break;
                                case 0xDE:while(P1==0xDE); temp=0x48;break;
                                case 0xBE:while(P1==0xBE); temp=0x88;break;
                                case 0x7E:while(P1==0x7E); temp=0x0A;break;
                        }
                       
                        P1=0xFD;
                        Delay_ms(1);
                        switch(P1)
                        {
                                case 0xED:while(P1==0xED); temp=0;break;
                                case 0xDD:while(P1==0xDD); temp=0x50;break;
                                case 0xBD:while(P1==0xBD); temp=0;break;
                                case 0x7D:while(P1==0x7D); temp=0x32;break;
                        }

                        P1=0xFB;
                        Delay_ms(1);
                        switch(P1)
                        {
                                case 0xEB:while(P1==0xEB); temp=0xC2;break;
                                case 0xDB:while(P1==0xDB); temp=0x40;break;
                                case 0xBB:while(P1==0xBB); temp=0x80;break;
                                case 0x7B:while(P1==0x7B); temp=0x2A;break;
                        }

                        P1=0xF7;
                        Delay_ms(1);
                        switch(P1)
                        {
                                case 0xE7:while(P1==0xE7); temp=0xF0;break;
                                case 0xD7:while(P1==0xD7); temp=0x60;break;
                                case 0xB7:while(P1==0xB7); temp=0xE2;break;
                                case 0x77:while(P1==0x77); temp=0;break;
                        }
                       
                }
               
        }
        return temp;
}

出0入0汤圆

发表于 2009-10-31 12:48:15 | 显示全部楼层
不一定是proteus的bug,有可能是破解不完全,我就试过,pic的ccp在用某个破解文件来破解时用不了,而用另一个版本的破解文件就可以用,楼主你也可以试试,除非你是用正版,那就没有话说.

出0入0汤圆

 楼主| 发表于 2009-10-31 18:01:12 | 显示全部楼层
呵呵…确实是盗版软件……不过,pic的ccp是什么?是不是ccs?

出0入0汤圆

发表于 2009-10-31 18:48:49 | 显示全部楼层
"确实是盗版软件…"

just because you aren't smart enough to get it work doesn't mean it doesn't work.


(原文件名:Proteus keypad.PNG)

出0入0汤圆

发表于 2009-11-1 20:51:38 | 显示全部楼层
不见得吧。
我看别人用自带的那个键盘做的计算器,用的好好的啊 。

出0入0汤圆

 楼主| 发表于 2009-11-3 21:10:09 | 显示全部楼层
晕…不看全别人的帖子…我已经说了是多种扫描方式中的一种下会出错…

出0入0汤圆

发表于 2009-11-4 00:59:37 | 显示全部楼层
"我已经说了是多种扫描方式中的一种下会出错…"

you cannot call your PC buggy just because it wouldn't clean your laundry for you.

devices are designed to be used in certain ways and they usually don't work if you don't use them the right way.

that's not because the devices are buggy, but the designers who misuse those devices are dumb.

出0入0汤圆

 楼主| 发表于 2009-11-4 11:10:02 | 显示全部楼层
晕。。。。竟然有人冒充老外。。。。。。。。

出0入0汤圆

发表于 2009-11-4 15:46:36 | 显示全部楼层
晕什么呀?

millwood0 是坛子里的老朋友。今年网站被攻击前,他的注册名是 millwood 。
他一直用英文发帖,且帖子质量挺高。
跟着他学习、熟练一下英文,不是挺好的吗?可惜我当初不是学英文的。

出0入0汤圆

 楼主| 发表于 2009-11-4 23:03:24 | 显示全部楼层
报歉,因为看英文有些吃力,所以发唠叨……不好意思,这段时间工作不太顺利,所以有些急…
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-4 02:25

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

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