欢迎来到天天文库
浏览记录
ID:6603774
大小:1.12 MB
页数:21页
时间:2018-01-20
《中断技术实验报告-基本时钟和定时器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验七、中断技术实验八、基本时钟和定时器实验报告实验七、中断技术一、实验目的1.了解中断原理,包括对中断源、中断向量、中断类型号、中断程序以及中断相应过程的理解;2.掌握单片机C语言中断程序设计方法。二、实验任务1.中断相应过程的理解(1)在中断子程序的定义之前,有一条预编译指令,观察其中的中断向量即可知道中断源。如本程序中的预编译指令是“#pragmavector=PORT1_VECTOR”可知中断源是P1.0~P1.7的八个引脚(准确说应该是P1.3)。在知道中断源的情况下,通过查表可以知道中断其对应的中断类型号是3。从程序中看
2、出中断标志位用的是Bit3,所以将P1.3与按键连接。实验现象:当操作时,LED灯一直闪烁,当按下K4(与P1.3相连)时,灯停止闪烁,蜂鸣器响三声之后灯继续闪烁。(2)port_ISR被在满足条件的时候被硬件执行,不受软件操控,所以程序中并没有调用这个函数的语句但是仍可以被执行。中断响应过程:由于在该程序中用到的是可屏蔽中断,中断相应需要满足三个条件:中断总控位、中断分控位、中断源发出请求(即中断标志位置位)。在程序中已经将中断总控位和分控位置于允许状态所以只需要中断标志位置位即可,所以当在按键的下降沿时(由P1.3作为中断源),
3、中断标志位被置位,即P1IFG&BIT3被置位,则中断子程被硬件自动运行,也就是函数port_ISR被执行。(3)当在运行完port_ISR时,如果中断标志位没有被清零则当跳出中断子程之后,由于依然满足中断相应的条件,所以中断会被继续执行,即中断将被一直运行下去。(4)在将PORT1_VECTOR改为PORT2_VECTOR之后在单片机上运行,发现按键不再能够使蜂鸣器响起,但是按键时原来闪烁的LED灯会暂停非常短暂的时间。这说明在按键时虽然程序暂时中断,但是并没有去执行中断子程里面的东西。在main函数入口处加入一断点时,按键时原来
4、闪烁的LED灯会停止闪烁,并且程序会停止在断点处。这是由于将中断向量改为PORT2_VECTOR之后,在按下键的时候产生中断请求,但是由于PORT1的中断向量没有被预编译,所以不能够正确执行,所以中断子程不能够被执行。程序运行复位,所以程序会从最开始运行,所以在main函数的入口处加上断点时,运行程序,程序会停在断点处。(5)将原程序总中断的相关设置修改为以下:P2SEL&=~BIT5;P2SEL2&=~BIT5;P2OUT
5、=BIT5;P2REN
6、=BIT5;P2DIR&=~BIT5;P2IES
7、=BIT5;P2IFG&=~BIT
8、5;P2IE
9、=BIT5;另外#pragmavector=PORT1_VECTOR需要修改为:#pragmavector=PORT2_VECTOR;中断子程中的清零指令修改为:P2IFG&=~BIT5;在硬件连接上需要将P2.5连接至KEY6。即可实现程序的修改。2.中断程序编程练习(1)程序设计思路当程序中没有收到中断请求时,L5灯循环闪烁,该功能可以由main函数中的循环实现,即设置某引脚为输出引脚,并控制L5,则实现L5的循环闪烁则很容易实现。要求中中断源有两个,P1.2和P1.7均可以触发中断。由于P1.2和P1.7两个引脚
10、共享一个中断类型号,所以两个引脚的关于中断的设置相同,但是在中断子程中需要对两个中断进行判断,使得两个中断对应执行不同的指令。(2)硬件连接图(3)C语言程序#include"io430.h"#include"in430.h"voiddelay()//延时子函数{unsignedintj;for(j=0;j<0xffff;j++);}voidblink1()//LED5闪烁控制子函数{P2OUT&=~BIT4;delay();P2OUT
11、=BIT4;delay();}voidblink2()//LED2闪烁控制子函数{for(int
12、i=0;i<2;i++){P2OUT&=~BIT1;delay();P2OUT
13、=BIT1;delay();};}voidBuzz()//蜂鸣器控制子函数{P2OUT&=~BIT2;delay();P2OUT
14、=BIT2;}intmain(void){//StopwatchdogtimertopreventtimeoutresetWDTCTL=WDTPW+WDTHOLD;//****输出端口设置***//P2SEL&=~(BIT4+BIT1+BIT2);P2SEL2&=~(BIT4+BIT1+BIT2);P2DIR
15、=(BIT4+B
16、IT1+BIT2);P2OUT
17、=(BIT4+BIT1+BIT2);//****中断相关设置****//P1SEL&=~(BIT2+BIT7);P1SEL2&=~(BIT2+BIT7);//设置GPIO类型P1DIR&=~(BIT2+
此文档下载收益归作者所有