发新帖我要提问
12
返回列表
打印

【STC89c52】要是谁能发现这程序的错误,不知道的不要发言

[复制链接]
楼主: ningyinga
手机看帖
扫描二维码
随时随地手机跟帖
21
yewuyi| | 2011-7-29 10:55 | 只看该作者 回帖奖励 |倒序浏览
LZ写这个标题不是在侮辱自己的娘亲吗?


什么世道,连这样的人都有?

建议LZ用力狂搧自己耳光10万次,如此亵渎自己的娘亲,让人匪夷所思。

使用特权

评论回复
22
linqing171| | 2011-7-29 12:12 | 只看该作者
硬件问题吧,连个图都没有。
不会你把串口输出用的IO也用来扫描按键了吧?

使用特权

评论回复
23
包子有包福| | 2011-8-1 00:42 | 只看该作者
开关好像没有去抖,不确定是不是这个,也可能我见的程序太少了,虽然标题…但到看到了,还是想说一句。o(∩_∩)o

使用特权

评论回复
24
ningyinga|  楼主 | 2011-8-3 17:36 | 只看该作者
我终于明白了,感谢大家的提醒,第二排键盘不能发送数据是因为把P3.1口拉低了,问题在于P3.1口有第二功能引脚TXD,此引脚只有在高电平下才能工作;而我一直把它拉低,所以即使检测到键盘按下也不能发送数据,所以在发送数据前还得把P3.1口拉高
正确程序如下:
unsigned char code table[]={
48,49,50,51,
52,53,54,55,
56,57,58,59};
void display();
void main()
{
        TMOD=0x20;
        TH1=0XE8;
        TL1=0XE8;
        TR1=1;
        SM0=0;
        SM1=1;
       
        while(1)
        {
                display();       
        }
}
void display()
{       
   
        P3=0xfe;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {  
                switch(temp)
                {
                        case 0xe0:num=1;break;
                        case 0xd0:num=2;break;
                        case 0xb0:num=3;break;
                        case 0x70:num=4;break;
                }
                while(temp!=0xf0)
                {
                        temp=P3;
                        temp=temp&0xf0;
                }
                P3=0xff;
            P1=table[num];
                SBUF=table[num];
                while(!TI);
                TI=0;
        }       
        P3=0xfd;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {  
                switch(temp)
                {
                        case 0xe0:num=5;break;
                        case 0xd0:num=6;break;
                        case 0xb0:num=7;break;
                        case 0x70:num=8;break;
                }
                while(temp!=0xf0)
                {
                        temp=P3;
                        temp=temp&0xf0;
                }
                P3=0xff;
            P1=table[num];
                SBUF=table[num];
                while(!TI);
                TI=0;
        }       

        P3=0xfb;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {  
                switch(temp)
                {
                        case 0xe0:num=9;break;
                        case 0xd0:num=10;break;
                        case 0xb0:num=11;break;
                        case 0x70:num=12;break;
                }
                while(temp!=0xf0)
                {
                        temp=P3;
                        temp=temp&0xf0;
                }
                if(num==9)
                {
                P3=0xff;
                SBUF=table[num];
                while(!TI);
                TI=0;       
                }
                else
                {
                        SBUF=49;
                        while(!TI);
                        TI=0;
                        P3=0xff;
                        SBUF=table[num-10];
                        while(!TI);
                        TI=0;
                }
        }
        P3=0xf7;
        temp=P3;
        temp=temp&0xf0;
        if(temp!=0xf0)
        {  
                switch(temp)
                {
                        case 0xe0:num=13;break;
                        case 0xd0:num=14;break;
                        case 0xb0:num=15;break;
                        case 0x70:num=16;break;
                }
                while(temp!=0xf0)
                {
                        temp=P3;
                        temp=temp&0xf0;
                }
                SBUF=49;
                while(!TI);
                TI=0;
                P3=0xff;
                SBUF=table[num-10];
                while(!TI);
                TI=0;
        }               

}

使用特权

评论回复
25
hotpower| | 2011-8-3 17:42 | 只看该作者
没有程序的架构。

使用特权

评论回复
26
aihe| | 2011-8-3 19:54 | 只看该作者
我知道,我发言,就是不告诉你

使用特权

评论回复
27
yangdejin8| | 2011-8-7 21:43 | 只看该作者
:curse:

使用特权

评论回复
28
icecut| | 2011-8-7 21:46 | 只看该作者
看了题目,我就来围观lz。。。问个问题还装大爷

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则