STC51单片机中断介绍

1.关于51单片机的介绍

总体介绍:51单片机是对所有兼容Intel 8051指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

功能介绍:8位CPU·4kbytes程序存储器(ROM) (52为8K)
·128bytes的数据存储器(RAM) (52有256bytes的RAM)
·32条I/O口线·111条指令,大部分为单字节指令
·21个专用寄存器
·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
·一个全双工串行通信口
·外部数据存储器寻址空间为64kB
·外部程序存储器寻址空间为64kB
·逻辑操作位寻址功能·双列直插40PinDIP封装
·单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。

1.1中断应用背景介绍

中断是广泛应用在51或ARM单片机里用来优先执行部分代码的重要功能,其重要原因其实就是因为我们在程序设计时总会有部分功能对应程序我们想要优先去执行它,与FPGA并行不同的是在现有的微控制器中大部分都是串行执行程序的,所以中断就是一个十分天才的想法。下附中断原理图
中断工作原理图

1.2中断寄存器介绍

这里我们结合中断原理图来介绍:最外层为中断名称以及个数,中断共包括两个外部中断两个定时器中断和一个定时器中断。中断名称右边第一个的寄存器表示中断触发信号的类型。如外部中断0的INTO当IT0=0表示电平触发模式,IT0=1时表示沿触发模式。定时器触发信号时有定时器时间提供的。TCON部分为中断请求标志位在大部分中断使用时,我们不需要关心这部分寄存器。寄存器IE是各个终端的使能位,在我们使用相应的中断时就必须让相应的IE下的使能位使能,就相当于打开中断对应的开关。EA为重视能开关,当我们使用中断服务时就必须打开总使能。最后一个为优先级设定,我们知道中断是可以嵌套的也就是说中断服务里高优先级中断可以打断低优先级中断从而获得优先执行。那么在这个寄存器里打开对应的中断下的优先级那么他就会比自然优先级更高,会去优先执行已设定的哪一位中断。
中断结构原理图
IE寄存器查询表

2.中断示例

2.1程序设计

外部中断示例

#include "reg52.h"			 

typedef unsigned int u16;	 
typedef unsigned char u8;

sbit k3=P3^2; 
sbit led=P2^0;	 


void delay(u16 i)
{
	while(i--);	
}


void Int0Init()
{
	
	IT0=1;
	EX0=1;
	EA=1;	
}


void main()
{	
	Int0Init();  
	while(1);		
}


void Int0()	interrupt 0		
{
	delay(1000);	
	if(k3==0)
	{
		led=~led;
	}
}

定时器中断

#include "reg52.h"			 

typedef unsigned int u16;	  
typedef unsigned char u8;

sbit led=P2^0;	 



void Timer0Init()
{
	TMOD|=0X01;
	TH0=0XFC;	
	TL0=0X18;	
	ET0=1;
	EA=1;
	TR0=1;	
}


void main()
{	
	Timer0Init();  ¯
	while(1);		
}


void Timer0() interrupt 1
{
	static u16 i;
	TH0=0XFC;	
	TL0=0X18;
	i++;
	if(i==1000)
	{
		i=0;
		led=~led;	
	}	
}

2.2讲解

外部中断
在外部中断里进行了初始化部分设置IT0=1; EX0=1; EA=1;表示设置为沿触发模式打开中断开关然后打开总中断这样就完成了中断的初始化设定,其触发信号有开k3带来,这里deley的作用就是消抖当有开k3按键按下时程序马上跳转到终端内进行一次消抖之后确认按键按下时LED电平取反往复如此。
定时器中断在定时器中断里进行初始化设置的语句TMOD|=0X01; TH0=0XFC; TL0=0X18; ET0=1; EA=1; TR0=1;这里设置了TMOD的作用设置定时器的工作模式为模式1即设置一个16位定时器,TH0和TL0代表定时器中断0的高低8位。对其进行赋值可以设置定时器计数时常,然后打开定时器中断0并且打开总使能开关,之后打开定时器。这里要记住的是当进入中断时要重新对定时器赋值。

3.总结与心得

初次接触中断,则一定要坚持下去,打破思维固化,便是一往无前。
技术水平有限,如有错误欢迎批评指正:779163410@qq.com(本人会在闲暇时在嵌入式,集成电路,物联网互联网方面发布自己经验与心得,喜欢可以关注。谢谢。)

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木林学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值