中断方式控制彩灯闪亮口实验
单片机实验——利用中断控制LED
单片机实验——利用中断控制LED本实验利用中断控制单片机的GPIO口控制LED的亮灭,达到了在不同的时间间隔下实现LED的闪烁、呼吸等效果。
本实验可以让初学者更好地理解与掌握单片机的中断和GPIO 控制。
一、实验器材准备1. STC12C5A16S2单片机开发板2. LED灯3. 1KΩ电阻4. 杜邦线二、实验原理本实验中,我们需要利用单片机的GPIO口控制LED灯的亮灭。
其中,单片机的GPIO 口需要设置为输出模式,即控制LED灯亮灭的电平。
在运行中,通过改变电平状态来控制LED的亮灭。
而中断控制则是为了实现不同的效果,比如在不同的时间间隔下闪烁、呼吸等。
中断是指硬件或软件的外部事件,它会打断当前正在执行的程序,转为执行中断程序。
在单片机编程中,我们可以采取中断方式实现不同的操作。
三、实验步骤1. 首先,连接电路。
将LED作为单片机GPIO控制的输出口,同时连接一个1KΩ的电阻,如下图:2. 打开Keil软件,新建工程,导入STC12C5A16S2头文件。
3. 在代码中,首先需要定义GPIO的引脚,接下来进行中断初始化设置。
4. 编写闪烁程序,实现LED在不同时间间隔下闪烁,如下:```cvoid Led_Flash(void){Led_ON(); //LED灯亮Delay(500); //延时等待500msLed_OFF(); //LED灯灭Delay(500); //延时等待500ms}```5. 编写呼吸程序,实现LED在不同时间间隔下进行呼吸灯效果。
```cvoid Led_Breath(void){uint8 i;uint16 j;for (i = 0; i < 10; i++) //变量i控制灯的亮度{for (j = 0; j < 2000; j++) //变量j控制每次延时等待的时间{Led_ON();Delay_us(i * 20);Led_OFF();Delay_us((9 - i) * 20);}}}```6. 编写中断控制程序,通过定时器中断来实现LED的不同效果。
实验、中断控制的8个LED灯轮流点亮电路
实验八、中断控制的8个LED灯轮流点亮电路专业: 班级:姓名: 学号:成绩:一、实验目的1.掌握中断程序的分析方法和设计方法。
2.学习电平触发方式及负脉冲触发方式的电路设计方法。
3.学习读程序,并能写出中断初始化程序段。
二、实验器材单片机开发设备一套。
三、实验内容和步骤试设计一个用单片机中断控制的8个LED灯轮流点亮的仿真控制系统,当按下一个按键之后,LED1灯亮,再按下一个按键后,彩灯顺次点亮一个。
要求按照电平触发和负脉冲触发两种方式来设计电路并进行程序设计。
电平触发方式下的仿真图:附加题:请设计一个电路,能实现开关控制的数码管显示0-9数字。
电平触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#01HCLR IT1SETB EX1SETB EA SJMP $ORG 0200H SERVER:CLR P3.0 NOPNOPSETB P3.0MOV P1,ARL ARETIEND负脉冲触发方式下接于P3.3端口的仿真图:负脉冲触发方式下的程序:ORG 0000HAJMP MAINORG 0013HAJMP SERVERORG 0030HMAIN:MOV A,#11111110B MOV P1,A SETB IT1SETB EX1SETB EASJMP $ORG 0200HSERVER:CLR P3.3NOPNOPSETB P3.3MOV P1,ARL ARETIEND。
实验五 广告流水灯中断控制
实验五广告流水灯中断控制实验五广告流水灯中断控制一、实训目的1、用外部中断源的中断控制方法控制发光二极管亮灭。
2、学习外部中断技术的基本使用方法。
3、学习中断处理程序的编写方法。
二、实训预备知识1、单片机中断系统包括5个中断请求源,4个中断控制寄存器IE、IP、TCON、SCON用来控制中断的请求、中断的开关和各种中断源优先级的确定。
2、编写中断处理程序需要注意的问题是:(1)保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
(2)必须在中断处理程序中设定是否允许中断重入,即设置EX0或EX1位。
一般进入中断处理程序时应保护现场,在退出前恢复现场。
另外中断处理程序中涉及到关键数据的设置时应关闭中断,即设置时不允许中断重入。
三、实训设备:微机一台、实训箱、THKL-C51仿真器、扁平数据线和一条串行数据通信线。
四、实训内容(2)从PROTEUS库中选取元器件单击“P”按钮,在其左上角“Keywords”(关键字)一栏中输入以下元器件的关键字,将以下元器件添加到对象选择器中。
①AT89C51:单片机②RES:电阻③LED-GREEN:绿色发光二极管④CAP、CAP-ELEC:电容、电解电容⑤CRYSTAL:晶振⑥74LS04:反相器⑦BUTTON:按钮⑧SOUNDER:喇叭图4-2 单击“P”按钮(3)放置元器件:按照原理图合理放置元器件。
(4)放置电源和地(终端)单击工具栏中的终端按钮,在对象选择器中选取电源(POWER)、地(GROUND),用上述放置元器件方法分别放置于编辑区中。
(5)电路图连线系统默认自动扑捉和自动布线有效。
只要在两端点相继单击,便可画线。
画折线,在拐弯处单击;若中途想取消,可右双击或按“Esc”;若终点在空白初,左双击即可结束。
(6)设置、修改元器件的属性先右击后左击各器件,在弹出的属性编辑框中设置、修改它的属性。
(7)电气检测选择【Tools】/【Electrical Rule Check】菜单项,出现电气检查报告单,无错误,则用户可执行下一步。
裸机定时器中断控制LED灯程序设计实验报告
裸机定时器中断控制LED灯程序设计一、实验要求:基于mini2440开发板,设计裸机定时器中断控制LED灯闪烁的程序。
二.设计目的1,巩固学习嵌入式软件方面的基本知识,进一步熟悉基本概念。
2,熟练常用控件,文件,图形等方面的操作了解基本的流程。
3,运用所用学的嵌入式知识,编写出较为实用的小软件,增进对一些实际问题的软,硬件知识的掌握。
4,培养查阅资料,独立思考问题的能力。
三. 实验步骤:四.基本思路及关键问题的解决方法;基本思路:1. 按照步骤程序设计原理说明,使用”CodeWarrior for ARM Developer Suite”软件编写程序并进行编译,建立一个新的文件单击【File】菜单中的【New File】选项,然后出现下面的对话框,输入文件名(加上后缀“.c”),单击保存按钮,在编译过程中如果出现错误,修改程序直到没有错误为止,编译过程中出现警告一般可以不必考虑,但特殊时也要通过修改程序消除警告。
程序编写完成后,将程序所在文件保存到2440test.mcp中,如图所示:2.用开发板测试程序代码:(1)首先设置开发板的拨动开关S2 为Nor Flash 启动,连接好附带的USB 线和电源(可以不必连接串口线)。
(2)设置超级终端(3)开机进入BIOS 模式,此时开发板上的绿色LED1 会呈现闪烁状态,其启动界面,如下图:输入”d”(4)安装USB 下载驱动(5)点击DNW 程序的“USB Port” “Transmit”,选择这个2440test.mcp文件,接着点“打开”,这样就开始下载了五.流程图及电路原理图1.绘制所需的流程图,如图所示:六.课程设计心得体会此次课程设计中我们的收获:我了解到了和小组成员合作的愉快,我意识到了知识的乐趣性,并感觉到当知识运用于实践的时候是一件多么幸福的事情。
我也发现自己的知识功底还远远不够。
平时不仅要将知识点理解掌握,还得勤动手做实验。
在以后的学习中我会更努力,在掌握理论知识的基础上,提高自己的动手能力。
实验二 P口彩灯控制实验
重庆交通大学学生实验报告实验课程名称单片机原理与应用实验名称P口彩灯控制实验实验类型验证性实验开课实验室语音楼单片机原理实验室学院信息科学与工程学院学生姓名学号开课时间2012至2013学年第2学期实验评佑等级很好好一般差实验操作能力实验结果实验分析实验思考总结实验成绩教师签名一、实验目的:1.通过实验了解单片机最小系统;2.掌握P0口作为输入、输出方式使用时,CPU对P0口操作方法。
二、实验内容:控制要求如下:1.正常情况下,8个发光二极管顺序点亮;2.按下K1时,第1个和第8个发光二极管闪烁,闪烁间隔时间为1s;3.按下K2时,8个发光二极管闪烁,闪烁间隔为0.5s;4.发光二极管由单片机P0口控制;参照参考程序结构,但必须添加修改程序的内容,并调试、正确运行。
5.用Proteus仿真软件运行硬件电路仿真设计。
三、实验步骤:(1)用Protuse按单片机最小系统设计流水灯程序电路图;(2)打开Keil程序,执行菜单命令“Project –“New Project”创建“P 口彩灯”项目,并选择单片机型号为AT89C51;(3)执行菜单命令“New”创建文件,输入源程序,保存为“P口彩灯.A51”。
在Project”栏的File项目管理窗口中右击文件组,选择“Add File to Group ‘Source Grop1’”将源程序“p口彩灯.A51”添加到项目中。
(4)执行菜单命令“Project”->“Option For Target‘Target 1’”,在弹出的对话框中选择“Output”选项卡,选中“Greate HEX File”。
(5)执行菜单命令“Project”->“Build Target”,编译源程序。
如果编译成功,则在“Output Window”窗口中显示没有错误,并创建了“P口彩灯.HEX”文件。
(6)将“P口彩灯.HEX”文件下载到Protues软件平台中的虚拟芯片上运行。
外部中断实验_4
实验四外部中断实验——可控霓虹灯控制一、实验目的1.了解单片机中断系统的结构;2.掌握单片机中断有关的寄存器、中断的开放与禁止以及中断程序的编写。
3.掌握定时器和中断系统的综合应用。
二、实验设备(仪器)PC机、PCB版、ISP下载线和USB线。
三、实验内容(一)开发板实验根据图1原理图,实现以下要求的霓虹灯控制。
(1)正常情况8个灯正向依次点亮,反向两两点亮,时间间隔都为0.5s;(2)按键按下后8个灯同时亮灭一次,时间间隔为1s。
用定时器T0,工作方式1编制延时程序,按键动作采用外部中断INT1实现。
图1 硬件原理图(二)ISIS仿真实验仿真电路如图2所示,实现以下要求的霓虹灯控制。
主函数执行流水灯,时间间隔200ms,无限循环。
(1)按键key0按下后8个灯同时亮灭一次,时间间隔为200ms。
(2)按键key1按下后8个灯从中间向两边依次点亮,时间间隔为500ms,然后再从两边向中间依次点亮。
延时为500ms,再让8个灯同时点亮,延时500ms。
(3)当同时按下key0和key1键时,程序执行(2)步骤。
要求:Key0按键动作采用外部中断INT0实现;Key1按键动作采用外部中断INT1实现。
图2 硬件原理图四、实验步骤(一)开发板实验1.准备焊接好的PCB版,其电路参见图1;2.打开计算机,运行Keil uVision2软件,新建工程项目,编写控制流水灯源程序;3.对源程序调试,连接,生成可执行文件;4.连接ISP下载线;5.运行“progisp1.67”文件夹内的“progisp.exe”,将程序下载到单片机中;6.单片机是否正常运行。
(二)ISIS仿真实验1.运行Proteus ISIS 硬件电路仿真软件,按照实验内容(二)中仿真电路图2画图;2.运行Keil uVision2软件,新建工程项目,编写实验内容(二)要求功能程序;3.对源程序调试,连接,生成可执行文件;4.将可执行文件下载到ISIS仿真电路中的单片机中;5.观察仿真电路是否正常运行。
MSP430中断小实验——通过按键改变小灯闪烁频率
MSP430中断⼩实验——通过按键改变⼩灯闪烁频率本⼩实验基于MSP430f5529,不同的型号可能管脚和中断配置有所不同。
实现的功能为:第⼀次按下按键后,系统以每 2 秒钟,指⽰灯暗 1 秒,亮 1 秒的⽅式闪烁。
程序采⽤默认时钟配置;第⼆次按下按键后,系统以每 4 秒钟,指⽰灯亮 2 秒,暗 2 秒钟⽅式闪烁。
第三次按下按键后,系统以每 4 秒钟,指⽰灯亮 1 秒,暗 3 秒⽅式闪烁。
程序基于定时器配置。
/** main.c* 第⼀次按下按键后,系统以每 2 秒钟,指⽰灯暗 1 秒,亮 1 秒的⽅式闪烁,程序采⽤默认时钟配置;第⼆次按下按键后,系统以每 4 秒钟,指⽰灯亮 2 秒,暗 2 秒钟⽅式闪烁。
第三次按下按键后,系统以每 4 秒钟,指⽰灯亮 1 秒,暗 3 秒⽅式闪烁,程序基于定时器配置。
*/#include <msp430f5529.h>int count = 0; //计数int t1_50ms = 20; //⼀个单位对应50ms(亮)int t2_50ms = 20; //⼀个单位对应50ms(灭)int flag = 0; //闪烁频率标志int flag_t = 1; //亮灭标志int main(void) {WDTCTL = WDTPW+WDTHOLD;//时钟中断配置P1DIR |= BIT0;TA0CCTL0 = CCIE;//使能定时器中断TA0CCR0 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR;//配置为SMCLK,升计数模式,初始化时钟//S1配置P1IE |= BIT7; //允许P1.7中断P1IES |= BIT7; //设置为下降沿中断P1IFG &= ~BIT7; //设置为输⼊P1REN |= BIT7; //启⽤上下拉电阻P1OUT |= BIT7; //将电阻设置为上拉__bis_SR_register(LPM0_bits+GIE); //打开中断return 0;}#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){if(count==t1_50ms&&flag_t==1) //灯亮{P1OUT |= BIT0;count=0;flag_t=0;}else if(count==t2_50ms&&flag_t==0) //灯灭{P1OUT &=~BIT0;count = 0;flag_t=1;}else count++;}#pragma vector=PORT1_VECTOR;__interrupt void botton (void){__delay_cycles(75);//延时消抖switch(flag)//flag决定闪烁频率{case 0:t1_50ms = 20;t2_50ms = 20;break;//1秒亮 1秒暗case 1:t1_50ms = 40;t2_50ms = 40;break;//2秒亮 2秒暗case 2:t1_50ms = 60;t2_50ms = 20;break;//3秒亮 3秒暗}flag++;//状态变化if(flag>2) flag = 0;//flag归位P1IFG &=~ BIT7; //清除中断标志位__bis_SR_register(LPM0_bits+GIE);//打开中断}。
中断控制灯亮灭
引入
在平时的生活中,大家有没有这样的经验:正在家里看书,突然有人敲门,我们在书上做上记号,然后跑去开门并招待客人,待客人走后又从之前做记号的地方继续看书。那么,这种情况在单片机中就叫做中断。
招待客人
做记号
看书
从做记号的地方继续看书
有人敲门
课内导航
结束
开始
熄灭灯
返回
LED EQU P1 ;两只LED均接在P1上,EQU将一个常数或汇 编符号赋给字符名 D1 BIT P1.7 ;D1接在P1.0,BIT用于定义位变量 ORG 0000H ;起始地址为0000H LJMP MAIN ORG 0003H ;中断服务入口地址为0013H LJMP ST_1 ;转而执行中断服务程序
项目分析
所需元器件: 单片机芯片AT89C51 发光二极管LED灯 电阻10KΩ 电阻220Ω 按键S
硬件电路设计: 复位电路、时钟电路、电源电路、LED灯D1连接P1.0,D2连接P1.1、中断开关接P3.3(外部中断1入口)
程序设计: 程序设计思路 程序编写
针对项目任务我们所需要完成的工作有哪些?
软件程序设计
中断程序包括:
主程序
作业
仿照此设计过程,试着完成课后程序设计题。
谢谢!
ST_1: SETB D1 ;熄灭D1 RETI ;中断子程序返回指令 END
小结
中断服务子程序
项目设计过程包括:
元器件选择和硬件电路设计
效果演示
例题
仿照此设计过程,完成以下项目的设计: 按键SW1接在P3.2( ),LED灯接在P1.7,要求:首先灯处在关闭状态,按键按下以后灯开启,用中断方式完成。
外部中断:实现LED灯的亮和灭
外部中断:实现LED灯的亮和灭实验:按⼀下独⽴按键,灯亮,再按⼀次,灯灭之前做过的独⽴按键实验也能实现这个功能,但是会占⽤很多CPU资源,不是好的⽅法,这⾥使⽤外部中断来实现⽐较合适效果和独⽴按键实验⼀样1. 下降沿⽅式触发:外部中断0#include <reg52.h>#define u16 unsigned int#define u8 unsigned charsbit LED1 = P2^0; // 要点亮的LED灯sbit k3 = P3^2; // 控制LED灯的独⽴按键// 延迟函数,延迟10usvoid delay(u16 time){while(time--);}// 中断条件void int0Init(){EA = 1; // 中断总允许位EX0 = 1; // 外部中断0允许位// 中断标志:边沿触发⽅式(下降沿有效),因为独⽴按键常态下是断开的,处于⾼电平,按下按键后为低电平IT0 = 1;}// 主函数void main(){// 中断初始化int0Init();// 中断函数while(1);}// 中断函数void int0() interrupt 0{// 消抖,延迟10msdelay(1000);if(k3 == 0) // 按下k3按键{LED1 = ~LED1; // LED灯切换状态}}1. 下降沿⽅式触发:外部中断1#include <reg52.h>#define u16 unsigned int#define u8 unsigned charsbit LED1 = P2^0; // 要点亮的LED灯sbit k4 = P3^3; // 控制LED灯的独⽴按键// 延迟函数,延迟10usvoid delay(u16 time){while(time--);}// 中断条件void int1Init(){EA = 1; // 中断总允许位EX1 = 1; // 外部中断1允许位// 中断标志:边沿触发⽅式(下降沿有效),因为独⽴按键常态下是断开的,处于⾼电平,按下按键后为低电平IT1 = 1;}// 主函数void main(){// 中断初始化int1Init();// 中断函数while(1);}// 中断函数void int1() interrupt 2{// 消抖,延迟10msdelay(1000);if(k4 == 0) // 按下k3按键{LED1 = ~LED1; // LED灯切换状态}}以上是外部中断0和外部中断1的实验,可以⽤外部中断0和外部中断1控制同⼀盏灯,模拟两个开关控制同⼀盏灯,按下⼀个开关,灯亮,去按下另外⼀个开关,灯灭。
指示灯、数码管的中断控制实验报告
指示灯、数码管的中断控制实验报告
本次实验是通过中断控制指示灯和数码管的显示。
我们使用了STC89C52单片机来进行控制实验。
首先,我们定义了两个常量。
一个是DELAY,用于控制指示灯闪烁的速度;另一个是DELAY2,用于控制数码管显示的速度。
由于数码管的刷新速度要比指示灯快,所以我们设置了一个较小的DELAY2值。
在主函数中,我们对单片机进行了初始化,并开启了中断。
然后,我们通过一个while循环不断循环执行,等待中断的触发。
在中断处理函数中,我们利用了定时器来控制指示灯的闪烁,当计数器的值等于DELAY时,就切换指示灯的状态。
通过这种方式,我们可以让指示灯不断地交替闪烁。
对于数码管的中断控制,我们使用了另一个定时器。
每隔一段时间,就会调用中断处理函数,更新数码管的显示内容。
在这个函数中,我们定义了一个数码管显示表,通过循环周期地改变显示的内容,从而实现了数码管数字的滚动显示。
在实验过程中,我们还需要注意一些问题。
首先是定时器的设置,不仅要考虑到闪烁和滚动的速度,还要注意计数器的初始值和中断的开启。
另外,由于中断会频繁地跳入中断处理函数,我们需要尽量减少中断函数的执行时间,避免影响程序的运行。
通过这一次实验,我们掌握了中断控制指示灯和数码管的方法,对单片机的应用有了更深入的了解。
在今后的学习和开发中,这些基础知识将会起到重要的作用。
用按键采用外部停止0或1的方式控制彩灯的运行
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
任务2 中断键控彩灯
;子程序返回 子程序返回
延时时间≈2*100*250*2*1μ 延时时间≈2*100*250*2*1μs=100ms=0.1s
任务1 任务1 中断键控彩灯
教学目标
• 理解外中断的基本概念; 理解外中断的基本概念; • 理解单片机多中断源的开放方法; 理解单片机多中断源的开放方法; • 掌握中断系统的处理过程; 掌握中断系统的处理过程;
1.任务描述 1.任务描述
• 通过单片机的中断功能,实现对连接在P0口上的彩灯 通过单片机的中断功能,实现对连接在 口上的彩灯 进行控制。 进行控制。 • S7和S8两只按键通过上拉电阻分别连接在外部中断 和 和 两只按键通过上拉电阻分别连接在外部中断 两只按键通过上拉电阻分别连接在外部中断0和 外部中断1口线上,采用电平触发方式工作。 外部中断 口线上,采用电平触发方式工作。 口线上 • 工作过程: 工作过程: – 无中断时,8只LED循环显示; 无中断时, 只 循环显示; 循环显示 – 每按一次 键,完成1次灭灯工作; 每按一次S7键 完成 次灭灯工作 次灭灯工作; – 每按 次S8键,完成 次亮灯工作 每按1次 键 完成1次亮灯工作
_2外中断 外中断0 3.源程序_2外中断0和1中断服务程序
;************************************************************** ;外中断 中断服务程序 外中断0中断服务程序 外中断 ;************************************************************** INT_0: CLR EA ;关中断 关中断 MOV P0 , #00H ;8个发光二极管亮 个发光二极管亮 ACALL DELAY SETB EA ;开中断 开中************************************************ ;外中断 中断服务程序 外中断1中断服务程序 外中断 ;************************************************************** INT_1: CLR EA ;关中断 关中断 MOV P0 , #0FFH ;8个发光二极管灭 个发光二极管灭 ACALL DELAY SETB EA ;开中断 开中断 RETI ;中断返回 中断返回
单片机原理及应用技术项目化项目3中断控制的花样彩灯设计
项目3 中断控制的花样彩灯设计
3.3 项目支撑知识链接
3.3.1 中断系统概述
1.中断的概念 在现实生活中,往往会遇到这样的事情:你在看书—电 话响了—接电话—通话完毕—从刚才停止的地方继续看书。 这是一个典型的中断现象,为什么会出现此现象呢?就是因 为当你正做一件事情(看书)时,突然出现了一个重要的事情 要处理(接电话),而一个人又不能同时完成两项任务,这时 就必须采取穿插着去做的方法来实现。
项目3 中断控制的花样彩灯设计
TR0(TCON.4):定时器/计数器T0的启动/停止控制位, 由软件进行设定。TR0=0,停止T0定时(或者计数);TR0=1, 启动T0定时(或者计数)。
TR1(TCON.6):定时器/计数器T1的启动/停止控制位, 由软件进行设定。TR1=0,停止T1定时(或者计数);TR1=1, 启动T1定时(或者计数)。
项目3 中断控制的花样彩灯设计
2.中断申请标志(TCON和SCON) 在中断系统中,应用何种中断,采用何种触发方式,是 由定时器/计数器控制寄存器TCON和串行端口控制寄存器 SCON的相应位规定的。TCON和SCON均属于特殊功能寄 存器,字节地址分别为88H和98H,两者都可以进行位寻址。
项目3 中断控制的花样彩灯设计
项目3 中断控制的花样彩灯设计
(2) 处理故障。把那些可以预知的故障(如除数为0、掉 电等)作为中断源,编制相应的故障处理中断服务程序,这 样当故障发生时,CPU就能及时发现并自动进行处理。
(3) 实现实时控制。在实时测控系统中,要求单片机能 对现场的许多随机参数、信息进行快速分析、运算并及时处 理,而中断机制正好满足了这种在任何时刻提出处理请求的 实时控制。
(88H) TF1 TR1 TF0 TR0
中断方式控制彩灯闪烁实验报告
中断方式控制彩灯闪亮报告实验题目: 中断方式控制彩灯闪亮专业:计算机科学与技术学生姓名:班级学号:分组序号:指导教师:2011 年 5月13 日中断方式控制彩灯闪亮实验报告一、实验时间2011 5/13二、实验地点三、 实验小组人员 四、 指导老师 五、 实验目的通过8259中断控制器应用编程实验,学习中断控制器的工作原理及中断控制程序的设计方法。
六、 实验内容在声光报警模块上按动SW3开关,通过8255向主机内的中断控制器申请10号中断,在中断服务程序中,点亮声光报警模块上的LED 灯。
七、 实验原理利用平台上的开关SW3,通过8255的PC4申请IRQ10号中断,实验的原理图3.2.12所示。
SW31~1019图3.2.12 中断申请电路原理图八、 实验资源配置1.IBM PC 兼容机 2.windows2003.MFID 多功能微机实验平台4.MF2kp 微机原理实验集成开发环境26芯并口插座50芯扩展总线九、实验步骤步骤一:在MFID实验平台上的C区的IRQ10与PC4相连。
步骤二:在MF2KP环境下输入汇编程序,编译、连接、运行。
步骤三:每按1次SW3键,PC4申请1次中断,LED点亮一次。
十、实验流程图主程序十一、实验源程序STACK1 SEGMENT STACKDW 200 DUP(?)STACK1 ENDSDATA SEGMENTMESG1 DB 'Press SW3 one time to invoke interrupt one time,and to light one of LEDs',0ah,0dhDB 'Exit with q/Q',0ah,0dh,'$'LEDDATA DB 01H,02H,04H,08H,10H,20H,40H,80HNUM DW(0)INT0A_OFF DW(?)INT0A_SEG DW(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AH,09HMOV DX,OFFSET MESG1INT 21h ;显示提示信息MOV DX,303H ;初始化8255MOV AL,83HOUT DX,ALMOV DX,300H ;LED灯熄灭MOV AL,00HOUT DX,ALMOV AX,3572H ;获取原中断向量INT 21HMOV INT0A_OFF,BX ;保存原中断向量MOV BX,ESMOV INT0A_SEG,BXCLI ;关中断MOV AX,2572HMOV DX,SEG LEDLIGHT ;设置新的中断向量PUSH DSMOV DS,DXMOV DX,OFFSET LEDLIGHTINT 21HPOP DSSTI ;开中断IN AL,0A1H ;打开IRQ10 AND AL,0FBHOUT 0A1H,ALL1:MOV AH,0BH ;检查是否有’Q’或’q’键按下INT 21HINC ALJNZ NEXT0 ; 若无键按下,则程序往下执行MOV AH,08H ;如有’Q’或’q’键按下,则程序退出INT 21HCMP AL,'q'JZ EXITCMP AL,'Q'JZ EXITNEXT0:MOV DX,302H ;查PC2是否为0IN AL,DXAND AL,04HJNZ L1MOV DX,303H ;按下SW3,则PC4=1申请中断MOV AL,09HOUT DX,ALCALL delay2MOV DX,303H ;置PC4=0MOV AL,08HOUT DX,ALEXIT:MOV AX,2572H ;恢复中断向量MOV DX,INT0A_SEGPUSH DSMOV DS,DXMOV DX,INT0A_OFFINT 21HPOP DSIN AL,0A1H ;屏蔽IRQ10 OR AL,04HOUT 0A1H,ALMOV AX,4C00H ;程序退出INT 21HLEDLIGHT PROC FAR ;中断服务程序PUSH SIPUSH AXPUSH DXCLI ;关中断MOV SI,OFFSET LEDDATAADD SI,NUMMOV AL,[SI]MOV DX,300HOUT DX,AL ;点亮LEDCMP NUM,08HJNE NEXTMOV NUM,00HNEXT :MOV AL,62H ;发中断结束命令MOV DX,0A0HOUT DX,AL ;向从片8259发EOI命令OUT 020H,AL ;向主片8259发EOI命令STI ;开中断POP DXPOP AXPOP SIIRETLEDLIGHT ENDPdelay2 proc ;延时子程2 push cxpush bxmov cx,04ffhdl4: mov bx,0ffffhdl3: dec bxjnz dl3dec cxjnz dl4pop cxretdelay2 endpCODE ENDSEND START十二、调试中出现的问题及解决方法第一次调试成功代码,出来的现象只有一个灯的亮灭,而且运行的时候灯是全亮的,原因有两个,一个是硬件方面,实验箱本身有一定的不足,还有一个就是程序的不足;再经过了多次的调试之后又出现了彩灯闪烁不停的现象,而且前面灯全亮的问题也没得到解决;大概又过了几小时,才找到问题的根源,硬件方面:实验箱的问题无法避免;软件方面,用两层延时就可以改变彩灯闪烁的快慢。
用按键(采用外部中断0或1的方式)控制彩灯的运行
实验一标志寄存器实验目的:用按键(采用外部中断0或1的方式)控制彩灯的运行。
实验方法:1、通过在在中断过程中,设置标志变量flag(取值为0表示左移,1表示右移,2自定义)来判断按键被按下,每次按下切换一种显示方式。
2、当flag>2,则被清零,主程序按照flag的取值,分别执行不同的显示方式。
3、为了确保外部中断信号可靠,可对按键采取软件消抖处理。
实验程序编写:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint flag=0;uchar a[]={0xe7,0xdb,0xbd,0x7e};uchar LED=0xfe;uint i;void delay(unsigned int x) //定义延时函数{uchar i;while(x--){for(i=0;i<125;i++) //通过循环实现延迟功能{;}}}void intersvr0(void) interrupt 0 using 1 //INTO中断服务程序{flag=flag+1;if (flag>=3)flag=0;}void main(void){P0=0x00; //初始化p0口保持LED全亮EA=1; //开启中断总控制位IT0=1; //开启外部中断0控制位,采用边沿触发EX0=1; //允许中断0中断while(1){if (flag==0){P0=0x01;{LED=_crol_(LED,1);P0=LED;delay(500);}}if (flag==1){P0=0x80;{LED=_cror_(LED,1); P0=LED;delay(500);}}if (flag==2){{for (i=0;i<3;i++){LED=a[i];P0=LED;delay(500);P0=0xff;}}}}; //判断是否有按键按下,若有按键按下执行中断服务程序}实验结果:当运行后,通过按动一个键,彩灯在左移,右移和自定义花样(查表法)三种闪亮方式之间顺序切换。
用按键(采用外部中断0或1的方式)控制彩灯的运行
实验一标志寄存器实验目的:用按键(采用外部中断0或1的方式)控制彩灯的运行。
实验方法:一、通过在在中断过程中,设置标志变量flag(取值为0表示左移,1表示右移,2自定义)来判断按键被按下,每次按下切换一种显示方式。
二、当flag>2,则被清零,主程序按照flag的取值,分别执行不同的显示方式。
三、为了确保外部中断信号可靠,可对按键采取软件消抖处理。
实验程序编写:#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuint flag=0;uchar a[]={0xe7,0xdb,0xbd,0x7e};uchar LED=0xfe;void delay(unsigned int x) //定义延时函数{uchar i;while(x--){for(i=0;i<125;i++) //通过循环实现延迟功能{;}}}void intersvr0(void) interrupt 0 using 1 //INTO中断服务程序{flag=flag+1;if (flag>=3)flag=0;void main(void){P0=0x00; //初始化p0口保持LED全亮EA=1; //开启中断总控制位IT0=1; //开启外部中断0控制位,采用边沿触发EX0=1; //允许中断0中断while(1){if (flag==0){P0=0x01;{LED=_crol_(LED,1);P0=LED;delay(500);}}if (flag==1){P0=0x80;{LED=_cror_(LED,1); P0=LED;delay(500);}}if (flag==2){{for (i=0;i<3;i++) {LED=a[i];P0=LED;delay(500);P0=0xff;}}}}; //判断是否有按键按下,若有按键按下执行中断服务程序}实验结果:当运行后,通过按动一个键,彩灯在左移,右移和自定义花样(查表法)三种闪亮方式之间顺序切换。
跑马灯1秒间隔闪烁---运用定时中断方法控制P1口亮灯实验
实验三运用定时中断方法控制P1口亮灯实验姓名:郑旅军学号:0656061指导老师:邹慧兰成绩:一、实验目的1学习内部定时/计数器的使用2学习定时中断处理程序的编程方法二、实验内容P1口作为输出口,接发光二极管,编写相应的程序使发光二极管点亮。
发光二极管亮灭的时间间隔可以由定时中断子程序进行控制。
要求0.5S中亮一个。
三、实验预备知识1.P1口是准双向口,可以定义为输入,也可以定义为输出2.本实验中采用定时器来实现中断四、程序框图五、实验电路图P1.0--------LED0P1.1--------LED1P1.2--------LED2P1.3--------LED3P1.4--------LED4P1.5--------LED5P1.6--------LED6P1.7--------LED7六、实验步骤1.按要求编写相应的程序#include "reg51.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned intuint num=4;uchar XX=0x01;void timer0() interrupt 1{n um--;TH0=0x0B;T L0=0xDC; //重新设置初值i f(num==0){XX=_crol_(XX,1); //或者是 XX=XX<<1num=4;}}void main(){T MOD=0x01; // set model oneT H0=0x0B;T L0=0xDC; //设置初值E A=1; //总中断允许E T0=1; //定时中断允许TR0=1; //定时开始f or(;;){P1=XX; //计时溢出时,退出循环,跳到中断子程序}}由于晶振是6 MHz ,所以机器周期为 s μ2,延时0.5 S,则是延时ss μ25.0=250000个机器2,所以考虑将250000分开4次循环计时,设置计数器num。
单片机系统开发之利用中断控制8盏灯的循环点亮
单片机应用系统开发作业利用中断控制8盏灯花样闪烁学校:沈阳理工大学专业:信息对抗技术学号:1411050121姓名:吴志飞设晶振频率为12MHZ,利用中断系统使主程序P0口进行花样显示。
显示规律为:(1)P0口连接8个LED,依次左移闪亮;(2)当按下INT1时,8个LED灯依次右移闪亮;(3)当按下INT0时,8个灯闪亮5次。
2.系统设计分析:单片机的最小系统+8盏LED灯+排电阻。
本系统涉及到两个外中断,中断优先级,左移右移等问题。
在设计时可能要设计中断优先级。
左移右移需要用到两个移位指令RL 和RR。
3.系统原理图设计:系统所需原件为单片机AT89C51,瓷片电容CAP30pf,晶振CRYSTAL12MHZ,电解电容CAP-ELEC,电阻RES,发光二极管LED8只,排电阻RESPACK-8以及开关SWITCH。
利用中断控制8盏LED灯花样闪烁的原理图如1.1所示。
图1.1 利用中断制8盏LED灯花样闪烁原理图5.系统源程序设计:汇编源程序:ORG 0000HAJMP STARTORG 0003HAJMP INTR0ORG 0013HAJMP INTR1 START:MOV IE,#85HMOV IP,#01HMOV TCON,#00HMOV SP,#60HMOV P0,#0FFHMOV P3,#0FFHMOV A,#0FEHLP1: MOV P0,ARL ALCALL DELAYSJMP LP1INTR0:PUSH ACCPUSH PSWMOV R1,#10MOV A,#00H XH:MOV P0,ALCALL DELAYCPL ADJNZ R1, XHPOP PSWPOP ACCRETIINTR1:PUSH ACCPUSH PSWMOV A,#7FHMOV R2,#16 XH1: MOV P0,ALCALL DELAYRR ADJNZ R2, XH1POP PSWPOP ACCRETI DELAY: MOV R7,#20 DELAY1: MOV R6,#20 DELAY2: MOV R5,#248DJNZ R5,$DJNZ R6,DELAY2DJNZ R7,DELAY1RETENDC语言源程序:#include<reg51.h>#include<intrins.h>void delay();#define uint unsigned int#define uchar unsigned char uchar temp;uint i;void main(void){IE=0X85;IP=0X01;TCON=0X00;temp=0xfe;while(1){P0=temp;delay();temp=_crol_(temp,1); }}void int0() interrupt 0{ uchar s;s=0x00;for(i=0;i<10;i++){P0=s;delay();s=~s;}}void int1() interrupt 2{uchar temp1;temp1=0x7f;while(1){P0=temp1;delay();temp1=_cror_(temp1,1);}}void delay(){uint i,j;for(i=0;i<256;i++)for(j=0;j<256;j++) {;}6.在keil中进行调试:(1)创建“中断控制8盏灯花样闪亮”项目,选择单片机型号为AT89C51,汇编源程序,保存为“中断控制8盏灯花样闪亮.ASM”或“中断控制8盏灯花样闪亮.C”。
DSP实验四TMS320F28335 定时器 中断 IO中断 控制LED亮灭
DSP实验四TMS320F28335 定时器中断 IO中断控制LED亮灭dsp实验四、tms320f28335定时器中断io中断控制led亮灭继续我的第四个实验;实现定时器中断功能处理ld4翻转,按键IO中断控制ld3翻转;学习目的:中断寄存器的设置,io中断、定时器中断的使用,F28335有三个定时器:定时器0、定时器1和定时器2(定时器2也可用于DSP/BIOS);功能描述:开机时Ld3和ld4默认关闭;初始化完成后,ld4以1hz(1s)频率做状态翻转;ld3接受按键控制,每触发一次按键,状态翻转一次。
电路连接说明:Ld4和ld3设置为通用GPIO上拉输出。
初始化后,输出LED默认熄灭;Ld4和ld3控制LED灯的负极,如下图所示;本次实验选用定时器0,程序时刻读取计数器的值,当值为0时,产生定时器0中断,ld4状态翻转;IO键SW12中断控制ld3状态反转。
定时器0中断程序设计说明:第一步。
定时器0的预设寄存器和计数器设置:定时器输入时钟为sysclkout(=135mhz),1、如果定时1s(即1hz)中断一次(即计数结束),1hz=135mhz/1350/100000预分频器寄存器(即分频器)设置为1350,计数器设置为100000;2、如果定时1ms(即1000hz)中断一次,计算公式为:1000hz=135mhz/1350/100预设寄存器也设置为1350,计数器设置为100;转让声明如下://定时器0设为1hz=135mhz/(1350*100000)cputimer0regs。
珠三角。
全部=100000;//计数周期寄存器。
10万次循环后,计数器降至0putimer0regs tpr。
一点tddr=1350&0xff;//0x546预分频器寄存器(预分频器)cputimer0regs.tprh.bit.tddrh=(1350>>8)&0x00ff;//0x546预定标寄存器(预分频器)第二步a)设置定时器0相关中断寄存器使能定时器0中断,即cputimer0regs.tcr.bit.tie=1;//启用计时器0中断b)设置饼图级别相关中断寄存器,以启用计时器0中断所在的饼图组,即pieierx寄存器设置C)设置CPU级别中断相关寄存器,CPU级别启用与上述饼图对应的通道,即ier寄存器设置步骤3中断向量入口映射位置设置,如下:eallow;//thisisneededtowritetoeallowprotectedregisters皮埃维克塔。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中断方式控制彩灯闪亮实验
一、设计时间
2011年05月13日
二、设计地点
湖南城市学院第一实验楼计算机系机房507
三、设计目的
通过8259中断控制器应用编程实验,学习中断控制器的工作原理及中断控制程序的设计方法。
四、设计小组成员
0906402第1组朱小斌兰大为陈蕾
五、指导老师
阳俊
六、实验课题
在声光报警模块上按动SW3开关,通过8255向主机内的中断控制器申请10号中断,在中断服务程序中,点亮声光报警模块上的LED灯。
七、实验要求
利用MFID实验平台和声-光报警器模块进行硬件电路连接,利用MF2KI集成开发环境进行中断软件控制程序设计、调试,直到LED灯正常工作。
八、实验原理
1.声-光报警器模块板电路原理如图2.1.4所示。
模块板上包括4种简单的I/O外设:扬声器、8个LED彩灯、8位DIP开关及按钮开关SW3。
它们都是并行接口的对象,虽然功能单一,结构简单,但都必须通过接口电路才能进入微机系统,接受CPU的控制,发挥相应的作用。
2.声-光报警器接口的设计原理与方法,参考计算机接口技术相关参考书。
图2.1.4 声-光报警器模块板电路原理框图
九、实验步骤
步骤一:在MFID 实验平台上的C 区的IRQ10与PC4相连。
步骤二:在MF2KP 环境下输入汇编程序,编译、连接、运行。
步骤三:每按1次SW3键,PC4申请1次中断,LED 点亮一次
十、算法及流程图
26 芯 并 行 口 插 座
50 芯 扩 展 总 线
十一、源程序
;*---------------------------------------------------------*
;* Aexp14.asm 中断控制器8259应用实验-中断方式控制彩灯点亮*
;* 中断方式控制彩灯点亮程序source file * ;* 运行步骤:1.将PC4和IRQ10两个跳接开关分别联上*
;* 2.按下1次SW3,申请1次中断,使LED灯点亮1次*
;* Copyright (c) 2002 by HUST * ;*---------------------------------------------------------*
STACK1 SEGMENT STACK
DW 200 DUP(?)
STACK1 ENDS
DATA SEGMENT
MESG1 DB 'Press SW3 one time to invoke interrupt one time,and to light one of LEDs',0ah,0dh
DB 'Exit with q/Q',0ah,0dh,'$'
LEDDATA DB 01H,02H,04H,08H,10H,20H,40H,80H
NUM DW(0)
INT0A_OFF DW(0)
INT0A_SEG DW(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA
MOV DS,AX
MOV AH,09H
MOV DX,OFFSET MESG1
INT 21h ;显示提示信息
MOV DX,303H ;初始化8255
MOV AL,80H
OUT DX,AL
MOV DX,301H ;LED灯熄灭
MOV AL,00H
OUT DX,AL
MOV AX,3572H ;获取原中断向量,返回参数ES:BX=原中断服务程序的入口地址
INT 21H ;读中断向量,输入参数AH=35H,AL=中断类型号
MOV INT0A_OFF,BX ;保存原中断向量
MOV BX,ES
MOV INT0A_SEG,BX
CLI ;关中断
MOV AX,2572H
MOV DX,SEG LEDLIGHT ;设置新的中断向量
PUSH DS ;DS:DX为中断服务程序的入口地址
MOV DS,DX
MOV DX,OFFSET LEDLIGHT
INT 21H
POP DS
STI ;开中断
IN AL,0A1H ;打开IRQ10
AND AL,0FBH
OUT 0A1H,AL
IN AL,21H ;打开IRQ2
AND AL,0FBH
OUT 21H,AL
L1:
MOV AH,0BH ;检查是否有’Q’或’q’键按下
INT 21H
INC AL
JNZ NEXT0 ; 若无键按下,则程序往下执行
MOV AH,08H ;如有’Q’或’q’键按下,则程序退出
INT 21H
CMP AL,'q'
JZ EXIT
CMP AL,'Q'
JZ EXIT
NEXT0:
MOV DX,302H ;查PC2是否为0
IN AL,DX
AND AL,04H
JNZ L1
MOV DX,303H ;按下SW3,则PC4=1申请中断MOV AL,09H
OUT DX,AL
PUSH CX
MOV CX,100
WT: LOOP WT
POP CX
MOV DX,303H ;置PC4=0
MOV AL,08H
OUT DX,AL
JMP L1
EXIT:
MOV AX,2572H ;恢复中断向量
MOV DX,INT0A_SEG
PUSH DS
MOV DS,DX
MOV DX,INT0A_OFF
INT 21H
POP DS
IN AL,0A1H ;屏蔽IRQ10
OR AL,04H
OUT 0A1H,AL
IN AL,21H ;屏蔽IRQ2
OR AL,04H
OUT 21H,AL
MOV AX,4C00H ;程序退出
INT 21H
LEDLIGHT PROC FAR ;中断服务程序PUSH SI
PUSH AX
PUSH DX
CLI ;关中断
MOV SI,OFFSET LEDDATA
ADD SI,NUM
MOV AL,[SI]
MOV DX,300H
OUT DX,AL ;点亮LED
INC NUM
CMP NUM,08H
JNE NEXT
MOV NUM,00H
NEXT :
MOV AL,62H ;发中断结束命令
MOV DX,0A0H
OUT DX,AL ;向从片8259发EOI命令OUT 020H,AL ;向主片8259发EOI命令STI ;开中断
POP DX
POP AX
POP SI
IRET
LEDLIGHT ENDP
CODE ENDS
END START
十二、实验心得
这次实验做的够艰辛的,相对于以前来说,想这样完成实验的态度真是破天荒了。
从下午四点半开始进入实验室,直到晚上十点才离开。
想来就觉得狼狈。
是自己不够努力,不够勤奋,解决一个貌似简单的题而需下这么大的功夫才能勉强过关。
汇编语言的编写到现在还不习惯,相对C抽象多了。
这次总算尝到了基础不扎实的苦头了。
这必是一种佳机。
麻木的灵魂于此就容易苏醒了。