AVR键盘与数码管的问题

2019-07-16 03:39发布

想实现的功能是按下一个独立键盘,数码管就加一。但是现在的代码实现的是,程序一开始,数字就不停在变化,按下键盘,定在某一位。代码是从51MCU改过来的。希望大神们指点一下。
#include<iom16v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
#define led_1 PORTC&=~BIT(7)
#define key_1 PINB&=BIT(4)
uchar const table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,};
uchar num,i;
void delay(uint z)
{
         uint x,y;
         for(x=z;x>0;x--)
                for(y=1140;y>0;y--);
}
void main()
{
         DDRC=0XFF;
         PORTC=0XFF;
         DDRB=~BIT(4);
         PORTB|=BIT(4);
         DDRA=0XFF;
         PORTA=0XFF;
         led_1;
         while(1)
         {
                           if((key_1&0x08)==0)
                         {
                                          delay(15);
                                        if((key_1&0x08)==0)
                                        {
                                                i=1;
                                                num++;
                                            if(num==10)
                                                num=0;
                                        }
                                        while(!(key_1&0x10));
                         }
                         PORTA=table[num];
         }
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。