C51 中断 个人笔记
总架构图

IE寄存器
控制各个中断源的屏蔽与允许

TCON寄存器
各个中断源的请求标志位&有效信号的规定

中断源及其优先级
中断号写程序的时候要用


CPU处理中断三原则
1.CPU同时接收到几个中断时,首先响应优先级别最高的中断请求。
2.正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
3.正在进行的低优先级中断服务,能被高优先级中断请求所中断。
中断响应条件
- 中断源有中断请求;
 - 此中断源的中断允许位为1;
 - CPU开中断(即EA=1)。
 
代码写法
main函数中:
//以外部中断0为例
EA=1;//打开总中断开关
EX0=1;//允许外部中断0 (或其他中断源对应的允许位)
IT0=0/1;//设置外部中断的触发方式(或其他中断源)
中断服务函数
模板:
void 函数名 ()  interrupt 中断号
{
do anything that you want
}
例子:
void  int0  ()  interrupt  0
{
do anything that you want
}
外部中断0 控制led灯
#include <reg51.h>
#define u16 int
#define u8 unsigned char
#define delaytime 500000
sbit led = P0^0;
sbit k = P3^2;			   //p32 用导线连接一个独立按键,按下按键时led状态发生改变
void delay(u16 i)
{
    while(i--);
}
void Int0Init()
{
	 IT0 = 1;	//触发方式为下降沿有效
	 EX0 = 1;	//中断0 允许
	 EA = 1; 	//总开关
}
void main(void)
{
    Int0Init();
    while(1);
}
//外部中断0的调用程序
void Int0() interrupt 0			  //	P3^2 下降沿调用
{
	delay(1000);
	if(k == 0)					  //延迟10ms仍然按下(防抖)
	{
		led = ~led;
	}
}
												
											C51 中断 个人笔记的更多相关文章
- C51编译器扩展的关键词 & C51中断函数的写法
		
C51根据单片机的特性扩展了相关的关键字,如下表示: 关键词 用途 说明 bit 位变量声明 声明了一个位变量或者位类型的函数 sbit 位变量声明 声明了一个可位寻址变量 sfr 特殊功能寄存器声明 ...
 - nterrupt 和 using 在C51中断中的使用
		
8051系列MCU的基本结构包括:32个I/O口(4 组8bit 端口):两个16位定时计数器:全双工串行通信:6个中断源(2个外部中断.2个定时/计数器中断.1个串口输入/输出中断),两级中断优先级 ...
 - LINUX中断学习笔记【转】
		
转自:http://blog.chinaunix.net/uid-14825809-id-2381330.html 1.中断的注册与释放: 在 , 实现中断注册接口: int request_irq( ...
 - 创龙TMS320C6748开发板串口和中断学习笔记
		
1. 硬件上,底板有2个串口,UART1和UART2(使用了MAX3232电平转换芯片),其中UART2也可以转RS485的. 2. 看下数据手册部分,不过一直不理解过采样的意思,16字节的FIFO ...
 - STM32F407 外部中断 个人笔记
		
IO口 STM32F4有上百个IO口中,每个都可以作为外部中断输入 中断线 STM32F4的中断控制器支持22个外部中断/事件请求(中断线) 对于每个中断线,我们可以设置相应的触发方式(上升沿触发,下 ...
 - C51 继电器 个人笔记
		
一句话 小电流控制大电流的开关. 电路图 给J2端口一个低电平,三极管导通,线圈吸合 一般用P1^4口连接 #include <reg51.h> #define u16 unsigned ...
 - C51 蜂鸣器 个人笔记
		
音调:频率 音量:高低电平占空比 有源:上面没有加号,只需高低电平即可发声 无源:上面有加号,不仅要电平,还要, 的频率 这里的有源不是指电源的"源",而是指有没有自带震荡电路,有 ...
 - C51 定时器/计数器 个人笔记
		
C51的周期 结构图 两个功能寄存器 51单片机定时/计数器的工作由两个特殊功能寄存器控制.TMOD用于设置其工作方式:TCON用于控制其启动和中断申请. 工作方式寄存器TMOD 其中方式一和方式二常 ...
 - C51学习笔记
		
转自:http://blog.csdn.net/gongyuan073/article/details/7856878 单片机C51学习笔记 一, C51内存结构深度剖析 二, reg51.头 ...
 
随机推荐
- 暑期训练狂刷系列——Hdu 3506 Largest Rectangle in a Histogram (单调栈)
			
题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=1506 题目大意: 给出一个数列An,问以Ai为最小值的区间内有多少个元素? 解题思路: 手动模拟一个 ...
 - Sign on Fence CodeForces - 484E
			
http://codeforces.com/problemset/problem/484/E 题意: 给定一个长度为n的数列,有m次询问,询问形如l r k 要你在区间[l,r]内选一个长度为k的区间 ...
 - css超出部分显示省略号
			
单行文本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
 - [转][ASP.NET MVC]如何定制Numeric属性/字段验证消息
			
本文转自:http://www.cnblogs.com/artech/archive/2012/02/13/NumericPropertyValidation.html 对于一个Numeric属性/字 ...
 - c#中stringbuilder的方法总结
			
String 对象是不可改变的.每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新 ...
 - SpringMVC -- 必知必会
			
SpringMVC基于模型--视图--控制器(Model-View-Controller,MVC)模式实现,属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面.它通 ...
 - P1062 数列
			
题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是 ...
 - DELL笔记本安装Ubuntu 14.04
			
1. 将制作好的USB启动盘插入电脑,按f2进入启动选择选项,选择U盘启动: 进入选择界面后讲光标移动到"install Ubuntu"选项,按'e'进入grub界面,将倒数第二行 ...
 - Android开发——蓝牙
			
---恢复内容开始--- 前言 孤芳自赏,一揽芳华: 人情冷暖,自在人心: 登高远眺,望步止前: 喜笑言开,欺人骗己. 上篇文章介绍了基本的蓝牙使用,书写的demo也不是很完善,希望各位大神能够改正. ...
 - install nginx error
			
the error info : the HTTP gzip module requires the zlib library.You can either disable the module by ...