搜索
bottom↓
回复: 5

如何编写一个程序控制一个全局变量的加减

[复制链接]

出0入0汤圆

发表于 2013-4-16 20:10:44 | 显示全部楼层 |阅读模式
请教各位,我想用一个按键控制全局变量 K  的加减,然后通过判断K的不同值来分别执行不同的子程序,
小弟初步写的程序如下,感觉按键按下是否有效是随机的,请大家帮忙看看,给点建议

#include <iom16v.h>
#include <macros.h>

#define uchar unsigned char
#define uint unsigned int

uint k=0,flag=0;

//uchar step_F[8]={0x08,     0x09,      0x01,      0x03,      0x02,      0x06,      0x04,      0x0c};
//uchar step_F[8]={0x01,     0x05,      0x04,      0x06,      0x02,      0x0A,      0x08,      0x09};
//uchar  step_F[8]={0xf1,0xf5,0xf4,0xf6,0xf2,0xfa,0xf8,0xf9}; //两相四线码表正转
//uchar code mm[]={0xf9,0xf8,0xfa,0xf2,0xf6,0xf4,0xf5,0xf1};      //反转
void init_IO(void)
{
   
        DDRA=0XFF;
        PORTA=0X00;
    DDRB=0X0F;
        PORTB=0XFF;
}

void time0(void)  
{
  TCCR0 = 0x00;
  OCR0  = 255;
  TCCR0 = 0x7B;
}


void delay(uint ms)
{
int i,j;

for(j=0;j<ms;j++)
for(i=0;i<1141;i++);
  
}


void go(void)
{
OCR0=20;
PORTA=0X01;
}

void back(void)
{
OCR0=20;
PORTA=0X02;
}
void left(void)
{
OCR0=20;
PORTA=0X03;
}
uint  key(void)
{
  if((PINB&0XF0)!=0xF0)//按下按键
                {
                         if((PINB&0xF0)==0xE0)//按键1按下
                        {
                           if(!((PINB&0xF0)==0xE0))//按键1松开
                           {
                               k=k+1;
                                             
                           }
                         }
                }       
               
                return k;
                                                        
}





void main(void)
{

    flag=0;

        init_IO();
        time0();                                 
   
       
       
       
         while(1)                          
          {                                          
                key();
               
                if(k!=0)
                {
                  if(k==1)
                    go();
                  if(k==2)
                    back();
                  if(k==3)
                    left();
                  
                  }
                }
}

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-4-16 20:41:00 | 显示全部楼层
本帖最后由 easier 于 2013-4-16 20:48 编辑

void  key(void)
{
static unsigned char key_on = 0 ;

//        if((PINB&0XF0)!=0xF0)//按下按键
                {
                        if ( key_on == 0)
                       {
                                 if((PINB&0xF0)==0xE0)//按键1按下
                              {
                                   key_on = 1 ;
                              }
                        }
                      else
                      {
                         if(!((PINB&0xF0)==0xE0))//按键1松开
                           {
                               k=k+1;
                              if ( k > 3) k= 0;
                              key_on = 0 ;               
                           }
                      }
                }      
               
                                                      
}

出0入0汤圆

发表于 2013-4-16 20:51:16 | 显示全部楼层
void  key(void)
{
        if((PINB&0XF0)!=0xF0)//按下按键
                {
                       {
                                 while((PINB&0xF0)==0xE0) //按键1按下
                              {
                              } ;

                         if(!((PINB&0xF0)==0xE0))//按键1松开
                           {
                               k=k+1;
                              if ( k > 3) k= 0;
                           }
                      }
                }      
               
                                                      
}

出0入0汤圆

 楼主| 发表于 2013-4-16 21:48:09 | 显示全部楼层
if语句里面要是确定的数值就可以  要是进行x=x+1就不行   不知道为什么

出0入0汤圆

 楼主| 发表于 2013-4-16 21:49:55 | 显示全部楼层
echo8537 发表于 2013-4-16 21:48
if语句里面要是确定的数值就可以  要是进行x=x+1就不行   不知道为什么

不过还是要谢谢您帮忙

出0入0汤圆

发表于 2013-4-17 09:00:32 | 显示全部楼层
     -->  return k;

k 是全局变量 !!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-8-27 02:34

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

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