单片机中断技术实验报告Word下载.docx

上传人:b****2 文档编号:3332016 上传时间:2023-05-01 格式:DOCX 页数:36 大小:583.91KB
下载 相关 举报
单片机中断技术实验报告Word下载.docx_第1页
第1页 / 共36页
单片机中断技术实验报告Word下载.docx_第2页
第2页 / 共36页
单片机中断技术实验报告Word下载.docx_第3页
第3页 / 共36页
单片机中断技术实验报告Word下载.docx_第4页
第4页 / 共36页
单片机中断技术实验报告Word下载.docx_第5页
第5页 / 共36页
单片机中断技术实验报告Word下载.docx_第6页
第6页 / 共36页
单片机中断技术实验报告Word下载.docx_第7页
第7页 / 共36页
单片机中断技术实验报告Word下载.docx_第8页
第8页 / 共36页
单片机中断技术实验报告Word下载.docx_第9页
第9页 / 共36页
单片机中断技术实验报告Word下载.docx_第10页
第10页 / 共36页
单片机中断技术实验报告Word下载.docx_第11页
第11页 / 共36页
单片机中断技术实验报告Word下载.docx_第12页
第12页 / 共36页
单片机中断技术实验报告Word下载.docx_第13页
第13页 / 共36页
单片机中断技术实验报告Word下载.docx_第14页
第14页 / 共36页
单片机中断技术实验报告Word下载.docx_第15页
第15页 / 共36页
单片机中断技术实验报告Word下载.docx_第16页
第16页 / 共36页
单片机中断技术实验报告Word下载.docx_第17页
第17页 / 共36页
单片机中断技术实验报告Word下载.docx_第18页
第18页 / 共36页
单片机中断技术实验报告Word下载.docx_第19页
第19页 / 共36页
单片机中断技术实验报告Word下载.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机中断技术实验报告Word下载.docx

《单片机中断技术实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《单片机中断技术实验报告Word下载.docx(36页珍藏版)》请在冰点文库上搜索。

单片机中断技术实验报告Word下载.docx

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

中断将一直重复进行下去;

4)如果L4_int.c中的PORT1_VECTOR改为PORT2_VECTOR,其他

5)

6)

7)

P1端口的操作改为对P2端口操作。

具体程序见附录程序2之思考题。

3.数字示波器的使用

1)将信号源的波形在示波器上显示出来,掌握测量周期、频率、峰峰值的方法;

2)用孔孔导线将实验板的地信号与示波器的地信号相连,测量实验板上的Vcc电源信

号是否正常。

1)

a.信号源的峰峰值为3.20V;

b.周期为1.000ms;

c.频率为1.000kHz.

2)经测量,Vcc=3.64V,正常

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

编程输出单片机上电复位后的ACLK、和SMCLK时钟,用示波器测量其频率,并记录下来。

思考:

上电复位后,CPU工作的时钟信号MCLK频率值是多少?

经分析

1 本程序需要置引脚P1.0、P1.4分别输出ACLK、SMCLK;

2 需要确认外部晶振连上;

3 具体程序见附录程序5测试程序。

4 测得f(ACLK)=32.79kHz,f(SMCLK)=1.044MHz.

思考题

上电复位后,通过观察寄存器,发现BCSCTL2寄存器上SELM位为00,SELS位为则0,说明MCLK与SMCLK均由DCO振荡器控制,所以MCLK的频率与SMCLK相同,也为1.044MHz。

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

参看附录A实验板原理图,用跳线将JP8中的插针信号接到晶振32.768Khz侧,使晶振

与单片机的P2.6和P2.7相连。

编程控制基本时钟模块,设置ACLK分别为下面时钟频

率,并通过P1.0输出ACLK,用示波器观察:

1)ACLK=4096Hz;

(时钟源外部晶振,32768Hz/8)

2)ACLK=3KHz;

(时钟源VLOCLK,12KHz/4)

可否编程在引脚P2.0上输出ACLK?

为什么?

a.1)中,应使单片机接外部晶振,并使ACLK的输出为8分频;

具体程序见附录程序5之1)

b.2)中,应通过BCSCTL3寄存器选择时钟源VLOCLK,并使其输出为4分频,具体程序见附录程序5之2)

不能在引脚P2.0上输出ACLK,因为,各引脚的特殊功能是由单片机结构所决定的,P2.0引脚不具有输出辅助时钟的功能.

6.DCO出厂校验值的频率检测

1)利用出厂校验值,编程使DCO分别为1MHz、8MHz、12MHz、16MHz,通过P1.4

输出,用示波器测量实际值。

答:

经分析知

1 P1.4输出的是SMCLK;

2 1MHz、8MHz、12MHz、16MHz的情况类似,此处仅以1MHz为例,具体程序见附录程序6

3 测得真实值分别为1.002MHz、7.752MHz、12.08MHz、15.94MHz。

