外部中断源初始化
- 格式:doc
- 大小:24.00 KB
- 文档页数:1
80C51 单片机外部中断初始化的步骤如下:
1. 设置中断优先级:通过设置特殊功能寄存器IP 来确定中断的优先级。
可以设置不同的优先级以确定中断的响应顺序。
2. 允许中断:通过设置特殊功能寄存器IE 来允许相应的中断源。
将对应中断源的使能位设置为1。
3. 设置触发方式:通过设置特殊功能寄存器TCON 来选择外部中断的触发方式。
可以选择低电平触发、下降沿触发或上升沿触发。
4. 配置中断向量:中断向量是指中断服务程序的入口地址。
可以通过设置特殊功能寄存器Interrupt Vector Table(中断向量表)来指定中断服务程序的入口地址。
这些步骤是80C51 单片机外部中断初始化的一般流程。
具体的实现方式可能会因不同的单片机型号和编译器而有所差异。
在实际编程中,还需要根据具体的需求和硬件连接来进行相应的配置。
外部中断函数外部中断是指由外部硬件设备所产生的中断信号,如输入输出设备、定时设备等。
当外部中断信号发生时,CPU会停止执行当前程序,并跳转到外部中断服务程序(一般称为中断向量表)执行,以响应外部设备的请求和处理。
外部中断函数一般包括以下几个方面的内容:1. 中断初始化中断初始化主要包括对中断控制寄存器的设置和中断向量表的初始化。
中断控制寄存器包括一些位控制器(如中断请求使能、嵌套中断控制等),一般需要根据具体的中断请求设置相关寄存器。
中断向量表是用来保存每个中断源对应的中断处理函数。
在初始化过程中,需要将中断向量表的每个位置初始化为相应中断源的处理函数地址。
2. 中断服务程序的编写中断服务程序是处理具体中断请求的程序。
它在中断向量表中的地址被启动后,会促使CPU在中断响应后立即执行。
因此,中断服务程序需要尽可能地短小精悍,以避免在中断响应期间对系统的影响。
中断服务程序设计的最终目的是尽可能快地处理中断请求,并返回正常程序执行。
3. 中断嵌套控制中断嵌套控制用来控制多个中断请求同时发生的情况。
由于每个中断源的中断优先级不同,因此需要对中断响应的优先级进行设置。
在高优先级中断程序执行时(如定时器),如果产生低优先级的中断需求,则可以设置相应的“屏蔽位”来延迟该中断请求的响应,以确保高优先级中断程序能够及时地执行完毕。
4. 中断清除和退出中断清除是指在中断处理过程中统计计数器、设置标志位、清除中断请求等操作。
中断退出是实现程序从中断服务程序恢复到主程序执行之前所必需的工作。
中断退出需要处理相关寄存器、栈指针、状态字等。
在退出中断时,还需要确保中断响应已结束并将执行权转交给主程序。
总之,外部中断函数是嵌入式系统中非常重要的一部分,尤其是对于实时控制系统来说。
外部中断的正确设置和处理,可以极大地提高嵌入式系统对外界环境的响应能力,为系统的稳定性和实时性提供有力保障。
单片机中断系统总结1.其中当IE0,TF0,IE1,TF1,它们在TCON中的值为1时就会向CPU提出中断申请。
2.IT0和IT1是电平选择有效方式,1时是下降沿有效,0时是低电平有效。
3.INT0引脚接的是外面的中断信号,当其为有效电平时,IE0在TCON的值置1,向CPU 申请中断。
4.TCON是中断请求标志:5.IE是中断允许寄存器:6.中断源:7.8.中断处理过程9.中断初始化主要就是设定上面的三个问题以外部为中断源的外部中断的初始化EA=1;EX0=1;IT0=0;Void external () interrupt0{}定时中断的初始化TMOD=0x01TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;Void timer() interrupt 1{}TMOD定时特殊控制寄存器GATE:是门控信号,用于控制定时器的启动是否受外部中断源信号的影响。
当GATE=0时只要使TCON种TR0或者TR1为1就可以选择那个定时器工作了。
当GATE=1时,不仅要设置TR0或TR1的值,外部引脚INT0/1也为高电平是才可以申请中断。
C/T:定时/计数模式选择位。
C/T=0为定时模式;C/T=1时为计数模式。
M1和M0:工作方式设置位。
定时/计数器有四种工作方式。
TCONTF1:T1溢出中断请求标志位。
T1计数溢出时由硬件自动置TF1为1。
CPU响应中断后TF1由硬件自动清零。
T1工作时,CPU可随时查询TF1的状态。
TR1:T1运行控制位,TR1置1时,T1开始工作;TR1置0是T1停止工作。
TR1由软件置1或者置0。
所以用软件可以控制定时/计数器的启动与停止。
TF0和TR与上类似。
定时器的中断方式以串口行为中断源的串口中断1.SM0和SM1为工作选择方式,有四种工作方式。
2.SM23.REN是控制串行的接收位,当REN=1是,则启动串行口的接收。
CC2530外部中断⼀、中断基础概念内核与外设之间的主要交互⽅式有两种:轮询和中断。
中断系统使得内核具备了应对突发事件的能⼒。
在执⾏CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执⾏的程序,转⽽去执⾏另外⼀段特殊程序来处理出现的紧急事务,处理结束后,CPU⾃动返回到原来暂停的程序中去继续执⾏。
这种程序在执⾏过程中由于外界的原因⽽被中间打断的情况,称为中断。
采⽤中断技术后,可以为计算机系统带来以下好处:1)实现分时操作速度较快的CPU和速度较慢的外设可以各做各的事情,外设可以在完成⼯作后再与CPU进⾏交互,⽽不需要CPU去等待外设完成⼯作,能够有效提⾼CPU的⼯作效率。
2)实现实时处理在控制过程中,CPU能够根据当时情况及时做出反应,实现实时控制的要求。
3)实现异常处理系统在运⾏过程中往往会出现⼀些异常情况,中断系统能够保证CPU及时知道出现的异常,以便CPU去解决这些异常,避免整个系统出现⼤的问题。
两个重要的概念:<1> 中断服务函数:内核响应中断后执⾏的相应处理程序。
例如ADC转换完成中断被响应后,CPU执⾏相应的中断服务函数,该函数实现的功能⼀般是从ADC结果寄存器中取⾛并使⽤转换好的数据。
<2> 中断向量:中断服务程序的⼊⼝地址,当CPU响应中断请求时,会跳转到该地址去执⾏代码。
⼆、 CC2530中断CC2530具有18个中断源,每个中断源都有它⾃⼰的位于⼀系列SFR 寄存器中的中断请求标志。
相应标志位请求的每个中断可以分别使能或禁⽤。
Tip:(1)当调⽤中断服务例程时清除硬件。
(2)另外的 IRQ 掩码和 IRQ 标志位存在。
三、CC2530中断处理函数格式书写中断服务函数与⼀般⾃定义函数不同,有特定的书写格式:#pragma vector = 中断向量__interrupt void 函数名称(void){/*此处编写中断处理函数的具体程序*/PxIFG = 0; //先清除Px引脚的中断状态标志位PxIF = 0; //再清除Px端⼝组的中断状态标志位}<1> 在每⼀个中断服务函数之前,都要加上⼀句起始语句:#pragma vector = <中断向量><中断向量>表⽰接下来要写的中断服务函数是为那个中断源服务的,该语句有两种写法:#pragma vector = 0x7B或者#pragma vector = P1INT_VECTOR前者是中断向量的⼊⼝地址,后者是头⽂件“ioCC2530.h”中的宏定义。
单片机中断一、Interrupt 0——外部中断:初始化为:EA=1;(开启中断)IT=0;(电平触发方式,IT=1表示下降沿等边沿式触发)EX0=1;(允许中断)例子:#include<reg51.h>#include<intrins.h>sbit P3_0=P3^0;int i;void main( ){… …IT0=0; //设为电平触发方式EA=1; //CPU开放中断EX0=1; //允许中断… …}void int_0( ) interrupt 0 {P3_0=0; //由P3.0输出0_nop_( );_nop_( );P3_0=1; //由P3.0输出1,撤除i=P1; //输入数据… …}二、Interrupt 1——定时器T0溢出:1、初始化:1)、TR0=1;(启动定时器T0)EA=1;(开启中断)ET0=1;(允许T0中断)2)、对于时间的计算:对于晶振为12Mhz的单片机,其一个周期为1微秒。
方式0:TCON D7D0所以这是由十三位计数器组成的,计算方法为:)t/N (213周期注:=-=N X TMOD=OX00;方式1:所以这是由16位计数器组成的,其计算方法为: 例:TMOD=OX01;TH0=(N -65536)/256; TL0=(N -65536)%256; 同理N=t/晶振周期 方式2:TCON D7D0TCON D7D016X=2-N这是8位计数器,计算方法如下:N=82(N=t/晶振周期)X-方式2特别适合于较精确的脉冲信号发生器。
此时TMOD=OX06;例如,利用T0扩展一个外部中断源。
将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。
程序为:TMOD=0x06;//置T0为计数器方式2TL0=0x0FF;//置计数初值TH0=0x0FF;TR0=1;//启动T0工作EA=1;//CPU开中断ET0=1;//允许T0中断对于方式3一般不用所以这里暂不介绍了。
一、填空1.KeiL C51软件中,工程文件的扩展名是___UV2_______,编译连接后生成可烧写的文件扩展名是___HEX_________。
2.C51支持的指针有一般指针和存储器指针。
3.C51中,没有专门的循环语句,我们可以用函数____ crol _____完成一个字节的循环左移,用__ _irol_ ___完成二个字节的循环左移。
4.C51的基本数据类型有位型、字符型、整型、长整型、浮点型、双精度浮点型。
5.C51的存储类型有data 、bdata 、idata 、pdata 、xdata 、code 。
6.C51的存储模式有SMALL 、COMPACT 和LARGE 。
7.C51程序与其他语言程序一样,程序结构也分为顺序结构、选择结构、循环结构三种。
8.C51中int型变量的长度为 4位,其值域为0~65535 。
9.C51中关键字sfr的作用定义8位特殊功能寄存器,sbit的作用定义可位寻址对象,用于位寻址,从位寻址字节中定义位变量。
10.函数定义由函数首部和函数体两部分组成。
11.C51中“!”运算符的作用是逻辑运算结果值取反。
12.若函数无返回值,用void 关键字指定。
13.若局部变量未初始化,其初值为0 。
二、单项选择题:1.89S51的内部程序存储器与数据存储器容量各为多少?( C )(A)64KB、 128B ( B)4KB、64KB(C)4KB、128B (D)8KB、256B2.在8x51芯片里,哪个引脚用于控制使用内部程序存储器还是外部程序存储器?( B) P17 (A)XTAL1 (B)/EA (C)/PSEN (D)ALE3.下列哪个不是KeilC的预处理命令?(C) (A)#include(B)#define(C)#exit(D)#if4.下列哪个不是KeilC的数据类型?( B) (A)void(B)string(C)char(D)float5.在KeilC的程序里,若要指定P0口的bit3,如何编写?(C )(A)P0.3 (B)Port0.3 (C)P0^3 (D)Port^36.在8x51里,若要扩展外部存储器时,数据总线连接哪个输入/输出端口?(A )(A)P0 (B)P1 (C)P2 (D)P37.在KeilC里,判读开关状态时,使用if_else if语句与使用switch语句有何差异?(B )(A)if-else if 语句较快(B)if-else if语句有优先级(C)switch语句可判读较多开关状态(D)switch语句有优先级8.在KeilC里,中断子程序与函数有何不同?(A )(A)中断子程序不必声明(B)函数不必声明(C)中断子程序必须有形式参数(D)中断子程序一定会有返回值9.利用下列( A )关键字可以改变工作寄存器组A、interruptB、sfrC、whileD、using10.C51中一般指针变量占用( C )字节存储。
计算机原理与应用实验实验名称:外部中断实验学院:信息与通信工程学院班级:2017211113姓名:***学号:**********同组成员姓名:李凝同组成员学号:**********一、实验目的1. 掌握NVIC 中断优先级配置。
2. 学会外部中断配置。
二、实验原理及内容(一)实验原理电路结构如图3.1 所示1. NVIC 中断优先级NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。
但是各个芯片厂商在设计芯片的时候会对Cortex-M4 内核里面的NVIC 进行裁剪,把不需要的部分去掉,所以说STM32 的NVIC 是Cortex-M4 的NVIC 的一个子集。
CM4 内核可以支持256个中断,包括16个内核中断和240个外部中断,256 级的可编程中断设置。
对于STM32F4 没有用到CM4 内核的所有东西,只是用到了一部分,对于STM32F40 和41 系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断。
ISER[8]—中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82 个可屏蔽的中断,因此利用ISER[0~2]这三个32 位寄存器就够了。
一下的几个寄存器同理。
ICER[8]—中断除能寄存器组,用来消除中断。
ISPR[8]—中断挂起控制寄存器组,用来挂起中断。
ICPR[8]—中断解挂控制寄存器组,用来解除挂起。
IABR[8]—中断激活标志寄存器组,对应位如果为1 则表示中断正在被执行。
IP[240]—中断优先级控制寄存器组,它是用来设置中断优先级的。
我们只用到了IP[0]~IP[81],每个寄存器只用到了高4 位,这4 位又用来设置抢占优先级和响应优先级(有关抢占优先级和响应优先级后面会介绍到),而对于抢占优先级和响应优先级各占多少位则由AIRCR 寄存器控制,相关设置如表 3.1 所示。
stm32外部中断的使⽤(含实例)中断对于开发嵌⼊式系统来讲的地位绝对是⽏庸置疑的,在C51单⽚机时代,⼀共只有5个中断,其中2个外部中断,2个定时/计数器中断和⼀个串⼝中断,但是在STM32中,中断数量⼤⼤增加,⽽且中断的设置也更加复杂。
今天就将来探讨⼀下关于STM32中的中断系统。
1 基本概念ARM Coetex-M3内核共⽀持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置。
STM32⽬前⽀持的中断共84个(16个内部+68个外部),还有16级可编程的中断优先级的设置,仅使⽤中断优先级设置8bit中的⾼4位。
STM32可⽀持68个中断通道,已经固定分配给相应的外部设备,每个中断通道都具备⾃⼰的中断优先级控制字节PRI_n(8位,但是STM32中只使⽤4位,⾼4位有效),每4个通道的8位中断优先级控制字构成⼀个32位的优先级寄存器。
68个通道的优先级控制字⾄少构成17个32位的优先级寄存器。
4bit的中断优先级可以分成2组,从⾼位看,前⾯定义的是抢占式优先级,后⾯是响应优先级。
按照这种分组,4bit⼀共可以分成5组第0组:所有4bit⽤于指定响应优先级;第1组:最⾼1位⽤于指定抢占式优先级,后⾯3位⽤于指定响应优先级;第2组:最⾼2位⽤于指定抢占式优先级,后⾯2位⽤于指定响应优先级;第3组:最⾼3位⽤于指定抢占式优先级,后⾯1位⽤于指定响应优先级;第4组:所有4位⽤于指定抢占式优先级。
所谓抢占式优先级和响应优先级,他们之间的关系是:具有⾼抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套。
当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当⼀个中断到来后,如果正在处理另⼀个中断,这个后到来的中断就要等到前⼀个中断处理完之后才能被处理。
如果这两个中断同时到达,则中断控制器根据他们的响应优先级⾼低来决定先处理哪⼀个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪⼀个。
外部中断源初始化
1、开始中断和相应子中断
2、设置中断优先级
3、设置中断触发方式
Pcb设计流程
1:设计目标,比如草图,器件的资料
2:原理图封装准备,库里有的可以直接用,没有的直接绘制图形,最好有自己的库文件,可以再利用。
3:原理图绘制,将所需器件都摆放好,连线
4:原理图检查,这个很重要,比如有没有连错,标号调整,
封装制定等等,有些软件有DRC功能
5:以上无误则可以进行下一步
6:PCB封装准备,这一步有可能在第2步时候同时进行
7:板框准备,将器件从原理图或网络表里导入到pcb软件里面,并设置设计规则
8:布局,好的布局很重要,然后布线
9:敷铜,检查
10:生产文档准备,如器件列表,贴装图,gerber等。