要求点阵屏依次循环显示0-9。利用外部中断控制,K1按键按下时,停止循环,再次按下时,继续之前的循环,之后以此反复处于。
下面是我的程序,怎么实现按键按下时,停止循环,再次按下时,继续之前的循环呀?改了很多次都不行。求各位大佬告知,谢谢!
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
#define out1 P1
#define out0 P0sbit K1=P3^2;
uchar i,j,n;
void delay(uint i)
{
uchar t;
while(i--)
{ for(t=0;t<10;t++); }}
uchar code string_up[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xC3,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xC3,0xE7,0xEB,0xEF,0xEF,0xEF,0xEF,0xEF,0xC3,0xC3,0xDF,0xDF,0xDF,0xC3,0xFB,0xFB,0xC3,0xC3,0xDF,0xDF,0xC3,0xDF,0xDF,0xDF,0xC3,0xDB,0xDB,0xDB,0xC3,0xDF,0xDF,0xDF,0xDF,0xC3,0xFB,0xFB,0xC3,0xDF,0xDF,0xDF,0xC3,0xC3,0xFB,0xFB,0xC3,0xDB,0xDB,0xDB,0xC3,0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xC3,0xDB,0xDB,0xC3,0xDB,0xDB,0xDB,0xC3,0xC3,0xDB,0xDB,0xC3,0xDF,0xDF,0xDF,0xC3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,};
void main (void){
EA=1; EX0=1; EX1=1; IT0=1; IT1=1; PX0=0; PX1=1;
while(1){
if(K1==1){
for(;;)
for(j=1;j<11;j++)
{ for(n=0;n<40;n++)
{
for(i=0;i<8;i++)
{ out1=i; out0=string_up[8*j+i];
delay(4); out0=0xff; } } } }
if (K1==0) break; } }
void int0_isr(void) interrupt 0{ //P0=~P0; // P1=~P1;//while(!K1) // P1=P1;
|