AVR键盘与数码管的问题
时间:10-02
整理:3721RD
点击:
想实现的功能是按下一个独立键盘,数码管就加一。但是现在的代码实现的是,程序一开始,数字就不停在变化,按下键盘,定在某一位。代码是从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];
}
}
#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];
}
}
没人帮忙看下么