单片机中断技术实验报告

合集下载

外部中断计数实验报告

外部中断计数实验报告

一、实验目的1. 理解单片机外部中断的工作原理和触发条件。

2. 掌握如何通过外部中断实现计数功能。

3. 学习中断服务程序的设计方法。

4. 提高单片机编程和调试能力。

二、实验环境1. 单片机:80C512. 开发工具:Keil uVision3. 实验电路:按键、LED灯、单片机及其相关外围电路三、实验原理外部中断是指单片机通过外部引脚接收到的中断信号,使得CPU暂停当前程序,转而执行中断服务程序。

本实验通过外部中断实现计数功能,具体原理如下:1. 将单片机的某个外部引脚(如P3.2)设置为外部中断0(INT0)的触发引脚。

2. 在外部中断0的中断服务程序中,设置一个计数变量,每次中断发生时,计数变量加1。

3. 将计数变量的值通过LED灯显示出来,以观察计数过程。

四、实验步骤1. 创建Keil uVision项目,并添加80C51固件库。

2. 编写C语言程序,实现以下功能:- 初始化外部中断0,设置中断触发方式为下降沿触发。

- 初始化定时器,用于产生中断。

- 编写外部中断0的中断服务程序,实现计数功能。

- 编写主函数,用于设置单片机的工作状态和显示计数结果。

3. 编译并下载程序到单片机。

4. 连接实验电路,包括按键、LED灯和单片机及其相关外围电路。

5. 观察实验现象,验证计数功能是否实现。

五、实验结果与分析1. 实验现象:按下按键,LED灯显示的计数值加1。

2. 分析:- 外部中断0的中断服务程序被正确调用。

- 计数变量在每次中断发生时加1。

- LED灯能够正确显示计数结果。

六、实验总结1. 本实验成功实现了通过外部中断实现计数功能,验证了单片机外部中断的工作原理。

2. 通过编写中断服务程序,掌握了中断编程方法。

3. 实验过程中,遇到了一些问题,如中断服务程序编写错误、程序编译错误等,通过查阅资料和调试,最终解决了问题。

4. 通过本次实验,提高了单片机编程和调试能力,加深了对单片机外部中断的理解。

单片机中断实验报告

单片机中断实验报告

实验三定时器中断实验一、实验目的1、掌握51单片机定时器基本知识;2、掌握定时器的基本编程方法;3、学会使用定时器中断。

二、实验内容1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。

三、实验设备PC 机一台、单片机实验箱主要器件:AT89C52、7SEG-BCD、四、实验步骤1、使用Proteus设计仿真原理图;2、使用Keil设计程序;3、联合调试仿真。

五、实验流程图六、实验程序与结果#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit F=P2^1;void timer1_init(){TMOD=0x10;//将定时器1设置为工作方式1TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500//(1/500)s/(1/3000000)s=6000TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1;ET1=1;TR1=1;}void main(){timer1_init();while(1);}void timer1() interrupt 3{TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256;F=~F;//每次进入中断P1.1口取反}#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit F=P2^1;void timer0_init(){TMOD=0x01;//将定时器0设置为工作方式1TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us//500us/6us=83.3333TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83EA=1;ET0=1;TR0=1;}void main(){timer0_init();while(1);}void timer0() interrupt 1{TH0=(65536-83)/256;//每次进入中断,重装初值TL0=(65536-83)%256;F=~F;//每次进入中断P1.1口取反,表示定时时间到}#include<reg51.h> // 包含51单片机寄存器定义的头文件#define seg_data P1#define seg_data2 P3#define uint unsigned intsbit D1=P2^0; //将D1位定义为P2.0引脚uint counter=0;unsigned int unit=0,decade=0,avs=0;//time=0;/************************************************************** 函数功能:主函数**************************************************************/ void main(void){uint time,time1,temp1,temp2,temp3;seg_data=0;seg_data2=0;TMOD=0x11; //使用定时器T0的模式2TH0=0xFC; //定时器T0的高8位赋初值 1000-500TL0=0x18; //定时器T0的低8位赋初值TH1=(65536-50000)/256; //定时器T1的高8位赋初值TL1=(65536-50000)%256; //定时器T1的低8位赋初值EA=1; //开总中断ET0=1; //定时器T0中断允许ET1=1;TR0=1; //启动定时器T0TR1=1;while(1)//无限循环等待中断{temp1=(decade&0x0F)<<4;temp2=unit&0x0F;time=temp2|temp1;seg_data=time;temp3=avs&0x0F;time1=temp3;seg_data2=time1;}}{D1=~D1; //按位取反操作,将P2.0引脚输出电平取反TH0=0xFF; //定时器T0的高8位赋初值 1000-500TL0=0x06; //定时器T0的低8位赋初值}void Time1(void) interrupt 3{counter++;if(counter>19){unit++;counter=0;}if(unit>9){decade++;unit=0;}if(decade>5){avs++;decade=0;}if(avs>9){avs=0;}TH1=(65536-50000)/256; //定时器T1的高8位赋初值TL1=(65536-50000)%256; //定时器T1的低8位赋初值TF1=0;}七、实验心得通过本次课程设计使我感受到它是一门综合性、实践性较强的课程,使我体会到要想综合运用所学的理论知识,提高我的设计能力,必须增加实际操作的环节。

