函數(shù)功能:數(shù)碼管(P2口)不斷顯示0~9,按K1(P3^2)暫停,K2(P3^3)繼續(xù)。
問題有二:
(1)第一次按K1,暫停,K2開始。之后兩個(gè)鍵均失效;
(2)按理說暫停-開始后數(shù)碼管應(yīng)該從暫停前的那個(gè)數(shù)繼續(xù)顯示,可實(shí)際上是從0重新開始計(jì)數(shù)。
請各位賜教,不勝感激。
代碼和preteus圖如下。
#include <reg52.h>
#define uchar unsigned char
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管共陽編碼
bit button=1;
bit jumpout=0;//低優(yōu)先級中斷跳出標(biāo)志,用于暫停
void delay(int time)
{
uchar i,j;
for(i=0;i<time;i++)
for(j=0;j<i;j++);
}
void int1()interrupt 1
{
jumpout=1;//低優(yōu)先級跳出
}
void int0()interrupt 0
{
while(jumpout==0)//在此循環(huán)
{
}
jumpout=0;//重新賦值,下次中斷依然可以暫停循環(huán)
}
void init()
{
EA=1;
IT0=0;//低電平沿觸發(fā)
EX0=1;
PX0=0;//低優(yōu)先級
IT1=0;
EX1=1;
PX1=1;//高優(yōu)先級
}
void main()
{
uchar i;
init();
while(1)
{
//if(button==1)
{
for(i=0;i<10;i++)
{
P2=table[i];
delay(250);
}
}
}
}
|