你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

12
返回列表 发新帖
楼主: w小菜才

求教这个问题怎么解决

[复制链接]

62

主题

524

回帖

0

蝴蝶豆

高级会员

最后登录
2018-8-20
 楼主| 发表于 2015-3-10 18:45:14 | 显示全部楼层
flyword 发表于 2015-3-10 16:27
贴出来程序看看

#include<reg51.h>

#define GPIO_DIG P0
#define GPIO_DIG2 P2
#define GPIO_KEY P1

unsigned char code DIG_CODE[17]={
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,//È·¶¨ÐÐ
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};  //È·¶¨ÁÐ

unsigned char KeyValue;//ÓÃÀ´´æ·Å¶ÁÈ¡µ½µÄ¼ü
unsigned char KeyValue1;  //ÓÃÀ´¶ÁÈ¡°´¼üµÄÖµ
void Delay10ms();   //ÑÓʱ10ms
void KeyDown();                 //¼ì²â°´¼üº¯Êý
void KeyDown1();

/*******************************************************************************
* º¯ Êý Ãû         : main
* º¯Êý¹¦ÄÜ                   : Ö÷º¯Êý
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void main(void)
{
        int i=1;
        while(1)
        {       
                if(i==1)
                {
                        KeyDown();
//  if(KeyValuv<9)
                  GPIO_DIG=DIG_CODE[KeyValue];
                   Delay10ms();
                }
                else
                {       
            KeyDown();
            GPIO_DIG2=DIG_CODE[KeyValue];
                        Delay10ms();
                }
                  i=i+1;
        }                               
}
/*******************************************************************************
* º¯ Êý Ãû         : KeyDown
* º¯Êý¹¦ÄÜ                   : ¼ì²âÓа´¼ü°´Ï²¢¶ÁÈ¡¼üÖµ
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void KeyDown(void)
{
        char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//¶ÁÈ¡°´¼üÊÇ·ñ°´ÏÂ
        {
                Delay10ms();//ÑÓʱ10ms½øÐÐÏû¶¶
                if(GPIO_KEY!=0x0f)//Ôٴμì²â¼üÅÌÊÇ·ñ°´ÏÂ
                {
                       
                        //²âÊÔÁÐ
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        //²âÊÔÐÐ
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))         //¼ì²â°´¼üËÉÊÖ¼ì²â
                        {
                                Delay10ms();
                                a++;
                        }
                }
        }
}
/*******************************************************************************
* º¯ Êý Ãû         : Delay10ms
* º¯Êý¹¦ÄÜ                   : ÑÓʱº¯Êý£¬ÑÓʱ10ms
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void Delay10ms(void)   //Îó²î 0us
{
    unsigned char a,b,c;
    for(c=10;c>0;c--)
        for(b=380;b>0;b--)
            for(a=1300;a>0;a--);
}
回复 支持 反对

使用道具 举报

62

主题

524

回帖

0

蝴蝶豆

高级会员

最后登录
2018-8-20
 楼主| 发表于 2015-3-10 18:45:32 | 显示全部楼层
slotg 发表于 2015-3-10 16:14
应该将该程序段贴出来看看吧!

#include<reg51.h>

#define GPIO_DIG P0
#define GPIO_DIG2 P2
#define GPIO_KEY P1

unsigned char code DIG_CODE[17]={
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,//È·¶¨ÐÐ
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};  //È·¶¨ÁÐ

unsigned char KeyValue;//ÓÃÀ´´æ·Å¶ÁÈ¡µ½µÄ¼ü
unsigned char KeyValue1;  //ÓÃÀ´¶ÁÈ¡°´¼üµÄÖµ
void Delay10ms();   //ÑÓʱ10ms
void KeyDown();                 //¼ì²â°´¼üº¯Êý
void KeyDown1();

/*******************************************************************************
* º¯ Êý Ãû         : main
* º¯Êý¹¦ÄÜ                   : Ö÷º¯Êý
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void main(void)
{
        int i=1;
        while(1)
        {       
                if(i==1)
                {
                        KeyDown();
//  if(KeyValuv<9)
                  GPIO_DIG=DIG_CODE[KeyValue];
                   Delay10ms();
                }
                else
                {       
            KeyDown();
            GPIO_DIG2=DIG_CODE[KeyValue];
                        Delay10ms();
                }
                  i=i+1;
        }                               
}
/*******************************************************************************
* º¯ Êý Ãû         : KeyDown
* º¯Êý¹¦ÄÜ                   : ¼ì²âÓа´¼ü°´Ï²¢¶ÁÈ¡¼üÖµ
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void KeyDown(void)
{
        char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//¶ÁÈ¡°´¼üÊÇ·ñ°´ÏÂ
        {
                Delay10ms();//ÑÓʱ10ms½øÐÐÏû¶¶
                if(GPIO_KEY!=0x0f)//Ôٴμì²â¼üÅÌÊÇ·ñ°´ÏÂ
                {
                       
                        //²âÊÔÁÐ
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        //²âÊÔÐÐ
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))         //¼ì²â°´¼üËÉÊÖ¼ì²â
                        {
                                Delay10ms();
                                a++;
                        }
                }
        }
}
/*******************************************************************************
* º¯ Êý Ãû         : Delay10ms
* º¯Êý¹¦ÄÜ                   : ÑÓʱº¯Êý£¬ÑÓʱ10ms
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void Delay10ms(void)   //Îó²î 0us
{
    unsigned char a,b,c;
    for(c=10;c>0;c--)
        for(b=380;b>0;b--)
            for(a=1300;a>0;a--);
}
回复 支持 反对

使用道具 举报

62

主题

524

回帖

0

蝴蝶豆

高级会员

最后登录
2018-8-20
 楼主| 发表于 2015-3-10 18:45:48 | 显示全部楼层
#include<reg51.h>

#define GPIO_DIG P0
#define GPIO_DIG2 P2
#define GPIO_KEY P1

unsigned char code DIG_CODE[17]={
0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,//È·¶¨ÐÐ
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};  //È·¶¨ÁÐ

unsigned char KeyValue;//ÓÃÀ´´æ·Å¶ÁÈ¡µ½µÄ¼ü
unsigned char KeyValue1;  //ÓÃÀ´¶ÁÈ¡°´¼üµÄÖµ
void Delay10ms();   //ÑÓʱ10ms
void KeyDown();                 //¼ì²â°´¼üº¯Êý
void KeyDown1();

/*******************************************************************************
* º¯ Êý Ãû         : main
* º¯Êý¹¦ÄÜ                   : Ö÷º¯Êý
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void main(void)
{
        int i=1;
        while(1)
        {       
                if(i==1)
                {
                        KeyDown();
//  if(KeyValuv<9)
                  GPIO_DIG=DIG_CODE[KeyValue];
                   Delay10ms();
                }
                else
                {       
            KeyDown();
            GPIO_DIG2=DIG_CODE[KeyValue];
                        Delay10ms();
                }
                  i=i+1;
        }                               
}
/*******************************************************************************
* º¯ Êý Ãû         : KeyDown
* º¯Êý¹¦ÄÜ                   : ¼ì²âÓа´¼ü°´Ï²¢¶ÁÈ¡¼üÖµ
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void KeyDown(void)
{
        char a=0;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//¶ÁÈ¡°´¼üÊÇ·ñ°´ÏÂ
        {
                Delay10ms();//ÑÓʱ10ms½øÐÐÏû¶¶
                if(GPIO_KEY!=0x0f)//Ôٴμì²â¼üÅÌÊÇ·ñ°´ÏÂ
                {
                       
                        //²âÊÔÁÐ
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                        {
                                case(0X07):        KeyValue=0;break;
                                case(0X0b):        KeyValue=1;break;
                                case(0X0d): KeyValue=2;break;
                                case(0X0e):        KeyValue=3;break;
                        }
                        //²âÊÔÐÐ
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                        {
                                case(0X70):        KeyValue=KeyValue;break;
                                case(0Xb0):        KeyValue=KeyValue+4;break;
                                case(0Xd0): KeyValue=KeyValue+8;break;
                                case(0Xe0):        KeyValue=KeyValue+12;break;
                        }
                        while((a<50)&&(GPIO_KEY!=0xf0))         //¼ì²â°´¼üËÉÊÖ¼ì²â
                        {
                                Delay10ms();
                                a++;
                        }
                }
        }
}
/*******************************************************************************
* º¯ Êý Ãû         : Delay10ms
* º¯Êý¹¦ÄÜ                   : ÑÓʱº¯Êý£¬ÑÓʱ10ms
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void Delay10ms(void)   //Îó²î 0us
{
    unsigned char a,b,c;
    for(c=10;c>0;c--)
        for(b=380;b>0;b--)
            for(a=1300;a>0;a--);
}





这是程序
回复 支持 反对

使用道具 举报

1

主题

40

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2015-3-10 19:05:03 | 显示全部楼层
这个程序贴的看不出来,不如截个屏或者上传一下工程,呵呵,不过有延时处有错误,最下面延时的程序 无符号char a,b,c 那样 a,b,c 最大255(8位字符),你给b,c赋值有问题。
回复 支持 反对

使用道具 举报

62

主题

524

回帖

0

蝴蝶豆

高级会员

最后登录
2018-8-20
 楼主| 发表于 2015-3-10 19:09:22 | 显示全部楼层
flyword 发表于 2015-3-10 19:05
这个程序贴的看不出来,不如截个屏或者上传一下工程,呵呵,不过有延时处有错误,最下面延时的程序 无符号c ...

呵呵,我已经把b,c改了,我传一个工程上去,大神帮我看看哈
回复 支持 反对

使用道具 举报

62

主题

524

回帖

0

蝴蝶豆

高级会员

最后登录
2018-8-20
 楼主| 发表于 2015-3-10 19:10:36 | 显示全部楼层
flyword 发表于 2015-3-10 19:05
这个程序贴的看不出来,不如截个屏或者上传一下工程,呵呵,不过有延时处有错误,最下面延时的程序 无符号c ...

请帮我看看

main.zip

下载

2.86 KB, 下载次数: 1, 下载积分: ST金币 -1

回复 支持 反对

使用道具 举报

1

主题

40

回帖

0

蝴蝶豆

中级会员

最后登录
1970-1-1
发表于 2015-3-10 19:45:32 | 显示全部楼层
参考这个,代码优化的问题。将代码优化等级由8降低到7,6就可以了。
https://wenku.baidu.com/link?url ... qSLgNzQm4GoYbndI8ui
回复 支持 反对

使用道具 举报

62

主题

524

回帖

0

蝴蝶豆

高级会员

最后登录
2018-8-20
 楼主| 发表于 2015-3-10 19:48:13 | 显示全部楼层
flyword 发表于 2015-3-10 19:45
参考这个,代码优化的问题。将代码优化等级由8降低到7,6就可以了。
https://wenku.baidu.com/link?url=uEHXn ...

恩恩,谢谢。
回复 支持 反对

使用道具 举报

35

主题

565

回帖

0

蝴蝶豆

金牌会员

最后登录
2015-9-16
发表于 2015-3-11 09:38:51 | 显示全部楼层
哪一行是98行呀,LZ指示一下。
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版