P3.2的按键作为外部中断了,实现计数功能,所以,那个延时子程序没有用了。
关键问题是,凡是中断程序中所用的变量,要定义为全局变量。修改的程序如下。
#include
#define uint unsigned int
#define uchar unsigned char
uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//你0的段码错误了
uchar i=0; //凡是中断程序用到的变量,一律定义为全局变量,而且不用定义成 unsigned int 型的变量。
/*
void delay()//延时子程序没有用,注释掉
{
uchar i,j;
for(i=0;i<255;i--)
for(j=0;j<255;j--);
}
*/
void main(void)
{
//uint i;//删掉
while(1)
{
EA=1;
EX0=1;
IT0=1;
P1=seg[i];
}
}
void int0() interrupt 0 using 1
{ //uint i;//删掉
i++;
if(i==10)
i=0;
}
仿真结果如下
把变量i作为全局变量