外部中断0和外部中断1的应用

合集下载

单片机原理及应用(姜志海第3版)习题参考答案

单片机原理及应用(姜志海第3版)习题参考答案

……………………………………………………………最新资料推荐…………………………………………………《单片机原理及应用(第3版)》习题参考答案姜志海黄玉清刘连鑫编著电子工业出版社目录第1章概述2第2章 MCS-51系列单片机硬件结构4第3章 MCS-51系列单片机指令系统10第4章 MCS-51系列单片机汇编语言程序设计13第5章 MCS-51系列单片机硬件资源的应用19第6章 MCS-51系列单片机并行扩展接口技术错误!未定义书签。

第7章 MCS-51系列单片机串行总线扩展技术错误!未定义书签。

第8章单片机应用系统设计错误!未定义书签。

第1章概述1.简述微型计算机的结构及各部分的作用微型计算机在硬件上由运算器、控制器、存储器、输入设备及输出设备五大部分组成。

运算器是计算机处理信息的主要部分;控制器控制计算机各部件自动地、协调一致地工作;存储器是存放数据与程序的部件;输入设备用来输入数据与程序;输出设备将计算机的处理结果用数字、图形等形式表示出来。

通常把运算器、控制器、存储器这三部分称为计算机的主机,而输入、输出设备则称为计算机的外部设备(简称外设)。

由于运算器、控制器是计算机处理信息的关键部件,所以常将它们合称为中央处理单元CPU(Central Process Unit)。

2.微处理器、微型计算机、微型计算机系统有什么联系与区别?微处理器是利用微电子技术将计算机的核心部件(运算器和控制器)集中做在一块集成电路上的一个独立芯片。

它具有解释指令、执行指令和与外界交换数据的能力。

其内部包括三部分:运算器、控制器、内部寄存器阵列(工作寄存器组)。

微型计算机由CPU、存储器、输入/输出(I/O)接口电路构成,各部分芯片之间通过总线(Bus)连接。

以微型计算机为主体,配上外部输入/输出设备、电源、系统软件一起构成应用系统,称为微型计算机系统。

3.简述在微型计算机中的地址总线、数据总线和控制总线的作用。

所谓总线,就是在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。

单片机实验指导书

单片机实验指导书

目录实验一系统认识实验 (2)实验二端口I/O输入输出实验 (14)实验三外部中断实验 (17)实验四定时器实验 (21)实验五串行口通信实验 (25)实验六串行通信的调试实验 (29)实验七数码管静态显示实验 (34)实验八数码管动态显示实验 (39)实验一系统认识实验一、实验目的1.学习Keil C51编译环境的使用;2.学习STC单片机的下载软件STC-ISP的使用;3.掌握51单片机输出端口的使用方法。

二、实验内容任选单片机的一组I/O端口,连接LED发光二极管,编写程序实现8个LED按二进制加1点亮。

三、接线方案单片机P10~P17/C51单片机接L0~L7/LED显示,如下图:图1-1实验线路四、实验原理51单片机有4个8位的并行I/O端口:P0、P1、P2、P3,在不扩展存储器、I/O端口,在不使用定时器、中断、串行口时,4个并行端口,32根口线均可用作输入或输出。

作为输出时,除P0口要加上拉电阻外,其余端口与一般的并行输出接口用法相同,但作为输入端口时,必须先向该端口写“1”。

例如P0接有一个输入设备,从P0口输入数据至累加器A中,程序为:MOV P0, #0FFHMOV A, P0若将P0.0位的数据传送至C中,程序为:SETB P0.0MOV C, P0.0五、实验步骤1、连接串行通信电缆和电源线;2、根据图1-1实验线路进行电路连接;3、将C51单片机核心板上的三个开关分别拨到“独立”、“运行”“单片机”;4、打开实验箱上的电源开关。

5、利用Keil C51创建实验程序,并进行编译生成后缀为.HEX的文件;6、利用STC-ISP软件将后缀为.HEX的文件下载到单片机ROM中;7、观察实验现象,并记录。

若实验现象有误请重复第5、6步。

六、参考程序ORG 0000H ;程序的开始LJMP MAIN ;转入主程序ORG 0200H ;主程序的开始MAIN: MOV P1,#00H ;P1口做准备M1: INC P1 ;P1口连接输出计数,LCALL DELAY ;转入延时子程序LJMP M1 ;循环DELAY: MOV R5,#255 ;延时子程序D1: MOV R6,#255DJNZ R6,$DJNZ R5,D1RETEND ;程序体结束七、思考题1、利用其他I/O口实现LED加1点亮功能;2、利用P1端口实现流水灯(左移或右移)功能;3、实现LED其他点亮功能。

单片机外部中断实验报告

单片机外部中断实验报告