7.利用输出的时钟信号做中断源,实现定时功能

将任务3中P1.0输出的3KHzACLK时钟信号,作为P1.5的中断申请信号,用导线将

P1.5与P1.0相连即可,在中断子程中设置一个计数变量,计数中断子程被执行的次数,

中断子程每被执行3000次表示一秒时间到。

利用该定时功能,将8个发光二级管设计

成一个秒表,显示秒值,每秒改变一次8个发光二级管的显示。

根据分析可知

a.需要在实验5之2)的基础上进行编程;

b.须用跳线板将P2的引脚与LED灯相连;

c.具体程序见附录程序7

如果要每隔10秒蜂鸣器响一声,如何在任务5的基础上编程实现?

将P1.7与蜂鸣器相连,增加一个延时函数以及每10秒操作一次P1.7上电位;

具体程序见附录程序7之思考题

三、实验选做任务

1.中断响应的理解

6)(选做)去掉L4_int.c程序最后的那条无限循环语句,看看有什么现象?

可以去掉吗?

1 现象:

程序很快运行结束,无法响应中断;

2 不可去掉无限循环语句

注意:

1)查看io430G2553.h文件末尾处有关中断向量偏址的符号定义。

2)为便于了解程序执行流程,可在中断子程入口处设置一断点,然后连续运行

程序(F5),观察操作按键和不操作按键两种情况下程序执行的现象有何不同。

2.(选做)采用事件标志处理中断

阅读程序L4_intA.c和L4_intB.c(见后页),描述其实现功能。

在实验板上将P1.0与

一个按键的控制端相连,P1.7与蜂鸣器的控制端相连。

比较L4_intA.c和L4_intB.c

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

注意各自中断子程执行时间的长短。

用L4_intB.c的方

法,改写任务2的编程。

不同之处:

1 采用事件标志处理中断时,按键之后机器做出的反应相对较慢,这是因为它需要现在中断子程中设置flag,再回到主程序根据flag做相应改动,耗费时间较长。

2 但是采用事件标志中断的一个好处就是,由于它在中断子程中只是进行了一个标记,你可以在标记flag在主程序中发挥作用之前再次进行中断,将flag改为其它值。

它相当于解决了一般中断过程中“中断执行时,屏蔽其他中断”的问题。

任务2改写后的程序程序3

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

程序L4_Key.C见后页,其功能是用中断方式相应与P1.2连接的按键,计数按键的次

数,并将所计的次数用8个发光二极管显示出来。

运行该程序,并操作按键,观察实际

操作的次数与显示值之间的关系。

编程改进L4_Key.C程序,用软件方式去除按键抖动

的影响。

根据分析,需要在响应了第一次下降沿后,加入一定的延时,躲过其它电压毛刺的产生时间。

具体程序见附录程序4

通过实验观察可以发现,改进之前,二进制显示的数值明显大于实际按键数,而改进之后,两者数值大致相等。

4.DCO出厂校验值的频率检测

2)(选做)控制发光二级管通过延时闪亮,编程分别使主系统时钟工作在

(1)MCLK=复位频率/8约100KHz;

(2)MCLK=DCO=16MHz;

两种不同频率下,观察灯的亮灭速度有何不同,掌握主系统时钟的变化对程

序执行速度的影响

根据分析

a.

(1)须选择8分频;

b.

(1)须具备延时函数与LED灯亮函数;

c.

(2)须选择DCO时钟源,并使用出厂校验值16MHz;

d.

(2)须具备延时函数与LED灯亮函数;

e.具体程序见附录选作4之1)和选作4之2)

f.实验观察到两种不同频率下,第一种情形下灯的亮灭速度非常慢,而第二种情形下灯的亮灭速度非常快,则说明:

主系统时钟频率的加快会加速执行速度。

5.(选做)改用4个数码管显示秒值,重新完成必做任务7

本题需要用到数码管的知识,需要标志值,具体程序见附录选作5程序

四、小结

总的来说,我觉得这次的实验内容很多,但是收获也是很大的;

并且在这个过程中重温了课本,加深了对课本上抽象的内容的理解,比如说实验前对于时钟,我的理解一直很模糊,似是而非,经过实验,发现其实它不过是三个寄存器,三个时钟信号,四个时钟源之间的问题,虽然过程比较繁琐,脉络却是清晰的;

而且关于中断,我也有了进一步的理解,特别是最后几个选作实验和必做实验是对这两节知识的综合应用,难度有点大,但是写出来之后还是很有成就感的。

【附录】

一、基本任务程序

1.必做第1题

5)

#include"

io430.h"

in430.h"

voiddelay()//延时函数

{unsignedintj;

for(j=0;

j<

0xffff;

j++);

}

voidBlink()//LED闪

