|
我用的是AT89S52的片,把下边的程序烧进去后,只要进了中断就出不来了是怎么会事啊,出不来还好,灯还在哪瞎闪,希望大家帮帮我啊
#include
/*
本源程序有三种跑马灯的方式:
第一种:8个LED灯同时闪亮
第二种:3个LED灯自0到7跑步走
第三种:0号LED灯来回跑
触发方式:
其中第一种方式为默认跑等方式
第二种跑灯方式由外部中断0来触发
第三种跑灯反式由外部中断1来触发
*/
/**************函数声明*****************/
void timelag(unsigned int n);//延时子程序
/***************************************/
void main()
{
IE=0x84; //打开中断总开关
EX0=1;//打开中断0
PX1=1;
/*选择触发方式为边沿触发方式*/
IT0=0;
IT1=0;
while(1)//跑等方式1
{
P1=0xFF;//全部熄灭
timelag(2);
P1=0;//全部点亮
timelag(2);
}
}
/*
//中断0的服务程序
void discontinue0(void) interrupt 0 using 1//中断0服务程序选择寄存器组1
{
unsigned int run_style2[11]={0xFF,0xFE,0xFC,0xF8,0xF1,0xE3,0xC7,0x8F,0x1F,0x3F,0x7F};
unsigned int i;//循环变量
for(i=0;i<5;i++)
{
for(i=0;i<11;i++)
{
P1=run_style2;
timelag(2);
}
}
IE0=0;
}
*/
//中断1的服务程序
void discontinue1() interrupt 2 using 2//中断1服务程序选择寄存器组2
{
//unsigned int run_style3[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
//unsigned int i,j,n;
P1=0xFF;//先全部熄灭
timelag(10);
/*
for(n=0;n<10;n++)//控制跑的圈数
{
for(i=0;i<8;i++)
{
P1=run_style3;
timelag(2);
}
for(j=6;j>=0;j--)
{
P1=run_style3[j];
timelag(2);
}
}
*/
}
void timelag(unsigned int n)//延时子程序
{
unsigned int i,j;
for(i=0;i
for(j=0;j<30000;j++);
}
|
|