文章开始前,我们先了解一下中断,中断是指计算机在执行某段程序中,由计算机系统内,外的某个原因,要求CPU暂时中断当前程序而转去执行相应程序,待处理系统执行完毕后,再返回继续执行原来被中断的程序。
中断的设置可以让我们进行(中断的优点)
(1)分时操作,中断可以解决CPU和外设的矛盾,可以启动多个外设进行工作,大大提高CPU的效率
(2)实时处理,在实际中参数会随着现场变化,如果中断条件满足,CPU就会马上去处理
(3)故障处理,针对难以预料的情况可以通过中断系统向CPU发出中断请求,从而实现实时处理
我们使用的MCS-51单片机有32个中断,从0到31,也就是我们使用interrupt可以使用从0到31的数,这里我们介绍一下函数
(1)Interrupt n :表面将函数声明为中断函数也就是我们使用了就会继承中断
(2)Using m:定义函数所使用的工作寄存组,m的取值为1到3
这次我们用到的主要是T0,T1.这两个计数器是16位计数器我们通常使用这两个。
电路图如图
我们打出如下代码:
#include<reg51.h>
sbit P1_0 = P1^0;
unsigned char Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};
int i = 0;
int j = 0;
int k = 0;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
void Initd() interrupt 0 //??
{
while(1)
{
i=0;
j=0;
k=0;
P2=Table[j];
P1=Table[i];
if(P3_2==1) break;
}
}
void Initd2() interrupt 2 //??
{
TR0=0;
while(1)
{
if(P3_3==1) break;
}
TR0=1;
}
void main(){
EA=1;
IT0=0;
EX0=1;
IT1=0;
EX1=1;
TMOD = 0x01;
TH0=0xFC;
TL0=0x18;
TR0 =1;
P1 = Table[i];
P2 = Table[j];
while(1){
i++;
if(i == 10){
k++;
}
if(k == 10){
j++;
}
P1 = Table[k];
P2 = Table[j];
while(!TF0){}
}
}