实验三外部中断实验报告班级:学号:姓名:教师:一、实验目的1、掌握单片机外部中断的原理及过程。

2、掌握单片机外部中断程序的设计方法。

3、掌握单片机外部中断时中断方式的选择方法。

二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管D1~D8。

每当发生外部中断时,发光二极管以向下流水灯的方式点亮。

分别选择边沿触发外部中断放是和电平触发外部中断方式两种。

三、编程提示1、P3口是8位准双向口,具有双重功能:第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0请求输入线P3.3 INT1 外部中断1请求输入线P3.4 T0定时器/计数器T0外部计数器脉冲输入线P3.5 T1定时器/计数器T1外部计数器脉冲输入线P3.6 WR外部数据存贮器写脉冲输出线P3.7 RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断0 03H定时器/计数器T1溢出中断0BH外部中断1 13H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EA ES ET1 EX1 ET0 EX0(1)外部中断源允许中断(中断0:EX0=1;中断1:EX1=1)。

(2)CPU开中断(EA=1)。

(3)外部中断方式CPU发出中断申请。

4、外部中断方式的选择控制TCON:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0IT0是选择文字则外部中断0请求(INT0)边沿触发方式或电平触发方式的控制位。

前一方式IT0=1,后一方式IT0=0。

IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。

前一方式IT1=1,后一方式IT1=0。

当8031复位后,TCON被清0。

5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。

华南理工大学单片机原理考试题及答案1

华南理工大学单片机原理考试题及答案1

华南理工大学《单片机原理及应用》试题一、填空题1、MCS-51有 5 个中断源,有 2 个中断优先级,优先级由软件填写特殊功能寄存器IP加以选择。

2、MOV PSW,#10H是将MCS-51的工作寄存器置为第2区。

3、用串口扩并口时,串行接口工作方式应选为方式0。

4、寄存器PC复位后为0000H。

5、PSW中RS1RS0=10时,R2的地址为12H。

PSW中RS1RS0=11时,R7的地址为1FH。

6、MCS-51中,T0中断服务程序入口地址为000BH。

7、80C51中断有2个优先级。

8、80C51中断嵌套最多级。

9、MCS-51单片机访问片外存贮器时,利用ALE信号锁存来自P0口的低8位地址信号。

10、12根地址线可选4K个存储单元,32KB存储单元需要15根地址线。

11、三态缓冲寄存器输出端的“三态”是指高电平态、低电平态和高阻态。

12、74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中8块芯片。

13、A/D转换器的作用是将模拟量转为数字量,D/A转换器的作用是将数字量转为模拟量。

14、单片机系统复位后,PSW=00H,因此片内RAM寄存区的当前寄存器是第0组,8个寄存器的地址为00H~07H。

15、假定SP=60H,ACC=30H,B=70H,执行下列指令:PUSH ACCPUSH B后,SP的内容为,61H单元的内容为,62H单元的内容为。

16、假定SP=62H,(61H)=30H,(62H)=70H,执行下列指令:POP DPHPOP DPL后,DPTR的内容为7030H,SP的内容为60H。

17、单片机的数据通信方式有二种,即串行方式和并行方式,其中串行方式传输距离较远,成本较低。

18、异步串行通信有单工、半双工和全双工共三种传送方向形式。

19、异步串行通信的帧格式由起始位、数据位、奇偶校验位和停止位组成。

20、波特率的含义为每秒传二进制的位数,其单位为bps。

单片机的延时与中断问题及解决方法

单片机的延时与中断问题及解决方法

单片机的延时与中断问题及解决方法在单片机程序中,常常需要延时一段时间来控制程序的执行速度或者确定某些操作的时间间隔。

延时的实现有两种方式:软件延时和硬件延时。

1. 软件延时软件延时是通过程序语句的执行来实现的,在延时期间,程序会循环执行一段指令,直到延时结束。

常用的软件延时方法有:(1)循环延时法:通过循环指令来实现延时。

要延时1ms,可以使用以下代码:```cvoid delay_ms(unsigned int ms){unsigned int i, j;for(i = ms; i > 0; i--)for(j = 110; j > 0; j--);}```该函数使用两个嵌套的循环来实现延时,每循环一次,延时约为1us(假设单片机主频为11.0592MHz)。

通过控制循环的次数,可以实现不同的延时时间。

循环延时法的延时时间会受到单片机主频的影响,如果不同的单片机主频不一样,延时的时间也会不同。

在实际应用中,需要根据实际情况进行调整。

(2)定时器延时法:使用单片机的定时器来实现延时。

定时器是一个计时设备,可以定时产生一个中断信号,我们可以利用这个中断信号来实现延时。

需要配置定时器的工作模式(如工作在定时器模式)和计时周期(如1ms或10ms)。

