外部中断设计实验

要求:进一步掌握8051外部中断的使用和编程方法,了解七段数码显示数字的原理,掌握用一个段锁存器、一个位锁存器同时显示多位数字的技术

实验题目:通过P1.0端口以1HZ的频率输出信号,使用该信号点亮一个LED指示灯,并将信号接入到INT1,统计中断的次数。将中断的次数通过两个七段数码管采用十进制显示出来。当超过99次后,清零并重新计数。

外部中断设计实验_第1张图片

#include
sbit P1_0=P1^0;
sbit P1_7=P1^7;
unsigned int Count=0;
code char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
time0() interrupt 1 using 1	 //T0中断服务
{
   P1_7=!P1_7;
   TH0=-50000/256;
   TL0=-50000%256;
}

time1() interrupt 3 using 2		  //T1中断服务
{
    P1_0=!P1_0;  // 第一次反向亮灯及输出1HZ频率(1s)
}

void Display()
{

  	 if(Count==100)
		Count=0;
     P0=tab[Count/10];
     P2=tab[Count%10];
     Count++;
 }

 time2() interrupt 2 using 3   //中断调用输出
{
   Display();
}

void main()
{
  P1_7=1;
  P1_0=1;               //保证第一次反向便开始计数
  TMOD=0x61;           //T0方式1定时,方式二计数
  TH0=-50000/256;          //设定计数初值
  TL0=-50000%256;
  TH1=-5;
  TL1=-5;
  IP=0x08;
  EA=1;EX1=1;IT1=1;
  ET0=1;ET1=1;
  TR0=1;TR1=1;
  while(1);
 }


你可能感兴趣的:(单片机89C51)