关于一中断服务程序,略有不懂,新手求教~!

2019-07-15 20:38发布

整个程序的框架、功能(实现不同按键控制不同的功能并且在数码管上显示功能号“0001~0004”)我都看懂了。但是对于中断服务程序1(红 {MOD}部分)对整个系统来说有什么意义,我始终不明白。求大神指教~!     PS :为了简化已经删去部分函数的内容,。

/*******头文件*********/
#include"reg51.h"
#include"absacc.h"
/*****数码管断码*******/
unsigned char code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
/*****全局变量*********/
int keyval;
/*****端口定义****/
sfr key=0XB0;
sbit S4=P3^5;
sbit S3=P3^4;
sbit S2=P3^3;
sbit S1=P3^2;
sbit SPEAKER =P2^4;
sbit RELAY=P2^6;
/************按键消抖延时******/
void delay(void)
{

}
/************数码管显示********/
void display(int k)
{       
              P0=tab[k/1000];
    P2=0Xfe;
        delay();
        P0=tab[k%1000/100];
        P2=0xfd;
        delay();
        P0=tab[k%100/10];
        P2=0xfb;
        delay();
        P0=tab[k%10];
        P2=0xf7;
        delay();
        P2=0xff;
}
/***********LED闪动延时********/
void leddelay()
{   
}
/***********LED闪动*****/
void ledflash()
{


}
/*********led流水灯******/
void ledflow(void)
{

}
/*********继电器吸合**********/
void relayon(void)
{
}
/********主程序**************/
void main(void)
{
    keyval=0;
        key=0xff;
        P2=0xff;
        P0=0xff;
/*******定时器初始化*****/
    EA=1;
        ET0=1;
        ET1=1;
        TMOD=0X11;
        TH0=-10000/256;
        TL0=-10000%256;
        TH1=-100/256;
        TL1=-100%256;
        TR0=1;
        TR1=1;
        while(1)
        {
            display(keyval);
            if(keyval==1)
              ledflash();
            if(keyval==2)
              ledflow();
            if(keyval==3)
              relayon();
            if(keyval==4)
                  ledflash();
                display(keyval);
        }
}
/*********中断服务程序1**********/
void intsrv1(void) interrupt 1 using 1
{
    TR0=0;
        display(keyval);
        TH0=-10000/256;
        TL0=-10000%256;
        TR0=1;
}

void intserv3(void) interrupt 3 using 3
{
    TR1=0;
        if((key&0x3c)!=0x3c)
          delay();
        if((key&0x3c)!=0x3c)
        {
           if(S1==0)
             keyval=1;
           if(S2==0)
             keyval=2;
           if(S3==0)
             keyval=3;
           if(S4==0)
             keyval=4;
        }
                TH1=-100/256;
        TL1=-100%256;
        TR1=1;
}












友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。