定时器与中断综合练习--有清零和暂停功能的计时器设计

文章开始前,我们先了解一下中断,中断是指计算机在执行某段程序中,由计算机系统内,外的某个原因,要求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){}
		}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值