单片机外部中断实验报告

单片机外部中断实验报告

单片机外部中断实验报告实验三外部中断实验报告班级:学号:姓名:教师:一、实验LI的1、掌握单片机外部中断的原理及过程。

2、掌握单片机外部中断程序的设计方法。

3、掌握单片机外部中断时中断方式的选择方法。

二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管DPD8O每当发生外部中断时,发光二极管以向下流水灯的方式点亮。

分别选择边沿触发外部中断放是和电平触发外部中断方式两种。

三、编程提示1、P3 口是8位准双向口,具有双重功能:第一功能和P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3. 0RXD串行输入口P3. 1TXD串行输出口P3. 2INTO外部中断0请求输入线P3. 3INT1外部中断1请求输入线P3.4TO定时器/计数器TO外部计数器脉冲输入线P3. 5T1定时器/计数器T1外部计数器脉冲输入线P3. 6WR外部数据存贮器写脉冲输出线P3. 7RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断003H定时器/计数器T1溢出中断OBH外部中断113H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EAESET1EX1ET0EX0(1)外部中断源允许中断(中断0: EX0=l;中断1: EXl=l)o(2)CPU 开中断(EA二1)。

(3)外部中断方式CPU发出中断申请。

4、外部中断方式的选择控制TCOX:TF1TR1TF0TR0IE1IT1IE0IT0IT0是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。

前一方式IT0二1,后一方式IT0二0。

IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。

前一方式IT1=1,后一方式ITl=0o当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 端口控制。

单片机的中断实验报告

单片机的中断实验报告

单片机的中断实验报告单片机的中断实验报告引言:单片机是现代电子技术中的一种重要组成部分,广泛应用于各种电子设备中。

中断是单片机中的一种重要功能,能够提高系统的响应速度和实时性。

本实验旨在通过对单片机的中断功能进行实验,深入了解中断的原理和应用。

一、实验目的本实验旨在通过对单片机的中断功能进行实验,掌握中断的原理和应用,提高对单片机的理解和应用能力。

二、实验器材和材料1. 单片机开发板2. 电脑3. USB数据线4. LED灯5. 电阻、电容等元件三、实验原理中断是单片机中的一种重要功能,当某个事件发生时,单片机可以立即中断当前程序的执行,转而执行中断服务程序,处理该事件。

中断可以分为外部中断和内部中断两种类型。

外部中断由外部设备触发,如按键、传感器等;内部中断由单片机内部的某个模块触发,如定时器溢出、串口接收等。

四、实验步骤1. 连接单片机开发板和电脑,并通过USB数据线进行通信。

2. 在开发环境中编写中断服务程序,实现对外部中断的响应。

3. 将LED灯连接到开发板的某个IO口,并设置为输入模式。

4. 在主程序中配置外部中断的触发条件和中断服务程序。

5. 运行程序,触发外部中断,观察LED灯的亮灭情况。

五、实验结果与分析经过实验,我们成功实现了对外部中断的响应,并观察到LED灯在中断触发时的亮灭情况。

通过实验结果的分析,我们可以得出以下结论:1. 外部中断可以有效地提高系统的响应速度和实时性,特别适用于需要及时处理外部事件的应用场景。

2. 中断服务程序的编写和配置是实现中断功能的关键,需要充分理解中断的原理和编程方法。

3. 在实际应用中,需要根据具体的需求和硬件条件来选择合适的中断触发条件和中断服务程序。

六、实验总结通过本次实验,我们深入了解了单片机的中断功能,并通过实际操作掌握了中断的原理和应用方法。

中断作为一种重要的系统功能,可以提高系统的响应速度和实时性,广泛应用于各种电子设备中。

在今后的学习和工作中,我们将进一步探索中断的应用领域,并不断提高自己的单片机编程能力。

