AT89S51单片机的P1口接有1个7段LED数码管,初始显示0。外部中断输入引脚INTO接有一

2020-04-21 科技 1703阅读

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 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;

}

仿真结果如下

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com