单片机外部中断实验(附C语言程序)复习进程
单片机外部中断实验(附C语言程序)
单片机外部中断实验(附c程序)一、实验目的掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。
二、实验内容8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:(1)合上、P3.3断开时LED1闪烁(2)P3.2断开、P3.3合上时LED2闪烁(3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁(4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁试编写C语言和汇编语言程序使用自然优先级就可以也可 XO 高级X1低级PX0=1 PX1=0四、实验电路五、参考程序(自己完成)C程序:Include<reg52.h>Sbit P2_0=P2^0;Sbit P2_1=P2^1;Sbit P3_2=P3^2;Sbit P3_3=P3^3;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}Void main{EA=1;EX0=1;EX1=1;ITO=1;IT1=1;PX0=1;PX1=0;While(1);}Void int0(void) interrupt 0 { if(!P3_2){While(1){P2_0=1;delay02s();P2_0=0;delay02s();}}}Void int1(void) interrupt 2 { if(!P3_3){While(1){P2_1=1;delay02s();P2_1=0;delay02s();}}}。
单片机实验-外部中断、计数器定时器
1)用单次脉冲申请中断INT0,在中断处理程序中对输出信号进行反转。
ORG 0000HLJMP STARTORG 0003HLJMP INT0START:CLR P1.0MOV TCON, #01HMOV IE, #81HLJMP $INT0:PUSH PSWCPL P1.0POP PSWRETIEND结果:按一下单脉冲小灯亮,再按一下,小灯灭接线:INT0接单脉冲P1.0接个小灯2)用单次脉冲申请中断INT1,在中断处理程序中实现8个小灯左移点亮1次。
ORG 0000HLJMP STARTORG 0013HLJMP INT1START:MOV TCON,#04HMOV IE,#84HCLR PX1MOV A,#01HSJMP $INT1:MOV R1,#8LOOP:MOV P1,ALCALL DELAYRL ADJNZ R1,LOOPRETIDELAY:MOV R6,#200DELAY1:MOV R7,#125DELAY2:DJNZ R7,DELAY2DJNZ R6,DELAY1RETEND结果:按一下单脉冲,8个小灯左移点亮一次接线:INT1接单脉冲P1口接8个小灯3)将8051计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行单脉冲计数,并将其数值按二进制在P1口驱动LED灯上显示出来。
ORG 0000HSTART:MOV TMOD,#05HMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND结果:P1口与四个小灯相连,按单脉冲的次数在四个小灯上显示接线:(P3.4)T0接单脉冲P1.0到P1.4接4个小灯4)用CPU内部定时器T0中断方式计时,实现每1秒钟输出状态发生一次反转。
ORG 0000HLJMP STARTORG 000BHLJMP INTSTART: MOV TMOD,#01HMOV B,#0AH;即10,设循环次数10次。
实验三 单片机外部中断实验
实验三单片机外部中断实验一、实验目的1.理解单片机AT89C51的中断原理及其中断过程。
2.用proteus设计、仿真AT89C51单片机的外部中断。
外部中断是单片机AT89C51的重要功能,本实验用AT89C51单片机外部中断功能改变数码管的显示状态。
当无外部中断0时,主程序运行状态为七段数码管的a~g段依次点亮,不断循环;当有外部中断0(单片机P3.2脚上有下降沿电压)输入时,立即产生中断,转而执行中断服务程序,数码管显示状态为“8”亮灭闪烁显示,亮灭闪烁显示8次以后,返回主程序原断点处继续执行,数码管继续段点亮的循环显示。
③7SEG-COM-AN-GRN:绿色发光二极管;④CAP、CAP-ELEC:电容、电解电容;⑤CRYSTAL:晶振;⑥BUTTON:按钮。
2.放置元器件3.放置电源和地4.连线5.元器件属性设置6.电气检测四、源程序设计、生成目标代码文件1.流程图2.源程序设计通过菜单“sourc e→Add/Remove Source Files…”新建源程序文件:DZC33.ASM。
通过菜单“sourc e→DZC34.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。
程序编辑好后,单击按钮存入文件DZC34.ASM。
3.源程序编译汇编、生成目标代码文件通过菜单“sourc e→Build All”编译汇编源程序,生成目标代码文件。
若编译失败,可对程序进行修改调试直至汇编成功。
五、PROTEUS仿真1.加载目标代码文件2.全速仿真单击按钮,启动仿真。
3.仿真调试(1)带断电仿真五、思考题:1、MCS-51单片机响应某一个中断请求的条件是什么?2、8051单片机提供几个中断源?有几级中断优先级别?各中断标志是如何产生的又如何清除这些中断标志?各中断源所对应的中断入口地址是多少?。
51单片机培训—C语言版外部中断
完 处理 引 P3.2 中 脚的 , 断了 主 我回 了 程序
P3.2脚信号引 发的中断程序
取反P0.7
取反P0.7,改变P0.7引脚上接的LED小灯亮灭状 态,实现LED小灯闪烁
中断程序返回
执行RETI从P3.2引脚中断服务子程序中返回主程序
程序清单
• 汇编语言程序
•
ORG 0000H • SJMP START • ORG 0003H • AJMP INTERRUPT0 • ORG 0030H ;---------------------------初始化---------------------START:MOV SP, #60H • MOV P0, #0FFH • CLR IT0 • SETB EX0 • SETB EA ;---------------------------主程序---------------------MAIN:SJMP MAIN ;-------------------中断子程序-----------------------INTERRUPT0:CPL P0.7 • RETI • END
EA 空 ET2 ES ET1 EX1 ET0 EX0
使能外部中断0(P3.2)
使能外部中断1(P3.3)
中断总使能
• • •
例如:想使用中断0(P3.2引脚输入的中断信号) MOV IE , #10000001B 或SETB EX0 IE=0X81; EX0=1;
•
SETB EA
EA=1;
TMOD的设置
查询法程序清单
• • • • • • • • • • • • • • • •
•
#include<reg51.h> void main() { TMOD=0X1; TH0=0X4C; TL0=0X0; TR0=1; while(1) { if(TF0==1) { P0=~P0; TF0=0; } } }
单片机实验之外部中断应用实验
一、实验目的1、掌握中断系统外部中断源的使用方法。
2、掌握延时程序的编程及使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、设计要求1、用Proteus软件画出电路原理图,在单片机的P1.0口线上接按键K0 ,作为外部中断源0使用,用于开启波形,在单片机的 P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。
2、在单片机的P1.2口线上产生周期50mS的连续方波,在P1.2口线上接示波器观察波形。
三、电路原理图六、实验总结通过本实验能够准确安排各种类型的中断服务程序入口,中断源提出中断申请后,却执行到相应的中断服务程序。
弄清楚了中断服务程序与子程序的共同点和不同点。
七、思考题1、在P1.2口线上产生周期为100mS,占空比为2:5的连续矩形波,要求只采用按键K0来控制其开启和关闭。
答:程序见程序清单。
四、实验程序流程框图和程序清单。
1、在单片机的P1.2口线上产生周期50mS的连续方波。
P1.0口线上接按键K0 ,作为外部中断源0使用,用于开启波形, P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。
汇编程序:ORG 0000H START: LJMP MAINORG 0003HLJMP EXT0ORG 000BHLJMP TTCOORG 0013HLJMP EXT1ORG 0100HMAIN: MOV TMOD, #01HMOV TCON, #01HMOV IE, #87HMOV TH0, #9EHMOV TL0, #58HSETB PX1HERE: LJMP HEREEXT0: SETB TR0RETIEXT1: CLR TR0RETITTCO: CPL P1.2MOV TH0, #9EHMOV TL0, #58HRETIENDC语言程序:#include<reg51.h>sbit P12=P1^2;main(){TMOD=0X01;EA=1;EX0=1;EX1=1;ET0=1;PX1=1;TCON=0X01;TH0=0X9E;TL0=0X58;while(1);}void EXT0() interrupt 0{ TR0=1;}void EXT1() interrupt 2{ TR0=0;}void TTC0() interrupt 1{ P12=!P12; TH0=0X9E;TL0=0X58;}2、在P1.2口线上产生周期为100mS,占空比为2:5的连续矩形波,要求只采用按键K0来控制其开启和关闭。
单片机外部中断实验程序
单片机外部中断实验程序单片机外部中断是一种常用的硬件中断方式,可以使单片机在执行主程序的同时,及时响应外部设备的信号,并进行相应的处理。
在本实验中,我们将编写一段简单的程序,用于实现单片机外部中断的功能。
首先,我们需要明确实验的硬件配置。
本实验中,我们使用的是STC89C52单片机,其中P3.2引脚作为外部中断0的引脚。
接下来,我们将详细介绍实验的步骤。
首先,在主程序中,我们需要首先对单片机的外部中断进行初始化设置。
具体的设置步骤如下:1.设置外部中断引脚的工作方式。
我们需要将P3.2引脚设置为外部中断0的工作模式。
可以通过将P3.2引脚对应的P3CON寄存器位设置为1来实现。
2.设置外部中断的触发方式。
单片机外部中断可以通过电平触发或边沿触发来响应外部设备的信号。
在本实验中,我们选择边沿触发方式。
可以通过将IE寄存器中的EX0位设置为1来实现。
然后,在程序的主循环中,我们可以编写一个简单的实验程序,用于验证外部中断的功能。
具体的步骤如下:1.在主循环中,我们可以设置一个循环延时函数,用于模拟主程序的执行过程。
2.在循环延时函数的适当位置,可以编写一段代码来模拟外部设备的信号触发。
可以通过向P3.2引脚输出一个高电平信号来触发外部中断。
3.在外部中断的中断服务函数中,我们可以编写一段简单的代码,用于处理外部中断触发时的操作。
可以通过向LED等外设输出一个特定的信号,以验证中断服务函数的正确性。
最后,在程序的尾部,我们可以添加一个死循环,用于保证程序的持续运行。
具体的代码如下所示:```#include<reg52.h>sbit LED=P1^0;void delay(unsigned int t){unsigned int i,j;for(i=t;i>0;i--)for(j=110;j>0;j--);}void ExternalInterrupt0()interrupt0{LED=~LED;delay(100);}void main(){IT0=1;//设置外部中断0为边沿触发EX0=1;//允许外部中断0EA=1;//允许总中断while(1){//主循环中的其他操作delay(1000);}}```通过以上的程序,我们可以实现单片机的外部中断功能。
单片机外部中断实验报告
实验三外部中断实验报告班级:学号:姓名:教师:一、实验目的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、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
单片机实验报告四 外部中断实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019. 4.30 实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。
图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。
中断优先级寄存器IP、IP2管理中断优先级。
同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2)外部中断1(INT1):中断信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。
位选:公共端com,控制数码管是否显示。
3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O 端口控制。
实验04:外部中断INT0、INT1控制流水灯左移、右移
实验四:外部中断系统实验一、实验目的1.结合理论教学,进一步熟悉外部中断INT0和INT1的基本概念和原理;2.理解掌握定时器控制寄存器TCON、中断允许控制寄存器IE、中断优先级别控制寄存器IP的功能和设置方法;3.了解并熟悉MCS-51单片机外部中断INT0和INT1的电路设计特点和应用特点;4.能够针对MCS-51单片机,进行外部中断INT0和INT1的初始化设置,能够完成简单中断服务程序的功能应用设计。
5.进一步熟悉、掌握MCS-51单片机指令系统和应用软件的编程方法和技巧。
二、实验设备、材料1.微型计算机(PⅣ以上);2.编程、汇编与模拟平台软件Keil uVision4;3.电子技术专业仿真软件protues运行平台;4.单片机实训开发电路板。
三、实验内容和实验步骤1.系统仿真电路参考原理图12.系统参考源程序1(用INT0控制流水灯左移1位,用INT1控制流水灯右移1位)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址LJMP IN0ORG 0013H ;INT1中断入口地址LJMP IN1ORG 0020HMAIN:MOV TCON,#05HMOV IE,#85HMOV P2,#0FEHMOV A,#0FEHSJMP $IN0:CLR EARL A //左移MOV P2,ASETB EARETIIN1:CLR EARR A //右移MOV P2,ASETB EARETIEND3.系统参考源程序1(用8位发光二极管代表8位二进制数,用INT0控制加1递增,用INT1控制减1递减)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址LJMP IN0ORG 0013H ;INT1中断入口地址LJMP IN1ORG 0020HMAIN:MOV TCON,#05HMOV IE,#85HMOV R0,#00HMOV A,#00HMOV P2,ASJMP $ IN0:INC R0MOV A,R0CPL AMOV P2,ARETIIN1:INC R0MOV A,R0CPL AMOV P2,ARETIEND4.系统参考源程序2(用INT0控制流水灯左移1位,用INT1控制流水灯右移1位)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址CLR F0RETIORG 0013H ;INT1中断入口地址SETB F0RETIORG 0030HMAIN:MOV P2,#0FFHMOV TCON,#05HMOV IE,#85HMOV A,#7FHRRR:JNB F0,LLLRR A //右移MOV P2,AACALL DELAYSJMP RRRLLL:JB F0,RRRRL A //左移MOV P2,AACALL DELAYSJMP LLLDELAY:MOV R7,#8FH ;延时程序DELAY1:MOV R6,#0FFHDELAY2:MOV R5,#02HDELAY3:DJNZ R5,DELAY3DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND。
单片机外部中断实验报告
单片机外部中断实验报告实验目的:1、理解单片机外部中断的原理和用途;2、掌握单片机外部中断的配置和使用方法。
实验器材:1、STC15W408AS单片机开发板;2、简单的电路连接器;3、按钮开关。
实验原理:单片机外部中断是通过外部硬件信号触发单片机的中断请求,在单片机运行过程中,当外部信号满足特定条件时,会触发中断,并暂停当前的运行程序,转而执行中断服务程序。
通过外部中断,可以实现对外部事件的实时处理。
实验步骤:1、将按钮开关与单片机开发板连接,将按钮开关的一端与单片机的INT0引脚连接,另一端与GND连接。
2、在开发板上连接好电源并供电。
3、打开Keil软件,新建一个工程,并选择合适的单片机型号。
4、配置单片机的外部中断功能,设置INT0引脚为中断输入。
5、编写中断服务程序,当INT0引脚检测到边沿信号时,执行中断服务程序,并在其中加入相应的处理代码。
6、编写主程序,配置相关的引脚和寄存器,使单片机进入中断模式,接受外部中断信号,并执行中断服务程序。
7、下载程序到单片机开发板上,运行程序。
8、按下按钮开关,触发外部中断,并查看实验结果。
实验结果:当按下按钮开关时,实时触发外部中断,单片机停止当前程序的运行,进入中断模式,并执行中断服务程序中的相应代码。
实验总结:通过这次实验,我对单片机的外部中断有了更深入的理解,并学会了如何使用外部中断实现对外部事件的及时处理。
外部中断广泛应用于各种实时系统和设备中,具有很大的实用价值。
在以后的学习和实践中,我会进一步掌握和应用单片机的外部中断功能。
外部中断实验总结
外部中断实验总结一、实验目的本次实验旨在通过外部中断的方式,实现对单片机的中断响应,并掌握中断程序设计方法。
二、实验原理外部中断是指由单片机外部硬件引脚产生的中断信号,当引脚电平发生变化时,单片机会立即停止当前执行的程序,跳转到相应的中断服务程序中执行。
在本次实验中,我们使用了8051单片机的INT0和INT1两个外部中断引脚。
三、实验器材1. 8051单片机开发板2. 电脑(用于编写和下载程序)3. LED灯4. 按钮开关四、实验步骤1. 编写程序:首先需要编写一个可以响应外部中断的程序。
我们可以通过设置相应寄存器来使单片机响应INT0和INT1两个引脚上的信号。
例如,在P3口接入一个按键开关,并将其与INT0引脚相连,则当按键被按下时,INT0引脚会被拉低,从而触发一个外部中断。
此时单片机会跳转到相应的ISR(Interrupt Service Routine)函数中执行。
2. 烧录程序:将编写好的程序烧录到8051芯片上。
这可以通过专门的烧录器或者通过串口下载实现。
在烧录程序之前,需要将引脚连接好,并确定中断触发方式(上升沿触发或下降沿触发)。
3. 测试程序:将LED灯连接到单片机的某个IO口上,以便测试程序是否可以正常响应外部中断。
当按下按钮开关时,LED灯应该会亮起。
五、实验结果通过本次实验,我们成功地实现了对8051单片机的外部中断响应,并掌握了中断程序设计方法。
在实验过程中,我们还学习了如何使用按键开关和LED灯来测试程序的正确性。
六、实验总结本次实验是一项非常基础的单片机实验,但是它对于初学者来说非常重要。
通过这个实验,我们不仅学会了如何编写一个简单的中断服务程序,还学会了如何使用按键开关和LED灯来测试程序的正确性。
这些知识对于今后的单片机编程工作都非常有帮助。
同时,在本次实验中我们也遇到了一些问题,例如引脚连接不正确等等,在解决这些问题的过程中也增加了我们对单片机原理和电路设计方面的认识。
《单片机的C语言程序设计与运用(第2版)》期末复习题及答案2
第四章中断类例4-1 P104假设外部中断0和外部中断1均为下降沿触发,当外部中断0发生时,P0端口的电平反向,当外部中断1发生时,P1端口的电平反向。
#include<reg51.h>void IS0(void) interrupt 0{ P0=~P0;} //P0端口反向void IS1(void) interrupt 2{ P1=~P1;} //P1端口反向void main( ){ P0=0x00; P1=0xFF;IT0=1; IT1=1;EX0=1; EX1=1; EA=1;while(1);}【例4-9】外部中断示例在本实例中,首先通过P1.7口点亮发光二极管D1,然后外部输入一脉冲串,则发光二极管D1亮、暗交替。
#include<reg51.h>sbit P1_7=P1^7;void interrupt0( ) interrupt 0 using 2 //外部中断0{ P1_7=!P1_7;}void main( ){ EA=1; //开中断IT0=1; //外部中断0脉冲触发EX0=1; //外部中断0P1_7=0;do{ }while(1);}如果有3个脉冲,则灯亮、暗交替一次,可如下面编程:#include<reg51.h>Sbit P17=P1^7;unsigned char i=3;void main( ){ EA=1; IT0=1; EX0=1;P17=0;do{ }while(1); }void interrupt0( ) interrupt 0{ i=i-1;if(i==0){ P17=!P17; i=3;}}【例4-10】如图4-18所示,8只LED阴极接至单片机P0口,两开关S0、S1分别接至单片机引脚P3.2()和P3.3()。
编写程序控制LED状态。
按下S0后,点亮8只LED;按下S1后,变为闪烁状态。
#include<reg51.h>sbit P32=P3^2;void delay(unsigned int d) //定义延时子函数{ while(--d>0);}void main( ){ P0=0xFF; //熄灭LEDIT0=1; IT1=1; //外中断0、1脉冲触发方式EA=1; EX0=1; EX1=1; //开中断for( ; ; ) //延时等待中断发生{;}}void INT0_ISR( ) interrupt 0//外中断0中断服务函数{ P0=0x00;}void INT1_ISR( ) interrupt 2//外中断1中断服务函数{ while(P32!=0) //如果有外部中断0,则退出{ delay(5000);P0=0x00;delay(5000);P0=0xFF;}}定时类【例4-16】设单片机的fosc=12MHz,要求在P1.0上产生周期为2ms的方波。
实现中断功能_实验报告(3篇)
第1篇一、实验目的1. 理解中断的概念和作用。
2. 掌握单片机中断系统的基本原理和配置方法。
3. 学会编写中断服务程序,实现外部中断和定时器中断的应用。
4. 通过实验加深对中断系统在实际应用中的理解。
二、实验原理中断是计算机系统中一种重要的机制,它允许CPU在执行程序过程中,响应某些外部或内部事件,从而暂停当前程序的执行,转而处理这些事件。
单片机的中断系统主要包括外部中断和定时器中断两种类型。
三、实验环境1. 单片机:80C512. 开发环境:Keil for 80513. 仿真软件:Proteus4. 实验电路:外部按钮电路、LED灯电路、定时器电路四、实验内容1. 外部中断实验(1)实验目的:学习外部中断的工作原理,掌握外部中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置外部中断源,设置中断优先级。
c. 编写外部中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:当按下按钮时,LED灯闪烁,松开按钮后LED灯熄灭。
2. 定时器中断实验(1)实验目的:学习定时器中断的工作原理,掌握定时器中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置定时器工作模式,设置定时时间。
c. 编写定时器中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:定时器中断触发后,LED灯闪烁,达到设定时间后停止闪烁。
五、实验分析1. 外部中断实验分析通过外部中断实验,我们了解了外部中断的工作原理和配置方法。
在实验中,我们设置了外部中断源,并编写了中断服务程序,实现了LED灯的闪烁。
这表明外部中断可以有效地响应外部事件,并执行相应的操作。
2. 定时器中断实验分析通过定时器中断实验,我们掌握了定时器中断的配置和编程方法。
单片机 程序 外部中断中断复习过程
#define uchar unsigned char
uchar temp;
uchar i;
uchar k;
//////////////////////////////
void delay_ms(uint t)
{
uchar i;
while(t--)
{
3、中断函数的编写
3
完成3题
20
1、LED点亮的延时和循环
2、中断端的设置
3、中断函数的编写
4
完成4题
20
1、电路图的理解
2、静态显示准确
3、中断端的设置
4、中断函数的编写
5
完成5题
1、静态显示准确
2、中断端的设置
3、中断函数的编写
5
创意性实验
20
6
独立完成实验,如有抄袭、拷贝及其他非独立完成实验的方法以上的所有分值为零
2、根据电路图图1-6编写程序,由P1口控制八个LED,按键INT0和按键INT1控制八个LED循环点亮的方向。初始状态八个LED全部熄灭,如果按键INT0按下,由电路板上LED7→LED0逐个移位点亮(每一时刻只有一个点亮),到LED0再由LED7→LED0逐个移位点亮;如果按键INT1按下,由电路板上LED0→LED7逐个移位点亮(每一时刻只有一个点亮),到LED7再由LED0→LED7逐个移位点亮;
{temp=0x80;}
if(k==1)
{temp=0x01;}
for(i=0;i<8;i++)
{
P1=~temp;
if(k==0)
{temp=temp>>1;}
实验二 外部中断实验
实验二外部中断实验一、实验目的1.学会使用Keil μVision3和Proteus软件进行单片机汇编语言和C语言程序设计与开发。
了解和掌握MCS-51单片机的中断组成、中断控制工作原理、中断处理过程、外部中断的中断触发方式, 掌握中断功能的编程方法。
二、实验内容1.单片机的P1.0引脚连接LED指示灯D0。
单片机的P3.2引脚(INT0)连接按键开关K, 作为中断源, 每次按键都会触发INT0中断。
在INT0中断服务程序中将P1.0端口的信号取反, 使LED指示灯D0在点亮和熄灭两种状态间切换, 产生LED指示灯由按键开关K控制的效果。
三、实验程序ORG 0000H ;MCS-51复位入口AJMP MAIN ;转入主程序ORG 0003H ;INTO中断入口AJMP EX_INTO ;转入中断服务程序ORG 0100H ;主程序入口MAIN: MOV SP,#40H ;中断初始化设置堆栈SETB IT0 ;中断请求信号设置为边沿触发方式 SETB EA ;开放总中断SETB EX0 ;允许INTO中断HERE: SJMP HERE ;原地踏步(处理其他事务)等待中断到来ORG 0200H ;中断服务程序EX_INTO:CPL P1.0 ;改变指示灯状态RETI ;中断返回END四、实验原理图五、实验仿真及结果当开关断开时,LED指示灯D1熄灭,如图1所示:图1当按键开关接通时, LED指示灯D1点亮, 如图2所示:图2六、实验总结通过本次实验, 进一步熟悉了对Keil μVision3软件的操作, 另外还接触到了Proteus软件。
掌握了中断功能的编程方法, 加上两个上述软件, 使得单片机汇编语言得以仿真。
进一步深化了解和掌握MCS-51单片机的中断的相关知识, 包括中断的组成、工作原理、处理过程以及外部中断的中断触发方式。
单片机实验二_外部中断
一、实验二: 中断实验二、实验目的:三、通过对P3.2、P3.3引脚的电平控制, 实现外部中断处理, 从而控制输出口P1的输出效果变化。
四、实验原理图实验参考电路图如下:五、参考实验程序/用外中断0的中断方式进行数据采集和处理#include<reg51.h> //包含51单片机寄存器定义的头文件sbit S=P3^2; //将S位定义为P3.2,/*******************************************函数功能: 主函数******************************************/void main(void){EA=1; //开放总中断EX0=1; //允许使用外中断IT0=1; //选择负跳变来触发外中断P1=0xff;while(1); //无限循环, 防止程序跑飞}/************************************************************** 函数功能: 外中断T0的中断服务程序**************************************************************/ void int0(void) interrupt 0 using 0 //外中断0的中断编号为0 {P1=~P1; //每产生一次中断请求, P1取反一次。
}实验思考题:(1) 根据指导书中提供的原理图, 自行设计一个外部中断实验, 要求:(2) 两个外部中断全部用上;(3) 实验能体现不同中断优先级的中断源的相应情况;(4) 不同中断处理程序能输出不同的响应效果//用外中断0的中断方式进行数据采集和处理00000000#include<reg51.h> //包含51单片机寄存器定义的头文件sbit S=P3^2; //将S位定义为P3.2,/*******************************************函数功能: 主函数******************************************/void main(void){EA=1; //开放总中断EX0=1; //允许使用外中断IT0=1; //选择负跳变来触发外中断P1=0xf0;PX0=1;// PX1=1;while(1); //无限循环, 防止程序跑飞}/************************************************************** 函数功能: 外中断T0的中断服务程序**************************************************************/ void int0(void) interrupt 0 using 0 //外中断0的中断编号为0 {//P1=~P1;P1=0x01;}void int1(void) interrupt 1 using 1{//P1=~P1;P1=0XFe; }。
单片机(c语言版)定时器计数器复习进程
12
6.3 对外部输入的计数信号的要求
当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入 引脚T0或T1。当输入信号产生由1至0的跳变(即负跳变)时, 计数器值增1。 由于确认一次负跳变花2个机器周期,即24个振荡周期,因此 外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
TMOD寄存器应初始化为0x01=0000 0001B
(2)计算T0计数初值 设定时时间5ms(即5000µs),设定时器T0的计数初值为
X,假设晶振的频率为11.0592MHz,则定时时间为: 定时时间=(216−X)12/晶振频率 则 5000=(216 −X)12/11.0592 得:X = 60928,转换成16进制后为:0xee00,其中0xee装 入TH0,0x00装入TL0。 (3)设置IE寄存器
TCON
TF1 D7
申请 中断
TR1
TF0
溢出 TH0 TL0
TR0
8位 5位
D0
1 1
0 &
≥1
T0引脚
机器周期 1
INT0引脚
TMOD
0 M0 D0 0 M1
C/T GATE
M0 M1 C/T GATE D7
6
C/T*位决定定时器/计数器的两种工作模式 (1)C/T*=0,T1(或T0)为定时器工作模式,把时钟振荡
图6-2 寄存器TMOD格式 3
(2)M1、M0—工作方式选择位 M1、M0的4种编码,对应于4种工作方式的选择。 (3)C/T* —计数器模式和定时器模式选择位 C/T*=0,为定时器工作模式,对单片机的晶体振荡器12分
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁
(4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁
试编写C语言和汇编语言程序
使用自然优先级就可以
也可XO高级X1低级PX0=1 PX1=0
四、实验电路
五、参考程序(自己完成)
C程序:
Include<reg52.h>
Sbit P2_0=P2^0;
SbitP2_1=P2^1;
SbitP3_2=P3^2;
Sbit P3_3=P3^3;
void delay02s(void) //延时0.2秒子程序
{
unsigned char i,j,k;
for(i=20;ielay02s();
}
}
}
Void int1(void) interrupt 2
{if(!P3_3)
{
While(1)
{
P2_1=1;
delay02s();
P2_1=0;
delay02s();
}
}
}
for(k=248;k>0;k--);
}
Void main
{
EA=1;
EX0=1;
EX1=1;
ITO=1;
IT1=1;
PX0=1;
PX1=0;
While(1);
}
Void int0(void) interrupt 0
{if(!P3_2)
{
While(1)
{
P2_0=1;
delay02s();
P2_0=0;
单片机外部中断实验(附C语言程序)
一、实验目的
掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。
。
二、实验内容
8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:
(1)合上、P3.3断开时LED1闪烁