单片机定时器及外部中断实验报告

单片机定时器及外部中断实验报告

单片机实验报告(二)实验名称:定时器及外部中断*名:**学号:*********班级:通信2班时间:2013.11南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技术的基本使用方法;3、学习中断处理程序的编程方法。

二、实验原理(1)以P1口作为输出口,定时器实现1s定时,实现显示数的1s加1,外部中断0键盘外接BUTTON,实现对显示数快速加1的控制。

(2)系统板上硬件连线把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。

把“单片机系统”A2区的INT0端口用导线连接到D1区的KEY1端口上;三、实验内容利用定时器中断控制1s的输出,使用外部中断0使得显示的数加1. 程序如下:#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(){uint x,y;for(x=100;x>0;x--)for(y=110;y>0;y--);}uchar m,flag;void main(){uchar a,b;TMOD=0x01;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EX0=1; EX1=1; PX1=1; ET0=1; EA=1; 中断开启TR0=1;m=0; P1=0;while(1){while(flag==0); flag=0;if(m==100) m=0;m++;a=m/10;b=m+a*6;P1=b;}}void timer0() interrupt 1 using 0{uchar t;TH1=(65536-50000)/256;TL1=(65536-50000)%256;if(t<20) t++;else { flag=1; t=0; }}void exter0() interrupt 0 using 1{if(INT0==0) delay();if(INT0==0) flag=1;}void exter1() interrupt 2 using 2{if(INT1==0) delay();if(INT1==0) m=0;}将编译好的程序下载到仿真电路中四、小结与体会通过本次定时器中断实验,我对定时器的工作原理有了更加深入的理解,这也是建立在向同学请教的基础上。

单片机外部中断实验报告

单片机外部中断实验报告

单片机外部中断实验报告实验目的:1、理解单片机外部中断的原理和用途;2、掌握单片机外部中断的配置和使用方法。

实验器材:1、STC15W408AS单片机开发板;2、简单的电路连接器;3、按钮开关。

实验原理:单片机外部中断是通过外部硬件信号触发单片机的中断请求,在单片机运行过程中,当外部信号满足特定条件时,会触发中断,并暂停当前的运行程序,转而执行中断服务程序。

通过外部中断,可以实现对外部事件的实时处理。

实验步骤:1、将按钮开关与单片机开发板连接,将按钮开关的一端与单片机的INT0引脚连接,另一端与GND连接。

2、在开发板上连接好电源并供电。

3、打开Keil软件,新建一个工程,并选择合适的单片机型号。

4、配置单片机的外部中断功能,设置INT0引脚为中断输入。

5、编写中断服务程序,当INT0引脚检测到边沿信号时,执行中断服务程序,并在其中加入相应的处理代码。

6、编写主程序,配置相关的引脚和寄存器,使单片机进入中断模式,接受外部中断信号,并执行中断服务程序。

7、下载程序到单片机开发板上,运行程序。

8、按下按钮开关,触发外部中断,并查看实验结果。

实验结果:当按下按钮开关时,实时触发外部中断,单片机停止当前程序的运行,进入中断模式,并执行中断服务程序中的相应代码。

实验总结:通过这次实验,我对单片机的外部中断有了更深入的理解,并学会了如何使用外部中断实现对外部事件的及时处理。

外部中断广泛应用于各种实时系统和设备中,具有很大的实用价值。

在以后的学习和实践中,我会进一步掌握和应用单片机的外部中断功能。

单片机中断实验报告