{P2OUT&

=~BIT3;

delay();

P2OUT|=BIT3;

voidBuzz()//蜂鸣响

{unsignedinti;

for(i=0;

i<

3;

i++)

{P2OUT&

=~BIT4;

P2OUT|=BIT4;

};

voidmain(void)

{WDTCTL=WDTPW+WDTHOLD;

//关闭看门狗

//设置引脚P2.4、P2.3输出,P2.3连接LED,P2.4连接蜂鸣器

P2SEL&

=~(BIT3+BIT4);

P2SEL2&

P2OUT|=(BIT3+BIT4);

P2DIR|=(BIT3+BIT4);

//设置端口P1.5允许中断

P1SEL&

P1OUT|=BIT5;

P1REN|=BIT5;

P1DIR&

=~BIT5;

P1IES|=BIT5;

P1IFG&

P1IE|=BIT5;

_EINT();

//总中断允许

for(;

;

)//主循环

{Blink();

#pragmavector=PORT1_VECTOR

__interruptvoidport_ISR()

{Buzz();

2.必做第2题

voidL1Blink()//L1闪3次

=~BIT1;

P2OUT|=BIT1;

voidL7Blink()//L7闪

}

//设置引脚P2.1、P2.3、P2.4输出,P2.1、P2.3分别连接L1和L7,P2.4连接蜂鸣器

=~(BIT1+BIT3+BIT4);

P2OUT|=(BIT1+BIT3+BIT4);

P2DIR|=(BIT1+BIT3+BIT4);

//设置端口P1.4、P1.5允许中断

=~(BIT4+BIT5);

P1OUT|=(BIT4+BIT5);

P1REN|=(BIT4+BIT5);

=~(BIT4+BIT5);

P1IES|=(BIT4+BIT5);

P1IE|=(BIT4+BIT5);

{L7Blink();

{

if((P1IFG&

BIT4)!

=0)

{Buzz();

P1IFG&

BIT5)!

{

L1Blink();

P1IFG&

};

2.思考题

//设置端口P2.2、P2.5允许中断

=~(BIT2+BIT5);

P2OUT|=(BIT2+BIT5);

P2REN|=(BIT2+BIT5);

P2DIR&

=~(BIT2+BIT5);

P2IES|=(BIT2+BIT5);

P2IFG&

P2IE|=(BIT2+BIT5);

#pragmavector=PORT2_VECTOR

if((P2IFG&

BIT2)!

P2IFG&

=~BIT2;

P2IFG&

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

intmain(void)

//关闭看门狗

WDTCTL=WDTPW+WDTHOLD;

//设置P2.6、P2.7连接外部晶振

P2SEL|=(BIT6+BIT7);

P2SEL2&

=~(BIT6+BIT7);

P2DIR&

=~BIT6;

P2DIR|=BIT7;

//设置P1.0、P1.4输出ACLK、SMCLK

P1SEL|=BIT0;

P1SEL2&

=~BIT0;

P1DIR|=BIT0;

P1SEL|=BIT4;

P1DIR|=BIT4;

while

(1);

}

1)ACLK=4096Hz;

(时钟源外部晶振,32768HZ/8)

//设置P1.0输出ACLK

BCSCTL3&

=~(LFXT1S0+LFXT1S1);

//选择外部晶振

BCSCTL1|=(DIVA0+DIVA1);

//选择8分频

2)ACLK=3KHz;

(时钟源VLOCLK,12KHz/4)

=~LFXT1S0;

//选择时钟源VLOCLK

BCSCTL3|=LFXT1S1;

BCSCTL1&

=~DIVA0;

//选择4分频

BCSCTL1|=DIVA1;

第6题必做之DCO出厂校验值的频率检测

//设置P1.4输出SMCLK

BCSCTL2&

=~SELS;

//选择DCO时钟源

BCSCTL1=CALBC1_1MHZ;

//其他情况改变1MHz就可以了

DCOCTL=CALDCO_1MHZ;

必做第7题之利用输出的时钟信号做中断源,实现定时功能

unsignedchartime=0;

unsignedinti=0;

//关闭看门狗

//设置端口P1.0输出3KHzACLK时钟信号

//设置P2.0~P2.7为输出状态

P2SEL&

=0;

P2DIR|=0Xff;

P2OUT|=0Xff;

//设置端口P1.5允许中断

P1SEL&

P1REN|=BIT5;

P1OUT&

P1DIR&

P1IES&

P1IFG&

P1IE|=BIT5;

while

(1){

if(i>

=3000){

time+=1;

i=0;

P2OUT=~time;

//LED灯显示输出秒表的值

}

#pragmavector=PORT1_VECTOR

__interruptvoidport_ISR(){

i++;

=~(BIT5);

//清中断标志

 

2)必做7之思考题

voiddelay();

=~0;

//设置P1.7为输出状态

=~BIT7;

P1OUT|=BIT7;

P1DIR|=BIT7;

if((time%10)==0)

voiddelay(){//延时函数

unsignedintj;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2