目前我的程序在摁下按键后会立马跳转到另一个图形,松开之后又会回到第一个图形,而我一共要显示三幅图形我该怎么该(51单片机c语言编码)
#include<reg51.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit key1 = P3^1;
sbit RCLK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;
u8 code led_H[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8 code ledL_I[] = {0x00,0x81,0x81,0xff,0xff,0x81,0x81,0x00};
u8 code ledL_LOVE[] = {0x30,0x48,0x82,0x41,0x41,0x82,0x48,0x30};
u8 code ledL_U[] = {0x00,0xff,0xff,0x03,0x03,0xff,0xff,0x00};
u8 flag;
void delay(u16 i)
{
while(i--)
{
}
}
void HC595(u8 dat)
{
u8 a;
RCLK = 0;
SRCLK = 0;
for(a=0;a<8;a++)
{
SER = dat>>7;
dat <<= 1;
SRCLK = 1;
_nop_();
_nop_();
SRCLK = 0;
}
RCLK = 1;
_nop_();
_nop_();
RCLK = 0;
}
void Int0_init()
{
EA = 1;
IT0 = 1;
EX0 = 1;
}
void main()
{
Int0_init();
while(1)
{
u8 j;
if (flag == 0)
{
for (j = 0; j < 8; j++)
{
HC595(ledL_I[j]);
P0 = led_H[j];
delay(100);
HC595(0x00);
}
}
else if (flag == 1)
{
for (j = 0; j < 8; j++)
{
HC595(ledL_LOVE[j]);
P0 = led_H[j];
delay(100);
}
}
else if (flag == 2)
{
for (j = 0; j < 8; j++)
{
HC595(ledL_U[j]);
P0 = led_H[j];
delay(100);
HC595(0x00);
}
}
}
}
void INT() interrupt 0
{
flag = 0;
delay(1000);
if(key1==0)
{
flag++;
flag = 1;
if(flag==3)
{
flag = 0;
}
}
}