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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版