单片机stc89c52与数码管

数码管的数不停得循环怎么加外部中断按键程序,按一下让它停留在当前的位置,然后再按一下按键就继续循环下去。下面是我写的程序。请大侠帮帮。
#include<reg52.h>
void delay();
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};
main()
{
unsigned char i;
while(1)
{
for(i=0;i<10;i++)
{
P1=table[i];
delay();
}
}
}
void delay()
{
unsigned int i;
for(i=0;i<30000;i++);
}

//我试试

#include<reg52.h>
void delay();
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};

bit StopFlag;//中断标志

main()
{
unsigned char i;
StopFlag = 0;

EA=1; //打开总中断
IT0=1;
EX0=1; //开外部中断1

void INT0_() interrupt 0 // 外部中断服务函数
{
EA=0; //关闭外部中断
StopFlag = ~StopFlag;//标志位取反
EA=1;

while(1)
{
for(i=0;i<10;i++)
{
P1=table[i];
delay();
while(StopFlag);//若有中断则停在此处
}
}
}
void delay()
{
unsigned int i;
for(i=0;i<30000;i++);
}

//试试看行不行追问

很感谢你,可我重写了多次老是这样,请大侠再帮帮,是不是我的软件问题keil3.

追答

//非常不好意思,因为没有相应的硬件设备,所以没有实测,刚刚弄到keil4上编译才发现有这么多错。

//你先试试这个,若不行的话可以私信我,虽然我也是新手,但还是有点基础的
#include
void delay();
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};

bit StopFlag;//中断标志
unsigned char i;

main()
{

StopFlag = 0;

EA=1; //打开总中断
IT0=1;
EX0=1; //开外部中断1

while(1)
{
for(i=0;i<10;i++)
{
P1=table[i];
delay();
while(StopFlag);//若有中断则停在此处
}
}

}

void INT0_() interrupt 0 // 外部中断服务函数
{
EA=0; //关闭外部中断
StopFlag = ~StopFlag;//标志位取反
EA=1;
}

void delay()
{
unsigned int i;
for(i=0;i<30000;i++);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-11
首先要先定义单片机个引脚的功能,按键的(要几个)、数码管驱动的等
根据定义的功能,模块化的编写程序
相似回答