然后,根据定时器的中断信号来触发所需要延时的操作。

```cvoid Timer_Init(){// 配置定时器的工作模式和计时周期// ...// 启动定时器// ...// 等待定时器中断}通过使用定时器,可以实现较为精确的延时,不受单片机主频的影响。

硬件延时是通过外部硬件电路来实现的,常见的硬件延时方法有:(1)RC延时电路法:用一个RC滤波电路来实现延时。

RC滤波电路是一种低通滤波电路,可以将输入的脉冲信号变成平滑的模拟信号。

通过改变RC时间常数来调整延时时间。

但是这种方法需要额外的硬件电路,且延时精度较低。

(2)晶振延时法:通过使用外部晶振来实现延时。

单片机外部中断详解及程序

单片机外部中断详解及程序

单片机外部中断详解及程序单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态。

比如一个电子时钟,它会按时、分、秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来。

在不需要对它进行调校的时候它不需要外部干预,自主封闭地运行。

如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。

但事情往往不会如此简单,在时钟刚刚上电、或时钟需要重新校准、甚至时钟被带到了不同的时区的时候,就需要重新调校时钟,这时就要求时钟就必须具有调校功能。

因此单片机系统往往又不会是一个单纯的封闭系统,它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原由。

实际上在第二个示例演示中,就已经举过有按键输入的例子了,只不过当时使用的方法并不是外部中断,而是用程序查询的方式。

下面就用外部中断的方法来改写一下第二个示例中,通过按键来更改闪烁速度的例子(第二个例子)。

电路结构和接线不变,仅把程序改为下面的形式。

#include ;unsigned int t=500; //定义一个全局变量t,并设定初始值为500次//===========延时子函数,在8MHz晶振时约1ms=============void delay_ms(unsigned int k){unsigned int i,j;for(i=0;i<k;i++){for(j=0;j<1140;j++);}}//============主函数==================================void main( void ){DDRB = 0xFF; //设置端口B为输出方向PORTB = 0xFF; //设置端口B的输出为全高电平DDRD = 0x00; //设置端口D为输入方向PORTD = 0xFF; //设定端口D为内部上拉方式,无信号输入时处于高电平状态MCUCR = 0x0A; //设定INT0、INT1为下降沿触发GICR = 0xC0; //使能INT0、INT1中断SREG = 0x80; //使能总中断while(1){PORTB = 0x55; //让接在端口B上的LED显示01010101 delay_ms(t); //延时t个msPORTB = 0xAA; //让接在端口B上的LED显示01010101 delay_ms(t); //延时t个ms}}//============中断函数(外部0)==========================#pragma vector = INT0_vect__interrupt void INT0_Server(void){t = 100; //设定t的值为100次}//============中断函数(外部1)==========================#pragma vector = INT1_vect__interrupt void INT1_Server(void){t = 500; //设定t的值为500次}把上述程序进行编译并下载到单片机中,可以看到结果与第二个示例中的完全一致。

计算机原理实验-外部中断实验

计算机原理实验-外部中断实验

计算机原理与应用实验实验名称:外部中断实验学院:信息与通信工程学院班级: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 所示。

实验三定时器及外部中断实验

实验三定时器及外部中断实验

实验三定时器及外部中断实验一、实验目的1)熟悉VC5416的定时器工作原理。

2)掌握VC5416定时器的编程控制方法。

3)学会使用定时器的中断方式来控制程序执行方法。

4)掌握外部中断的编程控制方法,理解DSP对于中断的响应的过程。

5)了解并学习混合编程的实现方法。

二、实验设备1)计算机一套,DSP硬件仿真器一台,实验箱一台。

2)CCS4.1-CCS5.5软件版本。

3)源程序及链接命令文件见:D:\ EXPER\EXP3目录下的.asm 、.cmd、.C 和.lib文件。

三、实验步骤(一)、连接仿真器,将仿真器插接到C5416的JTAG接口上,另一头插接到电脑的USB接口上,因为仿真器是金属外壳,容易和箱子内部的电路触碰造成短路,从而对实验箱造成损坏,这个要特别注意,也不允许在机箱打开电源情况下插拔仿真器。

(二)、实验箱配置及连线:C5416DSP核心板上的SW1的1-6的开始设置为off off off off on on(上电后工做于1/2分频器方式,其它实验也按照此设置不变,我试验过改为PLL*2方式仿真器就连接不上了),SW2设置为on on on on。

将DSP核心板所在试验箱引脚连线区的BCANRX(C54的XF)引脚,与指示灯连线区LAMP的L1连接起来,这样就可以通过XF控制这个L1这个方光管的亮灭了。

将DSP核心板所在试验箱引脚连线区的INT0(C54的外部中断0输入)引脚与单脉冲按键PAULSE的P-(按下输出负脉冲)连接起来,这样按下按键时,就会给DSP的INT0中断引脚发送一个负脉冲。

连线照片见程序目录中的图片文件。

(二)、打开实验箱电源开关。

(三)、使用给定的文件,按照实验一的步骤建立实验项目,例如工作区目录为D:\ exp3 中建立一个exp3的实验项目,添加所有的给定的文件。

(四)、仿真调试方法1、通过菜单Project- Build All 对项目进行编译和链接,如下:如果有错误会出现在problem 窗口中。

单片机中断

单片机中断

单片机里面一共有两个中断,一个是中断0,一个是中断1 ,和两个定时器T0,T1,定时器就是你打开它后,它会自动数数,当数到你给它限定的值时,它就会溢出,产生中断让CPU处理IT0 声明外部中断0的类型,IT0=1是边沿触发,0是电平触发边沿触发就是当检测到外部电平发生变化,即由低变高,或者由高变低时,就会产生一个中断,电平触发就是检测到高电平或者低电平时,产生中断IE0 外部边沿触发产生中断后,它的值会变1,当CPU响应后,会自动变为0IT1 和IT0一样的含义IE1 和IT0一样的含义EX0 外部中断0控制器,EX0=1是允许外部中断,0是禁止外部中断,也就是不理会外部中断ET0 这个是定时器中断控制器,ET1=1是允许定时器产生中断,0是禁止EX1,ET1的含义跟上面的都一样。

EA 总中断控制器,1是允许有中断产生,0是禁止所有中断,就算天打雷劈也不理会PX0 外部中断0的优先级控制,假如内外都产生了中断,1就是优先处理外部中断,0就是优先处理内部中断PT0 定时器0优先级控制器,1就是优先相应定时器0PT1 定时器1优先级控制器,1就是优先相应定时器1只是普通的函数加上了interrupt X using Y 了而已,X 的取值是有规定的:如果是外部中断0的中断处理函数,则X为0即void abc() interrupt 0 using n,若是定时器0的中断处理函数,则X 为1,若是外部中断1的中断处理函数,则X 为2若是定时器1的中断处理函数,则X 为3 ,若是串口中断的中断处理函数,则X 为4,n 是中断号,取值范围为0 – 31中断寄存器单片机有10个寄存器主要与中断程序的书写控制有关1.中断允许控制寄存器IE2.定时器控制寄存器TCON3.串口控制寄存器SCON4.中断优先控制寄存器IP5.定时器工作方式控制寄存器TMOD6.定时器初值赋予寄存器(TH0/TH1,TL0/TL1)1、寄存器功能与赋值说明注:在用到中断时,必须要开总中断EA,即EA=1。

实验二、外部中断

实验二、外部中断

实验二外部中断实验一、实验目的1.掌握外部中断技术的基本使用方法2.掌握中断处理程序的编写方法二、实验原理1.外部中断的初始化设置的三项内容:中断总允许即EA=1,外部中断允许即EXi=1(i=0或1),中断方式设置。

中断方式设置一般有两种方式:电平方式和脉冲方式.2.中断服务的关键:(1)保护进入中断时的状态。

堆栈有保护断点和保护现场的功能使用PUSH,在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。

注:中断程序自动保护PC,对其做入栈操作(2)用POP指令恢复中断时的现场。

(先进后出)3.中断控制原理:中断控制是提供给用户使用的中断控制手段。

实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON 、IE 、SCON 及IP。

TCON格式SCON格式三、实验内容参考实验程序(主程序为P1口输出跑马灯程序),编写中断子程序使得发生外部中断0,且为下降沿触发时,LED灯全亮。

中断结束后LED继续接上次状态进行跑马灯闪烁。

注:注意保护现场。

且编译器不支持工作组寄存器名(R0-R7)入栈,需要对栈地址操作。

例:PUSH 06H ;把R6入栈等同 PHSHU R6四、实验步骤1.使用单片机最小应用系统1模块,P1接发光二极管,INTO接单次脉冲输出端。

2.用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。

3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加**.ASM源程序,进行编译,直到编译无误。

4.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。

五、参考程序ORG 0000HLJMP STARTORG 0030HSTART: MOV A, #0FEHOUTPUT: MOV P1,ARL AACALL DELAYLJMP OUTPUTDELAY: MOV R6,#0MOV R7,#0MOV R5#5DELAYLOOP: ;延时程序DJNZ R6,DELAYLOOPDJNZ R7,DELAYLOOPDJNZ R5,DELAYLOOP RETEND。

实验3-外部中断实验报告

实验3-外部中断实验报告

实验3-外部中断实验报告实验三 定时中断实验一、实验目的1. 掌握51单片机外部中断的应用。

2. 掌握中断函数的写法。

3. 掌握定时器的定时方法。

4. 掌握LED 数码管的显示。

二、实验内容1. 用外部中断0测量负跳变信号的累计数,同时在LED 数码管上显示出来。

2. 用外部中断改变流水灯的方式。

3. 用定时器T1的方式2控制两个LED 以不同周期闪烁。

使用定时器T1的方式2来控制P0.0、P0.1引脚的两个LED 分别以1s 和2s 的周期闪烁。

三、实验仿真硬件图在Proteus 软件中建立如下图所示仿真模型并保存。

1. 用外部中断0测量负跳变信号的累计数,同7124536812345678R2220XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122pfC222pfC310ufX112MR110kD1R3220D2R4220D3R5220D4R6220D5R7220D6R8220D7R9220D8时在LED数码管上显示出来(用中断方式做计数器)。

2.用外部中断改变流水灯的方式。

中断前:开始时,P0.0~P0.7的8个灯依次点亮。

外部中断0:P0.0~P0.7的左右4个灯闪烁亮8次外部中断1:P0.0~P0.7的8个灯间隔闪烁8次改变中断优先级和保护现场,观察运行结果四、编程提示外部中断0请求______0INT,由P3.2管脚输入,通过IT0位来决定是低电平有效还是下降沿有效。

单片机原理及应用习题答案 (第三版)

单片机原理及应用习题答案  (第三版)

第一章习题参考答案1-1:何谓单片机?与通用微机相比,两者在结构上有何异同?答:将构成计算机的基本单元电路如微处理器(CPU)、存储器、I/O接口电路和相应实时控制器件等电路集成在一块芯片上,称其为单片微型计算机,简称单片机。

单片机与通用微机相比在结构上的异同:(1)两者都有CPU,但通用微机的CPU主要面向数据处理,其发展主要围绕数据处理功能、计算速度和精度的进一步提高。

例如,现今微机的CPU都支持浮点运算,采用流水线作业,并行处理、多级高速缓冲(Cache)技术等。

CPU的主频达到数百兆赫兹(MHz),字长普遍达到32位。

单片机主要面向控制,控制中的数据类型及数据处理相对简单,所以单片机的数据处理功能比通用微机相对要弱一些,计算速度和精度也相对要低一些。

例如,现在的单片机产品的CPU大多不支持浮点运算,CPU还采用串行工作方式,其振荡频率大多在百兆赫兹范围内;在一些简单应用系统中采用4位字长的CPU,在中、小规模应用场合广泛采用8位字长单片机,在一些复杂的中、大规模的应用系统中才采用16位字长单片机,32位单片机产品目前应用得还不多。

(2) 两者都有存储器,但通用微机中存储器组织结构主要针对增大存储容量和CPU对数据的存取速度。

现今微机的内存容量达到了数百兆字节(MB),存储体系采用多体、并读技术和段、页等多种管理模式。

单片机中存储器的组织结构比较简单,存储器芯片直接挂接在单片机的总线上,CPU对存储器的读写按直接物理地址来寻址存储器单元,存储器的寻址空间一般都为64 KB。

(3) 两者都有I/O接口,但通用微机中I/O接口主要考虑标准外设(如CRT、标准键盘、鼠标、打印机、硬盘、光盘等)。

用户通过标准总线连接外设,能达到即插即用。

单片机应用系统的外设都是非标准的,且千差万别,种类很多。

单片机的I/O接口实际上是向用户提供的与外设连接的物理界面。

用户对外设的连接要设计具体的接口电路,需有熟练的接口电路设计技术。

51单片机中的中断优先级总结

51单片机中的中断优先级总结

51单片机中的中断优先级总结这段时间编写51的控制板程序,两个大牛技术指导对51中断嵌套问题的看法不一样,后来亲自验证了一下,得到了一下的一些结论,发上来大家参考,表达不清的地方还望理解,呵呵。

51单片机的中断可嵌套,但至多支持二级嵌套。

51单片机的默认(此时的IP寄存器不做设置)中断优先级为:外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断;但这种优先级只是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。

这种优先级实际上是中断同时到达的情况下,谁先得到服务的优先级,而不是可提供中断嵌套能力的优先级。

这种优先级被称为逻辑优先级。

例如:当计数器0中断和外部中断1(优先级计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断0计数器0中断。

要实现真正的嵌套形式的优先级,也即高优先级中断服务可以打断低优先级中断服务的情况,必须通过设置中断优先级寄存器IP来实现;这种优先级被称为物理优先级。

例如:设置IP = 0x10,即设置串口中断为最高优先级,则串口中断可以打断任何其他的中断服务函数实现嵌套,且只有串口中断能打断其他中断的服务函数。

若串口中断没有触发,则其他几个中断之间还是保持逻辑优先级,相互之间无法嵌套。

回复于:2009-10-26 16:09:35只要硬件堆栈足够.嵌套没有级数限制。

#4楼得分:0回复于:2009-10-28 10:57:5851只有两个优先级所以只能有两级嵌套!SEI是AVR单片机的,他没有分优先级,所以支持这种嵌套!C51中interrupt和using的用法void INT0()interrupt 0 using 1{.........}interrupt 0 指明是外部中断0;interrupt 1 指明是定时器中断0;interrupt 2 指明是外部中断1;interrupt 3 指明是定时器中断1;interrupt 4 指明是串行口中断;using 0 是第0组寄存器;using 1 是第1组寄存器;using 2 是第2组寄存器;using 3 是第3组寄存器;51单片机内的寄存器是R0--R7(不是R0-R3)R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1、RS0位决定的。

汽车单片机技术教材配套课件任务17 外部中断的使用

汽车单片机技术教材配套课件任务17 外部中断的使用

等待中断
N
Y
中断处理
中断返回
软件设计
ORG 0000H LJMP START ORG 0003H ;外部中断0的入口地址 LJMP INT_0 ; 跳入中断服务子程序 ORG 0030 START: MOV SP,#60H; 设置堆栈区 MOV A,#0FFH ; 初值 MOV P1,A SETB EA ; 开总的中断 SETB EX0 ; 开外部中断0 SETB IT0 ; 下降沿触发 SJMP $ ; 等待中断 INT_0: ; 中断服务子程序 CPL A ; 初值取反 MOV P1,A RETI ; 中断返回 END
仿真调试
3、程序调试仿真
仿真调试
1、触发方式设置: IT0=1,IT1=1 下降沿触发 使用指令: SETB IT0 SETB IT1
以下操作可采 用位操作指令, 与可采用字节
2、外部中断允许控制
操作指令。
EA=1 开总的中断
EX0=1,EX1=1 开外部中断0和外部中断1
使用指令: SETB EA , SETB EX0, SETB EX1
51单片机外部中断请求方式
负边沿触发,使控制位IT0=1即可。 低电平触发,使控制位IT1=0即可。
51单片机响应外部中断请求后会自动将外部中断标志位 清0,但由于外部中断请求触发方式的特点,在使用外部中 断中要注意避免重复请求问题。
外部中断控制寄存器
定时器控制寄存器TCON设定
特点: 8位、可位寻址、复位后内容为00H; 作用: 为外部中断源和定时/计数功能服务;
INT_0: …………… ……………. RETI END
中断入口地址 跳到中断服务程序
开总的中断 开总外部中断0 下降沿触发 外部中断处理程序

实验8 外部IO中断控制T1定时

实验8 外部IO中断控制T1定时

实验8 外部IO中断控制T1定时【实验目的】通过本实验的学习,使实验者熟悉CC2530芯片的定时器1定时的配置及使用方法。

【实验内容】编写IAR程序,实现使用定时器T1的中断控制LED灯闪烁(每秒一次),外部IO(P1.2)中断控制定时器的定时启停。

具体控制为:初始LED3灯亮,表示定时器秒表处于开始计时状态;点按SW1键,则计时开始,LED3灭,T1开始计时(LED1开始闪烁),秒表处于运行状态;再次点按SW1键,T1停止计时(LED1不闪),秒表处于停止状态;再次点按SW1键,LED3灯亮,秒表还回到开始状态。

【实验原理】定时器1要每秒闪烁一次,则其定时长为0.5秒,定时需要设置比较缓存器T1CC0H:T1CC0L的值。

有多种设置可以满足定时长为0.5秒的要求,本实验采用正计数/倒计数器工作模式,希望一个正计数/倒计数过程(从0x0000~T1CC0,再从T1CC0~0x0000)的时长为0.5s,那么正计数时长和倒计数时长都应为0.25s,通过计算可知,以下为本实验采用的设置为:工作在正计数/倒计数模式下,在定时器1开始工作后从0x0000开始做加1计算直到T1CC0,再从T1CC0倒计数到0x0000时,发生中断溢出并将T1STAT.OVFIF(D5位)置1。

此时定时器将发出一个溢出中断请求并将IRCON.T1IF (D1位)置1。

此后自动重新正计数/倒计数,再次从0x0000正计数到T1CC0,再从T1CC0倒计数到0x0000,如此反复计数。

【实验步骤】1.建立一个新项目参照实验1操作步骤,在指定路径建立一个新的工作空间“Test08”,在该空间下新建一个IAR项目“timerPrj3.ewp” 并保存。

2.添加或新建程序文件参照实验1的操作步骤, 往项目中添加或者新建程序文件timer2.c。

【实验相关代码】/*************************************************************** *****/#include "ioCC2530.h" // 引用头文件,包含对CC2530的寄存器、中断向量等的定义/*************************************************************** *****///定义led灯端口:p1.3, p1.4:#define LED1 P1_0 // P1_0定义为P1.0#define LED2 P1_1 // P1_1定义为P1.1#define LED3 P1_3 // P1_3定义为P1.3#define LED4 P1_4 // P1_4定义为P1.4#define SW1 P1_2 // P1_2定义为SW1/* 定义枚举类型 *//*************************************************************** *****/enum STATE{START_STATE,RUN_STATE,STOP_STATE}; // 定义秒表的状态enum STATE state = START_STATE; // 初始化应用状态为开始/*************************************************************** ******* 函数名称:delay* 功能:软件延时* 入口参数:无* 出口参数:无* 返回值:无******************************************************************** /void delay(unsigned int time){ unsigned int i;unsigned char j;for(i = 0; i < time; i++){ for(j = 0; j < 240; j++){ asm("NOP"); // asm是内嵌汇编,nop是空操作,执行一个指令周期asm("NOP");asm("NOP");}}}/*************************************************************** ******* 函数名称:init* 功能:初始化系统IO,定时器T1控制状态寄存器* 入口参数:无* 出口参数:无* 返回值:无******************************************************************** /void init(void){ P1SEL &= ~0x0D; // 设置LED1、SW1为普通IO口P1DIR |= 0x09 ; // 设置LED1为输出P1DIR &= ~0X04; //Sw1按键在 P1.2,设定为输入LED1 = 0; //灭 LEDLED3 = 1; //亮 LEDPICTL &= ~0x02; //配置P1口的中断边沿为上升沿产生中断P1IEN |= 0x04; //使能P1.2中断IEN2 |= 0x10; //使能P1口中断/* 配置定时器1的16位计数器的计数频率由於采用正计数/倒计数器工作模式,希望一个正计数/倒计数过程 (从0x0000~T1CC0,再从T1CC0~0x0000)的时长为0.5s,那么正计数时长和倒计数时长都应为0.25s,通过计算可知,有多种设置可以满足,以下为本实验采用的设置:Timer Tick 分频定时器1的计数频率 T1CC0的值一个正计数时长或一个倒计数时长32MHz /128 250KHz 625000.25s */CLKCONCMD &= 0x80; //时钟速度设置为32MHzT1CC0L =62500 & 0xFF; // 把62500的低8位写入T1CC0LT1CC0H = ((62500 & 0xFF00) >> 8); // 把62500的高8位写入T1CC0HEA = 1; //使能全局中断}/*************************************************************** ******* 函数名称:EINT_ISR* 功能:外部中断服务函数* 入口参数:无* 出口参数:无* 返回值:无******************************************************************** /#pragma vector=P1INT_VECTOR__interrupt void EINT_ISR(void){EA = 0; // 关闭全局中断/* 若是P1.2产生的中断 */if(P1IFG & 0x04){/* 等待用户释放按键,并消抖 */while(SW1 == 0); //低电平有效delay(10);while(SW1 == 0);/* 若当前状态为"开始"状体,则进入"运行"状态*/if(state == START_STATE){state = RUN_STATE; // 更新应用状态标志变量T1STAT &= ~0x20; // 清零溢出标志 (T1STAT.OVFIF)/* 此处添加设置TIMIF.OVFIM位(定时器1中断屏蔽)为1的代码本实验采用上电复位后默认的设置,即TIMIF.OVFIM=1因此无需对TIMIF.OVFIM位再进行设置。

单片机课程设计-中断的应用

单片机课程设计-中断的应用

IT0
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
例3:启用外部中断INT0和INT1,INT1 INT1,INT1的优先级高于INT0。 可使用语句: IE=0x85; IP=0x04;// 0x04二进制数是00000100 00000100,即把PX1置位1。其 他中断为低优先级。 例4:启用外部中断INT0和INT1,INT1 INT1,INT1采用边沿触发,且优先 级高于INT0。 可使用语句: IE=0x85;//也可以使用EA=1; EA=1; EX1=1; EX0=1;语句 EX0=1; PX1=1;// 中断INT1高优先级 IT1=1;//中断INT1边沿触发
单片机课程设计
中断的应用
中断的应用
n n n
n
n n n
n n n
包括中断的设置和中断程序的编写。 包括中断的设置和中断程序的编写 (1)中断的设置 中断的设置包括IE寄存器的设置, 寄存器的设置 IP寄存器的设置,TCON 寄存器的设置等。 单片机复位后,有关寄存器进入下列状态 有关寄存器进入下列状态,TCON:00H、 IE:0XX00000B、IP:XXX00000B、TMOD:00H。 例1:启用外部中断INT0。 可使用语句: IE=0x81; //其中0x81二进制数是10000001,即把EA置位1, EX0置位1 例2:启用外部中断INT0和INT1。 可使用语句: IE=0x85; //其中0x85二进制数是10000101,即把EA置位1, EX0置位1,EX1置位1。
定时/计数器的应用
n n n
n n
n
n n
1. 初始化 初始化的内容如下: (1) 根据设计需要先确定定时/计数器的工作模式及 根据设计需要先确定定时 工作方式,然后将相应的控制字送入 然后将相应的控制字送入TMOD寄存器中。 (2) 计算出计数初始值并写入TH0、TL0、TH1、TL1中。 计算出计数初始值并写入 (3) 通过对中断优先级寄存器IP和中断允许寄存器IE 通过对中断优先级寄存器 的设置,确定计数器的中断优先级和是否开放中断 确定计数器的中断优先级和是否开放中断。 (4) 给定时/计数器控制寄存器 计数器控制寄存器TCON送命令字,控制 定时/计数器的启动和停止 计数器的启动和停止。 2. 初值的计算 80C51定时/计数初值计算公式 计数初值计算公式:T初值=2N-定时时间/ 机器周期。

单元三 CC2530外部中断应用

单元三   CC2530外部中断应用

任务二 中断方式实现按键控制LED灯开关 三、任务实施……
任务二 中断方式实现按键控制LED灯开关
提示: 1. LED状态共4种 2. 按键按下次数与LED状态有关 3. switch语句
物联网应用的精彩未来有待你的参与
Thanks
任务一 实现按键控制跑马灯启停
二、任务目标 1.训练目标 ①检验学生掌握CC2530单片机中断基本知识、CC2530中 断系统结构的技能。 ②检验学生掌握CC2530单片机中断源以及外部中断的使用 等技能。
任务一 实现按键控制跑马灯启停
二、任务目标 2.素养目标 ①培养学生在工作现场的6S意识和用电安全意识。 ②爱惜工具,注重场地整洁。 ③具备积极、主动的探索精神。
USB D+中断标志位
4:0
P2IF[4:0]
0 0000
R /W0
端口P2_4到P2_0的中断状态标志,当输入 端口有未响应的中断请求时,相应标志位置 1,需要软件复位。
任务一 实现按键控制跑马灯启停
举例:按键控制LED亮灭状态(中断方式)
(1) 头文件,宏定义 (2) I/O 初始化(寄存器设置) (3) 中断初始化 (4) 编写主函数 (5) 编写中断处理函数
定时器2中断
定时器3捕获/比较/溢出 定时器4捕获/比较/溢出
ADC转换结束 DMA传输完成
睡眠计时器比较 看门狗计时溢出 AES加密/解密完成
RF通用中断 RF发送完成或接收完成
任务一 实现按键控制跑马灯启停
三、相关知识
外部中断:
外部中断,即从单片机的I/O口向单 片机输入电平信号,当输入电平信 号的改变符合设置的触发条件时, 中断系统便会向CPU提出中断请求。
任务一 实现按键控制跑马灯启停

PLC中断程序及应用

PLC中断程序及应用

例6:使用T32中断的彩灯控制程序,控制8个彩 灯循环左移。
1ms定时器T32和T96的定时时间到时可以产生 中断,中断号分别为21和22,最长定时时间为 32.767s。对于分辨率为1ms和10ms的定时器,不 能使用定时器本身触点作为自复位控制,应使用下 面主程序方法。
主程序OB1 LD SM0.1 CALL SBR_0:SBR0
ATCH INT_0,10 //指定定时中断0执行0号中断程序
ENI
//允许全局中断
//中断程序0(INT_0),每隔250ms中断一次
LD SM0.0
//常ON
INCB VB10
//中断次数计数器加1
LDB= 8,VB10 MOVB 0,VB10 INCB QB0
//比较,如果中断8次(2s) //中断次数计数器清零 //每2s将QB0加1
中断源,即中断事件发出中断请求的来源。S7200PLC具有最多可达34个中断源,每个中断源都分 配一个编号用以识别,称为中断事件号。这些中断 源大致分为三大类:通信中断、输入输出中断和时 基中断。
S7-200中,过程中断分为通信中断和输入输 出中断。通信中断包括通信口0和通信口1产生的中 断;输入输出中断包括外部输入中断、高速计数器 中断和高速脉冲串输出中断。
31 0~23,27~33
CPU226 34
0~33
三、中断程序的相关指令
1、中断允许指令ENI和中断禁止指令DISI
中断允许(ENI)指令,全局地开放所有被连接 的中断事件,允许CPU接收所有中断事件。
中断禁止(DISI)指令,全局地关闭所有被连 接的中断事件,禁止CPU接收各个中断事件的中断 请求。
TODR VB10
//使Q1.0立即置位 //读实时时钟
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档