单片机中断实验报告
程序下载
通过单片机的下载接口,将可执行的二进制文件 下载到单片机中。
实验测试
通过按键触发外部中断,观察LED灯的状态变化, 验证程序的正确性。
04
实验结果与分析
中断响应时间测试
总结词
响应时间快
详细描述
在测试中,我们发现单片机的中断响应时间非常快,能够在极短的时间内对外 部事件做出响应。这主要得益于单片机的硬件架构和中断处理机制,使得单片 机能够迅速识别并处理外部事件。
提高编程能力
通过本次实验,我们认识到自己的编程能力还有很大的提升空间。在未来的学习中,我们将注重提高自 己的编程能力,包括代码的优化、调试技巧等方面。
THANKS
感谢观看
实验中的问题与解决方案
在实验过程中,我们遇到了一些问题,如中断触发条件不 稳定等,通过调整相关参数和优化代码,最终解决了这些 问题。
对实验的反思与建议
01
实验操作流程的不足
在实验过程中,我们发现操作流程仍存在一些不足之处,如某些步骤的
描述不够清晰,导致实验过程中出现了一些不必要的困惑。建议在后续
的实验指导书中对操作流程进行更加详细的描述。
深入学习单片机中断机制
通过本次实验,我们对单片机的中断机制有了初步的了解。在未来的学习中,我们计划深入学习单片机的中断机制, 了解更多关于中断的细节和应用技巧。
探索更多中断应用场景
除了本次实验中实现的按键中断和定时器中断外,我们还计划探索更多的中断应用场景,如串口中断、ADC中断等 ,以拓宽我们的知识面和应用能力。
05
结论与建议
实验结论
实验目标达成情况
实验目标是通过单片机实现外部中断和定时器中断,实验 过程中成功实现了外部按键中断和定时器中断,验证了单 片机的中断处理机制。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
delay();
P2OUT |= BIT3;
delay();
}
void Buzz( ) //蜂鸣响
{ unsigned int i;
for (i=0;i<3;i++)
{ P2OUT &=~BIT4;
delay();
P2OUT|= BIT4;
delay();
};
}
void main ( void )
{ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
1.中断响应过程的理解
阅读下面C语言中断程序,说明程序L4_int.c执行的流程和实现功能。上机实践,回答下面问题,掌握用C语言编写中断程序的方法。
1)从程序如何判断用的是哪个中断源?其中断类型号是多少?将实验板上某一按键与该中断源对应的引脚相连,运行程序,操作按键,观察现象。
答:(注:源程序主函数中第7、8行有误,应为P1SEL &=~ BIT5; P1SEL2 &=~ BIT5;)
__interrupt void port_ISR( )
{ Buzz();
P1IFG &=~BIT5;
}
2.必做第2题
#include "io430.h"
#include "in430.h"
void delay( ) //延时函数
{ unsigned int j;
for (j=0;j<0xffff;j++);
5)如果中断源采用的是P1.5,按键用K7,请设计连线,修改程序完成以中断方式响应K7的操作。
答:
1只需将程序中对P1.1的操作改为对P1.5的操作即可,程序见附录程序1;
2连线:将引脚与K6相连,其他连线不变;
2.中断程序编程练习
在实验板上用跳线将按键K5、K6分别与单片机的P1.4、P1.5相连,编程以中断方式响应按键K5和K6的请求:当按一次K5键,实验板上的蜂鸣器发出一声警报声;当按下一次K6键,实验板上的发光二极管L1闪3次。主循环中控制L7循环闪亮。
实验名称
姓名_学号_
实验班号_21_机器号_
一、实验目的
1.了解中断原理,包括对中断源、中断向量、中断类型号、中断程序以及中断响应过程的理解;
2.掌握单片机C语言中断程序设计方法;
3.了解MSP430G2553基本时钟模块的工作原理,掌握其控制方法;
4.掌握利用时钟信号和中断技术实现定时功能的方法
二、实验基本任务
3应注意到本程序有两个中断源,须利用P1IFG判断产生中断的中断源引脚。
4程序见附录程序2。
思考题:
如果用长导线将按键K5、K6分别连接在P2.2和P2.5上,则应设置P2.2、P2.5为中断源,设置中断向量时也应注意将对P1端口的操作改为对P2端口操作。具体程序见附录程序2之思考题。
3.数字示波器的使用
思考:如果用长导线将按键K5、K6分别连接在P2.2和P2.5上,如何修改程序以实现任务2功能?
答:经过分析,
1本程序需要有四个函数,分别是延时函数、L1闪烁3次的函数、L7循环闪烁、以及蜂鸣器响一声的函数;
2其次P2端口为输出端口,分别控制L1、L7和蜂鸣器,本程序中选用P2.1、P2.3、P2.4引脚;P1.4与P1.5作为中断源;
P1OUT |=BIT5;
P1REN |=BIT5;
P1DIR &=~BIT5;
P1IES |= BIT5;
P1IFG &=~BIT5;
P1IE |= BIT5;
_EINT(); //总中断允许
for (;;) //主循环
{ Blink(); };
}
#pragma vector=PORT1_VECTOR
答:根据分析可知
a.需要在实验5之2)的基础上进行编程;
b.须用跳线板将P2的引脚与LED灯相连;
c.具体程序见附录程序7
思考:如果要每隔10秒蜂鸣器响一声,如何在任务5的基础上编程实现?
答:将P1.7与蜂鸣器相连,增加一个延时函数以及每10秒操作一次P1.7上电位;具体程序见附录程序7之思考题
三、实验选做任务
序执行速度的影响
答:根据分析
a.(1)须选择8分频;
b.(1)须具备延时函数与LED灯亮函数;
c.(2)须选择DCO时钟源,并使用出厂校验值16MHz;
d.(2)须具备延时函数与LED灯亮函数;
e.具体程序见附录选作4之1)和选作4之2)
f.实验观察到两种不同频率下,第一种情形下灯的亮灭速度非常慢,而第二种情形下灯的亮灭速度非常快,则说明:主系统时钟频率的加快会加速执行速度。
【附录】
一、基本任务程序
1.必做第1题
5)
#include "io430.h"
#include "in430.h"
void delay( ) //延时函数
{ unsigned int j;
for (j=0;j<0xffff;j++);
}
void Blink( ) //LED闪
{ P2OUT &=~BIT3;
6. DCO出厂校验值的频率检测
1)利用出厂校验值,编程使DCO分别为1MHz、8MHz、12MHz、16MHz,通过P1.4
输出,用示波器测量实际值。
答:经分析知
1P1.4输出的是SMCLK;
21MHz、8MHz、12MHz、16MHz的情况类似,此处仅以1MHz为例,具体程序见附录程序6
3测得真实值分别为1.002MHz、7.752MHz、12.08MHz、15.94MHz。
通过实验观察可以发现,改进之前,二进制显示的数值明显大于实际按键数,而改进之后,两者数值大致相等。
4. DCO出厂校验值的频率检测
2)(选做)控制发光二级管通过延时闪亮,编程分别使主系统时钟工作在
(1)MCLK=复位频率/8约100KHz;
(2)MCLK=DCO=16MHz;
两种不同频率下,观察灯的亮灭速度有何不同,掌握主系统时钟的变化对程
3)如果port_int函数中不清分中断标志P1IFG的后果是什么?
答:中断将一直重复进行下去;
4)如果L4_int.c中的PORT1_VECTOR改为PORT2_VECTOR,其他不变,程序执行的后果是什么?为什么?(可在中断处加一断点,运行程序,看现象,分析原因)
答:PORT1_VECTOR改为PORT2_VECTOR,其他不变,程序将会无法进入中断。因为程序中的中断属于P1引脚的中断,中断向量与P2引脚的中断向量不同,所进行的的改动则是把中断程序写入到了P2引脚的中断向量对应的地址中,而P1引脚的中断向量对应的地址上没有程序,因此无法执行原先的中断子程。
1)将信号源的波形在示波器上显示出来,掌握测量周期、频率、峰峰值的方法;
2)用孔孔导线将实验板的地信号与示波器的地信号相连,测量实验板上的Vcc电源信
号是否正常。
答:
1)
a.信号源的峰峰值为3.20V;
b.周期为1.000ms;
c.频率为1.000kHz.
2)经测量,Vcc=3.64V,正常
4.测试上电复位系统的ACLK、和SMCLK时钟频率
}
void L1Blink( ) //L1闪3次
{ unsigned int i;
for (i=0;i<3;i++)
与单片机的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引脚不具有输出辅助时钟的功能.
程序(F5),观察操作按键和不操作按键两种情况下程序执行的现象有何不同。
2. (选做)采用事件标志处理中断
阅读程序L4_intA.c和L4_intB.c(见后页),描述其实现功能。在实验板上将P1.0与
一个按键的控制端相连,P1.7与蜂鸣器的控制端相连。比较L4_intA.c和L4_intB.c
二者在编程实现上有何不同。注意各自中断子程执行时间的长短。用L4_intB.c的方
编程输出单片机上电复位后的ACLK、和SMCLK时钟,用示波器测量其频率,并记录下来。
思考:上电复位后,CPU工作的时钟信号MCLK频率值是多少?
答:经分析
1本程序需要置引脚P1.0、P1.4分别输出ACLK、SMCLK;
2需要确认外部晶振连上;
3具体程序见附录程序5测试程序。
4测得f(ACLK)=32.79kHz,f(SMCLK)=1.044MHz.
法,改写任务Байду номын сангаас的编程。
答:
不同之处:
1采用事件标志处理中断时,按键之后机器做出的反应相对较慢,这是因为它需要现在中断子程中设置flag,再回到主程序根据flag做相应改动,耗费时间较长。
2但是采用事件标志中断的一个好处就是,由于它在中断子程中只是进行了一个标记,你可以在标记flag在主程序中发挥作用之前再次进行中断,将flag改为其它值。它相当于解决了一般中断过程中“中断执行时,屏蔽其他中断”的问题。
相关文档
最新文档