清华大学计算机硬件技术基础实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:实验6:中断技术

姓名:袁鹏学号:2013011780

实验班号:33 机器号:42

一.实验目的

1. 了解中断原理,包括对中断源、中断向量、中断类型号、中断程序以及中断响应过程的理解;

2. 掌握单片机 C 语言中断程序设计方法

二.实验任务

1.中断响应过程的理解

该程序的功能是让P2.3控制的LED灯不断闪烁,当P1.1控制的开关发出中断申请时,控制P2.4控制的蜂鸣器响三声,然后继续让LED灯闪烁。

1) 从程序如何判断用的是哪个中断源?其中断类型号是多少?将实验板上某一按键与

该中断源对应的引脚相连,运行程序,操作按键,观察现象。

程序是通过判断中断标志位来确定是哪个中断源,P1.1的中断类型号是2。运程序时P2.3控制的LED4灯不断闪烁,当P1.1控制的开关发出中断申请时,控制P2.4控制的蜂鸣器响三声,然后继续让LED4灯闪烁。

2)main 函数中无调用函数Buzz 的语句,函数Buzz 如何能被执行?何时会被执行?据

此描述中断响应过程。

函数Buzz是在函数名为port_ISR的中断程序中,因此当P1.1发出中断申请时,函数port_ISR 就会被执行,执行完毕后再返回main函数中继续执行main函数。

3) 如果port_int 函数中不清分中断标志P1IFG 的后果是什么?

如果不清分中断标志P1IFG的话就会一直相应中断,然后port_ISR函数就会一直被执行,蜂鸣器不断的响。

4) 如果L6_int.c 中的PORT1_VECTOR 改为PORT2_VECTOR,其他不变,程序执行

的后果是什么?为什么?(可在主程序入口处加一断点,运行程序,看现象,分析原因)将PORT1_VECTOR 改为PORT2_VECTOR后当按下K2键给P1.1发出中断申请后蜂鸣器不会鸣叫,因为没有正确的设置中断向量,未能将中断程序的入口地址放入FFE0+偏址的中断向量表中,因此程序不能正确的进行中断响应。

思考:当在主程序入口处加一断点时可以发现,由于已经设置了中断的端口,因此当有中断信号发出时,程序仍然会去执行中断子程,但由于中断向量没有正确设置,PC指针会跑飞,然后机器会自动复位,重新执行程序。

5)如果中断源采用的是P1.5, 按键用K7,请设计连线,修改L6_int.c 程序完成以中断

方式响应K7 的操作。

只需要将P1.1允许中断改为P1.5允许中断即可,同时将P1.5用跳线块与K7相连,具体代码如

去掉程序最后的无限循环语句后LED4灯不在闪烁,但当P1.1发出中断申请后蜂鸣器还是会响三下,因此如果仅仅实现中断功能,则可以去掉无限循环语句。

2. 中断程序编程练习

将P1.4、P1.5与K5、K6相连,作为中断源,将P1.7、P2.0、P2.6与BUZZ、LED1、LED7相连,

任务2 功能?

若用长导线将按键K5、K6 分别连接在P2.2 和P2.5 上,则只需将P2.2与P2.5设置为允许中断即可,具体代码如下:

思考:K5键连接的P1.4与K6键连接的P1.6均属于同一级优先级,因此当执行P1.4发出的中断子程时若按下K6再次发出中断申请,则程序会先处理完P1.4控制的中断程序,然后

在执行完后执行P1.5控制的子程。若想要实现实时反馈,则可以将K6连接的端口改为P2.X,由于P2端口的中断优先级高于P1,因此程序会优先执行P2控制的中断程序。

3. 采用事件标志处理中断

阅读程序 L6_intA.c 和L6_intB.c(见后页),描述其实现功能。比较L6_intA.c 和

L6_intB.c二者在编程实现上有何不同。

程序A和程序B实现的功能相同:用P1.0作为中断源,当P1.0接收到中断信号时,控制蜂鸣器响一声。不同的是程序A把控制蜂鸣器鸣叫的过程放在中断程序中,而程序B仅仅在中断程序中设置了一个事件标志,而把控制蜂鸣器鸣叫放在了while循环中,这样每当事件标志被响应时,蜂鸣器就会鸣一声。因此程序A的中断子程执行时间长于程序B。

用L6_intB.c 的方法,改写任务2 的编程。

具体代码如下:

4.(选做)按键抖动处理

为了去除这些毛刺带来的影响,进行按键消抖,需要在响应了第一次下降沿后,加入一定的

实验名称:实验7:基本时钟和低功耗模式

姓名:袁鹏学号:2013011780

实验班号:33 机器号:42

一.实验目的

1. 了解MSP430Gxxx 基本时钟模块的工作原理,掌握其控制方法;

2. 掌握利用时钟信号和中断技术实现定时功能的方法;

3.掌握低功耗模式控制方法

二. 实验任务

1. 数字示波器的使用

(1).用示波器测得信号源的周期T=20us、频率f=1.000KHZ、峰峰值V=3.12V。(2).测得实验板上Vcc信号正常,Vccmax=3.76V,Vccmin=3.52V,Vccavg=3.66V。

2. 测试上电复位系统的 ACLK、和SMCLK 时钟频率

输出的ACLK频率为F(ACLK)=32.79KHZ,SMCLK的频率为F(SMCLK)=1.031MHZ。

代码如下:

上电复位后,通过查看基本时钟模块相关寄存器,可知MCLK的时钟源为DCO,SMCLK的时钟源也为DCO,因此通过测量上面复位后的SMCLK频率可知MCLK的频率,由上述可知F(MCLK)=1.031.MHZ。

3. 掌握基本时钟模块的编程控制

参看附录A 实验板原理图,用跳线将JP8 中的插针信号接到晶振32.768Khz 侧,使晶振与单片机的P2.6 和P2.7 相连。编程控制基本时钟模块,设置ACLK 分别为下面时钟频率,并通过P1.0 输出ACLK,用示波器观察:

(1). ACLK=4096Hz;(时钟源外部晶振,32768Hz/8)

观察的F(ACLK)= 4.098KHZ。

相关文档
最新文档