实验五 中断与定时(计数)器实验(Keil)
- 格式:doc
- 大小:21.50 KB
- 文档页数:3
一、实验目的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. 理解单片机定时器的工作原理和功能。
2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。
3. 学会使用定时器实现定时功能,并通过实验验证其效果。
二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。
51单片机内部有两个定时器,分别为定时器0和定时器1。
定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。
定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。
四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。
2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。
3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。
4. 编写定时器中断服务函数,用于处理定时器溢出事件。
5. 编写主函数,设置定时器中断,并启动定时器。
6. 编译并下载程序到单片机实验板。
7. 使用示波器观察定时器0的溢出信号。
五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。
1)用单次脉冲申请中断INT0,在中断处理程序中对输出信号进行反转。
ORG 0000HLJMP STARTORG 0003HLJMP INT0START:CLR P1.0MOV TCON, #01HMOV IE, #81HLJMP $INT0:PUSH PSWCPL P1.0POP PSWRETIEND结果:按一下单脉冲小灯亮,再按一下,小灯灭接线:INT0接单脉冲P1.0接个小灯2)用单次脉冲申请中断INT1,在中断处理程序中实现8个小灯左移点亮1次。
ORG 0000HLJMP STARTORG 0013HLJMP INT1START:MOV TCON,#04HMOV IE,#84HCLR PX1MOV A,#01HSJMP $INT1:MOV R1,#8LOOP:MOV P1,ALCALL DELAYRL ADJNZ R1,LOOPRETIDELAY:MOV R6,#200DELAY1:MOV R7,#125DELAY2:DJNZ R7,DELAY2DJNZ R6,DELAY1RETEND结果:按一下单脉冲,8个小灯左移点亮一次接线:INT1接单脉冲P1口接8个小灯3)将8051计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行单脉冲计数,并将其数值按二进制在P1口驱动LED灯上显示出来。
ORG 0000HSTART:MOV TMOD,#05HMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND结果:P1口与四个小灯相连,按单脉冲的次数在四个小灯上显示接线:(P3.4)T0接单脉冲P1.0到P1.4接4个小灯4)用CPU内部定时器T0中断方式计时,实现每1秒钟输出状态发生一次反转。
ORG 0000HLJMP STARTORG 000BHLJMP INTSTART: MOV TMOD,#01HMOV B,#0AH;即10,设循环次数10次。
中断实验实验报告本实验是关于中断的学习和实验。
我们需要掌握中断的概念、分类、使用方法、实现过程等知识,并通过实际操作来理解中断的工作原理。
实验环境:硬件:STM32F103C8T6开发板、OLED显示屏、按键开关软件:Keil5、ST-LINK调试工具实验过程:1、准备工作首先,我们需要在Keil中新建一个STM32F103C8T6项目,然后将要使用到的头文件和驱动程序添加到项目中。
2、了解中断中断是指当CPU执行某个程序时,由于硬件或软件的干预而打断原来的程序执行,转而执行指定的中断服务程序(ISR),完成相应的工作后再回到被打断的程序。
中断可以提高系统响应速度,增强系统的可靠性和稳定性。
中断可分为外部中断和内部中断。
外部中断是由硬件引脚上的信号产生的中断请求。
内部中断是由软件产生的中断请求,例如软件中断、定时器中断等。
3、编写程序首先,我们要在程序中使能系统滴答定时器(SysTick)。
SysTick是STM32系统内置的一个定时器,可以在一定的时间周期内产生一次中断请求。
在这里,我们将SysTick的中断周期设置为1秒,以便后续实验中查看效果。
然后,我们编写一个中断服务程序,用来处理按键开关产生的中断请求。
当按键按下时,将在OLED屏幕上显示按键按下的次数,并通过串口向PC端发送按键按下的消息。
需要注意的是,为避免中断服务程序中使用延时函数(例如HAL_Delay),我们在程序中使用了定时器来延时。
最后,我们需要在程序中启用外部中断,以便可以检测到按键开关的中断请求。
在此实验中,我们使用了外部中断1,其对应的引脚为PA1。
4、实验结果当按键按下时,OLED屏幕上的数字会自动加1,并通过串口向PC端发送按键按下的消息。
可以看到,此实验中使用的中断机制可以在不占用CPU资源的情况下,实现对按键事件的响应和处理。
通过这次实验,我们对中断有了更深入的认识,了解了中断的工作原理、分类、使用方法和实现过程,掌握了在STM32中使用中断的具体操作方法。
中断与定时器和计数器实验一、实验目的:1.掌握单片机的中断的原理、中断的设置,掌握中断的处理及应用2.掌握单片机的定时器/计数器的工作原理和工作方式,学会使用定时器/计数器二、实验内容:(一)、定时器/计数器应用程序设计实验1.计数功能:用定时器1方式2计数,每计数满100次,将P1.0取反。
(在仿真时,为方便观察现象,将TL1和TH1赋初值为0xfd,每按下按键一次计数器加1,这样3次就能看到仿真结果。
)分析:外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。
方式2有自动重装初值的功能,初始化后不必再置初值。
将T1设为定时方式2,GATE=0,C/T=1,M1M0=10,T0不使用,可为任意方式,只要不使其进入方式3即可,一般取0。
TMOD=60H。
定时器初值为X=82-100=156=9CH,TH1=TL1=9CH。
(1)硬件设计硬件设计如图所示(2)C源程序#include "reg51.h" sbit P1_0=P1^0;void main(){TMOD=0x60;TH1=0xfd;TL1=0xfd;TR1=1;ET1=1;while(1){if(TF1==1){P1_0=~P1_0;TF1=0;}}}(3)proteus仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
(二)中断应用程序设计实验2.中断定时使用定时器定时,每隔10s使与P0、P1、P2和P3端口连接的发光二极管闪烁10次,设P0、P1、P2和P3端口低电平灯亮,反之灯灭。
分析:中断源T0入口地址000BH;当T0溢出时,TF0为1发出中断申请,条件满足CPU响应,进入中断处理程序。
主程序中要进行中断设置和定时器初始化,中断服务程序中安排灯闪烁;TL0的初值为0xB0,TH0的初值为0x3C,执行200次,则完成10s定时。
外部中断及NE555计数实验11103070315 李青【实验内容】1、利用外部按键中断计数并用数码管显示计数值2、用51单片机T0、T1定时计数器对NE555产生的脉冲信号进行频率计数,频率送LCD显示(或数码管显示)【需要了解的知识】1、GPIO设定2、LCD显示原理,输入与输出及其原理3、定时计数器工作原理及频率测量4、NE555工作原理【实验预习】预读实验指导电子文档的实验十六、七及其前面的实验流程【实验设备】Keil C51软件、ICE52 仿真驱动、MEFlash编程软件、USB驱动程序【实验过程】实验一外部中断实验任务:利用单片机的外部中断功能进行计数,然后将计数值输出到数码管上显示。
K5键—计数值加1(外部中断0)K6键—计数值加1(外部中断1)3位数码管显示,最大计数值255实验步骤:1)首先在硬盘上建立一个文件夹;2)启动Keil C51软件;3)执行Keil C51软件的菜单“Project|New Project……”,弹出一个名为“Create New Project”的对话框。
输入工程文件名,选择保存路径uv2后缀,点击“保存”按钮;4)紧接着弹出“Options for Target‘Target 1’”,为刚才的项目选择ATMEL 的AT89S52的CPU。
选择之后,点击“确定”按钮;5)接下来弹出一个对话框提示你是否要把标准8051的启动代码添加项目中去,此时,点击“否”按钮;6)执行菜单“File|New……”,出现一个名为“Text1”的文档。
接着执行菜单“File|Save”弹出一个名为“Save As”的对话框,将文件名改为“.asm”后缀,然后保存;7)添加源程序文件到工程中,一个空的源程序文件建成。
单击Keil C51软件左边项目工作窗口“Target1”上的“+”,将其展开。
然后右击“Source Group1”文件夹弹出下拉菜单,单击其中的“Add Files to Group‘Source Group1’”项;8)在弹出的对话框中先选择文件类型为“Asm Source file (*.s*;*.src;*.a*)”,这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1”文件夹中;输入源程序代码;9)点击工具栏“Options for target”按钮,弹出一个对话框,定义“Xtal”为11.0592.下面依序是存储模式、程序空间大小等设置,均用默认值即可。
单片机实验五_定时计数器应用实验五定时计数器应用一、实验目的:1、单片机系统中,可以用软件或硬件定时,当定时时间较长,定时准确率要求较高时,应采用硬件定时。
MCS—51系列单片机中有2个16位的可编程定时/计数器T0和T1,通过本实验要求掌握T0、T1的初始化编程和应用。
2、学会应用烧录软件XLISP和keil-uvision2集成调试软件进行实验。
掌握实验的步骤并能得到正确的实验结果。
二、实验内容1、定时计数器应用:8只LED呈流水灯显示,用定时计数器定时,使流水灯的间隔时间为1S。
用定时计数器0实现定时1S,采用软硬件结合方式:T0方式0,定时50ms,循环程序20次。
2、数码管显示:要求数码管显示0-9,间隔时间0.5S,采用定时计数器T1实现。
3、思考题:用定时计数器T0和T1级联定时3S。
三、实验步骤1、硬件连接(1)使用USB线(电源)和串口线(通信),将XL2000综合仿真仪与微型计算机连接起来; CPU选用AT89S51,采用程序直接写入方式;将JP17的开关(编程仿真模式)置为弹起状态,选择编程模式;(2)定时计数器应用:使用8P的连接线将CPU的P0口与JP32(8个发光二极管)相连。
(3)数码管显示:P1口接数码管(JP19)。
2、软件设计(1) Kiel软件操作同实验一:建立工程并存储、选择芯片89C51、新建文件输入程序并保存,将文件加入到工程中。
(2)修改属性:如右图,点击工程下拉菜单中的”目标’目标1’属性”; 单击”目标”,输入仿真器的频率12(MHz);选择“输出”菜单中的”生成HEX文件”,以便汇编后产生HEX代码,供编程器使用;3、将程序写入AT89C51:双击桌面XLISP启动程序,出现下面界面。
(1)选择操作/检测编程器点击。
在上图7窗口中出现编程器检测OK!说明系统已经连接完好,可以下一步实验,否则需要检查出错的原因并改正;(2)点击擦除图标,将CPU中的原有程序擦除;(3)点击打开图标,找到Kiel编译后需要执行的程序(HEX文件),点击;在XLISP的文件程序区可见到要执行的程序;(4)点击写入框,在程序写入结束后即可观察运行的结果。
c51定时中断实验报告本文介绍的是C51定时中断实验,利用这个实验可以更好地理解C51的定时器与中断模块,进一步熟悉C语言的使用。
一、实验目的1.掌握C51单片机的定时器模块和中断模块。
2.熟悉定时器与中断的工作原理。
3.掌握利用中断实现定时功能的方法。
4.掌握如何调试程序,发现和解决程序问题。
二、实验装置硬件:STC89C52微控制器、电源、电路板、电路元件等。
软件:Keil C51集成开发环境。
三、实验原理1.定时器模块C51单片机中的定时器模块包含了3种不同的工作方式:工作模式0、模式1和模式2。
这些工作模式拥有不同的计数器范围和计数方式。
在本实验中,将使用工作模式1,因为它适用于大多数定时需求,并且易于编写程序。
工作模式1基本特点如下:(1)Timer1用两个8位计数器(TH1和TL1)组成,当一个计数器溢出时(从FFH计数到00H),计数值自动重装,同时中断请求位TF1被设置。
(2)计数器TH1可以初始值,TL1需要重新初始计数。
(3)Timer1的计数时钟来源可以是外部时钟源或内部时钟源,一般选择内部时钟源。
(4)TH开头的寄存器和TL开头的寄存器合起来组成16位的Timer1计数器,这个计数器的数值大小为TH1-TH1。
(5)x表示H或L。
用C语言对Timer1进行编程,首先需要完成以下配置:TMOD |= 0x10; // 定时器模式选择,使用模式1,TH0和TL0为一组计数器TH1 = (65536 - 50000) / 256; // 定时器初值设置ET1 = 1; // 打开定时器中断其中,TMOD是用来选择定时器工作模式,可以用对应的数值进行配置;TH1和TL1需要根据需要设置计数器初始值,该初值的计算公式为:计数初值 = (65536 - 计数时间/12)。
ET1为定时器1允许中断的位,EA为总中断允许位,TR1为定时器1工作使能位。
2.中断模块中断是一种实时响应外部事件处理的技术手段,当特定的硬件事件发生时,CPU自动调出相应的中断处理程序来响应事件,处理程序完成任务后返回继续程序运行,从而提高了CPU的效率。
一、实验目的1. 理解中断和定时器的基本概念及工作原理。
2. 掌握51单片机中断系统和定时器的配置方法。
3. 学会使用中断和定时器实现特定功能,如延时、计数等。
4. 培养动手实践能力和问题解决能力。
二、实验原理中断是计算机系统中的一种机制,允许CPU在执行程序过程中,暂停当前程序,转去执行另一个具有更高优先级的程序。
51单片机具有5个中断源,包括两个外部中断(INT0、INT1)、两个定时器中断(定时器0、定时器1)和一个串行口中断。
定时器是51单片机内部的一种计数器,可以用于产生定时中断或实现定时功能。
51单片机有两个定时器,即定时器0和定时器1。
定时器可以工作在模式0、模式1、模式2和模式3。
三、实验内容及步骤1. 实验内容一:外部中断实验(1)实验目的:掌握外部中断的使用方法,实现按键控制LED灯的亮灭。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置外部中断,实现按键控制LED灯的亮灭。
2. 实验内容二:定时器中断实验(1)实验目的:掌握定时器中断的使用方法,实现LED灯闪烁。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断,实现LED灯闪烁。
3. 实验内容三:定时器与外部中断结合实验(1)实验目的:掌握定时器与外部中断结合使用的方法,实现按键控制LED灯闪烁频率。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断和外部中断,实现按键控制LED灯闪烁频率。
四、实验结果与分析1. 外部中断实验:成功实现了按键控制LED灯的亮灭。
当按下按键时,LED灯亮;松开按键时,LED灯灭。
2. 定时器中断实验:成功实现了LED灯闪烁。
LED灯每隔一定时间闪烁一次,闪烁频率可调。
3. 定时器与外部中断结合实验:成功实现了按键控制LED灯闪烁频率。
报告成绩:教师签字:批改日期:评语:学生实验报告课程名称单片机原理及接口技术姓名实验名称定时器/计数器、中断综合实验班级实验目的掌握51系列单片机中断系统及定时器的工作原理及使用技巧学号实验日期实验内容(1)P1 口做输出口,接八只发光二极管,高电平点亮,控制一个. 方向循环点亮8只LED,每个LED点亮时间为50ms;(2)在以上基础上加外部中断内容,由外部中断请求时,8只LED全亮(3)P1 口做输出口,接八只发光二极管,高电平点亮,控制一个方向循环点亮8只LED,每个LED点亮时间改为2s实验地点实验组号实验设备计算机 wave6000程序 lab2000p试验箱同组人1.实验电路及连线本次试验不做要求2.程序流程图本次实验无3.源程序(1 ORG 0000H MOV TL0,#58HLJMP MAIN SETB EAORG 0003H SETB ET0ORG 000BH SETB TR0LJMP SER0 SJMP $ORG 1000H SER0:MOV TH0,#9EHMAIN: MOV A,#01H MOV TL0,#58HLOOP: MOV P1,A RL AMOV TMOD,#01H MOV P1,AMOV TH0,#9EH RETIEND(2ORG 0000H SER0:MOV TH0,#9EHLJMP MAIN MOV TL0,#58HORG 0003H RL ALJMP SER1 MOV P1,AORG 000BH RETILJMP SER0 SER1:PUSH ACCORG 1000H PUSH PSWMAIN: MOV A,#01H MOV A,#0FFH LOOP: MOV P1,A MOV P1,AMOV TMOD,#01H LCALL DELAY MOV TH0,#9EH POP PSWMOV TL0,#58H POP ACCSETB EA RETISETB ET0 DELAY:MOV R7,#0FFH SETB TR0 L1:MOV R6,#0FAH SETB EX0 DJNZ R6,$SETB IT0 DJNZ R7,L1SJMP $ RETEND(3 ORG 0000H SETB EALJMP MAIN SETB ET0ORG 000BH SETB TR0LJMP SER0 SJMP $ORG 1000H SER0:MOV TH0,#9EH MAIN: MOV A,#01H MOV TL0,#58H LOOP: MOV P1,A DJNZ R0,EXIT MOV R0,#28H MOV R0,#28HMOV TMOD,#01H RL AMOV TH0,#9EH MOV P1,AMOV TL0,#58H EXIT:RETIEND4.结果记录及分析(1)结果: P1 口做输出口,接八只发光二极管,高电平点亮,控制一个方向循环点亮8只LED,每个LED点亮时间为50ms;分析:用定时器方式0,使用定时功能,定时器以中断方式工作。
西南科技大学实验报告课程名称:单片机原理及应用A实验名称:中断、定时器/计数器实验姓名:学号:班级:生医1401指导教师:雷华军西南科技大学信息工程学院制实验题目数码管动态扫描显示驱动、键盘动态扫描驱动一、实验目的1、熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操作,会使用HEX文件进行单片机的仿真。
2、了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和计数,利用定时器进行延时等。
3、进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将0~1000的数字进行显示。
4、掌握利用单片机产生矩形方脉冲的相关原理。
二、实验原理1、定时器结构和原理图①上图①为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。
反相器,或门,与门共同构成启/停控制信号。
TH 和TL为加1计数器,TF为中断标志。
每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。
计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。
2、定时器工作方式定时器共有四种工作方式分别为方式0——方式3。
方式0:13位计数器,最大计数值为213个脉冲。
方式1:16位计数器,最大计数值为216个脉冲。
方式2:8位自动重装计数器。
该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。
方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。
3、定时器间隔1ms产生一个脉冲利用单片机1 P3.0口进行脉冲的输出,通过定时器进行端口定时控制,实现每1ms高低电平变换。
就可以实现一个占空比为50%的矩形脉冲输出。
对于定时器的定时功能实现,需要进行定时器模式选择,定时器初值设定。
4、利用中断进行脉冲的计数将单片机1 P3.0口输出的脉冲连接到单片机2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数。
51单片机内部定时器和中断系统以及编写第一个简单的定时器实验程序上讲通过讲述用单片机控制一个外部的LED闪烁实验来向读者介绍了单片机的工作原理与开发流程。
这一讲将介绍单片机内部非常重要的两个资源——定时/ 计数器和中断系统。
通过该讲,读者可以掌握定时器的工作原理和单片机的中断系统。
从而设计定时器计数程序和中断服务程序。
一、原理简介首先让我们举闹钟为例,将它定时在一分钟后闹铃,这就需要秒针走一圈(60 次)。
即一分钟时间转化为秒针走的次数,也就是计数的次数,计数到了60 次然后闹铃,而每一次计数的时间是1 秒。
单片机内部的定时/ 计数器跟闹钟类似,可以通过编程来设定要定时的时间、定时时间到了进行相应的操作。
那么在单片机内部计数一次的时间是多少呢,51 单片机输入的时钟脉冲是由晶体振荡器的输出经12 分频后得到的,所以定时器也可看作是对计算机机器周期的计数器。
因为每个机器周期包含12 个振荡周期,故每一个机器周期定时器加1,可以把输入的时钟脉冲看成机器周期信号。
故其频率为晶振频率的1/12。
如果晶振频率为12MHz,则定时器每接收一个输入脉冲的时间刚好为1μs。
在本实验套件中采用的是11.0592M 的晶振,故每接收一个输入脉冲的时间约为1.085μs。
实现精确定时在实际项目应用中非常重要,因为往往需要用到精确定时一段时间,然后定时时间到的时刻做相应的任务。
那如何编程实现定时时间呢?首先先简单介绍下本实验板上单片机(STC89C52)内的定时器资源。
STC89C52 内有三个定时/ 计数器,分别为T0、T1 和T2。
其中T0、T1 工作方式一样,一并介绍。
T2 的工作方式稍有区别,这里不做介绍,实验套件光盘中有实际应用程序。
同时,单片机中的定时器和计数器是复用的,计数器是记录外部脉冲的个数,而定时器则是由单片机内部时钟提供的一个非常稳定的计数源。
本讲中,以T0、T1 作为定时器来进行实例介绍使用。
一、实验目的1. 理解单片机中断的基本概念和工作原理。
2. 掌握单片机中断系统的初始化方法。
3. 学会编写中断服务程序,实现特定功能。
4. 熟悉中断优先级设置及其对系统性能的影响。
二、实验设备1. 单片机实验板:STC89C52单片机实验板2. 串口下载线:USB转串口下载线3. 电脑:一台运行Windows操作系统的电脑4. 软件工具:Keil uVision4集成开发环境三、实验原理单片机中断系统是单片机的重要组成部分,它允许单片机在执行主程序时,响应外部或内部事件的中断请求,暂停主程序执行,转而执行相应的中断服务程序。
中断系统由硬件和软件两部分组成。
1. 硬件部分:包括中断源(如定时器、外部中断等)、中断控制器、优先级寄存器、中断服务寄存器等。
2. 软件部分:包括中断初始化程序、中断服务程序等。
四、实验步骤1. 创建项目:在Keil uVision4中创建一个新项目,选择STC89C52单片机作为目标芯片。
2. 设计电路:根据实验要求,绘制电路原理图,连接单片机实验板上的相关元器件。
3. 编写程序:编写C语言程序,实现以下功能:(1)初始化单片机中断系统,包括设置中断优先级、启用中断等;(2)编写中断服务程序,处理中断请求;(3)编写主程序,实现特定功能。
4. 编译程序:将编写好的程序编译成hex文件。
5. 烧录程序:将编译好的hex文件烧录到单片机实验板中。
6. 运行实验:观察实验现象,验证程序功能。
五、实验内容1. 实验一:外部中断实验(1)功能:当外部中断0(INT0)或外部中断1(INT1)有信号输入时,触发对应的中断服务程序,使LED灯闪烁。
(2)步骤:a. 初始化外部中断0和外部中断1,设置中断优先级;b. 编写外部中断0和外部中断1的中断服务程序;c. 编写主程序,实现LED灯闪烁。
2. 实验二:定时器中断实验(1)功能:定时器0每隔1秒产生一次中断,触发中断服务程序,使LED灯闪烁。
中断及定时器实验报告中断及定时器实验报告引言:中断是计算机系统中一种重要的机制,它可以打破程序的顺序执行,响应外部事件的发生。
中断的引入使得计算机可以同时处理多个任务,提高了系统的效率和可靠性。
定时器是中断的一种常见应用,它可以在一定时间间隔内产生中断信号,实现定时任务的功能。
本实验旨在通过编程实现中断和定时器的功能,并测试其正确性和稳定性。
一、实验目的1. 学习中断的概念和原理;2. 掌握中断的编程方法和中断处理程序的编写;3. 理解定时器的工作原理和应用场景;4. 实现定时器的功能,并测试其正确性和稳定性。
二、实验过程1. 硬件准备在实验中,我们使用了一台基于8051单片机的开发板,通过连接外部电路和开发板的引脚,实现对定时器的控制。
2. 软件编程首先,我们需要在开发板上搭建一个简单的电路,包括一个LED灯和一个按钮。
然后,我们使用汇编语言编写中断处理程序,实现当按钮按下时,LED灯闪烁的功能。
具体的编程步骤如下:(1)设置中断向量表:将中断处理程序的地址存储到中断向量表中,以便系统在中断发生时能够正确地跳转到相应的处理程序;(2)初始化定时器:设置定时器的计数器初值和工作模式;(3)编写中断处理程序:当中断发生时,执行相应的处理程序。
在本实验中,我们编写了一个简单的中断处理程序,当按钮按下时,将LED灯的状态取反;(4)启用中断:使能中断,使得系统能够响应外部事件的发生。
3. 实验测试将编写的程序下载到开发板上,并连接相应的电路。
按下按钮,观察LED灯是否按照预期的频率闪烁。
通过调整定时器的计数器初值和工作模式,可以改变LED灯闪烁的频率。
三、实验结果经过多次实验测试,我们发现中断和定时器的功能正常,LED灯能够按照预期的频率闪烁。
通过改变定时器的计数器初值和工作模式,我们成功地实现了LED灯闪烁频率的调节。
实验结果表明,中断和定时器是一种有效的方法,可以实现对外部事件的及时响应和定时任务的精确控制。
实验五 TIM定时器实验一、实验目的了解TIM定时器的原理与应用二、实验内容1.对TIM3定时器进行控制,使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁。
(特定频率产生)2.对周期进行设置,控制通用定时器3的2通道,实现1KHz的不同占空比波形,用于控制LED1亮度的明暗渐变。
(PWM脉冲宽度调制)三、实验仪器、设备计算机、开发板、keil软件四、软件程序设计1、频率产生控制LED闪烁实验根据任务要求,程序内容主要包括:①配置TIM3的通道2为输出比较模式(预分频系数设置为63),TIM3_CCR2=45000。
②在相应的TIM3定时器中断服务处理程序中根据定时器的值翻转输出电平。
以输出方波。
整个工程包含4类源文件:FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。
stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。
stm32f10x_USART.c ST公司的标准库,包含了关于对USART设置的函数。
stm32f10x_flash.c ST公司的标准库,包含了关于对flash设置的函数。
Misc.c ST公司的标准库,包含了关于中断设置的函数。
CM3—是关于CORETEX-M3平台的系统函数及定义App—main.c 例程的主函数。
App—tim.c 定时器3的设置。
App--stm32f10x_it.c 中断服务程序主函数如下://__________________________________________________________int main(void){/* System Clocks Configuration --72M*/RCC_Configuration();/* NVIC configuration *//*嵌套向量中断控制器说明了定时器3抢占优先级级别0(最多1位),和子优先级级别0(最多7位) */NVIC_Configuration();/*定时器3的初始化*/time_ini();while(1);}void time_ini(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* GPIOA Configuration: Channel 1 Output */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB5复用为TIM3的通道2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 , ENABLE);//TIM3局部复用功能开启在TIM3的局部复用开启时,PB5会被复用为TIM3_CH2/* Time Base configuration *//*-------------------------------------------------------------------TIM3CLK=72MHz 预分频系数Prescaler=63 经过分频定时器时钟为1.125MHz捕获/比较寄存器2 TIM3_CCR2= CCR2_Val2通道产生的更新频率是=1.125MHz/CCR2_Val=25Hz-------------------------------------------------------------------*/TIM3_TimeBaseStructure.TIM_Prescaler = 63; //预分频器TIM3_PSC=63TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器向上计数模式 TIM3_CR1[4]=0TIM3_TimeBaseStructure.TIM_Period =0xffff; //自动重装载寄存器TIM3_APRTIM3_TimeBaseStructure.TIM_ClockDivision = 0x0; //时钟分频因子 TIM3_CR1[9:8]=00TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseStructure); //写TIM3各寄存器参数TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle ; //TIM3_CCMR1[14:12]=011 翻转当TIM3_CCR2=TIM3_CNT时,翻转OC2REF的电平 TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输入/捕获2输出允许 OC2信号输出到对应的输出引脚PB5TIM3_OCInitStructure.TIM_Pulse =CCR2_Val; //若CC1通道配置为输出:CCR2是装入当前捕获/比较2 TIM3_CCR2寄存器的值(预装载值)。
实验五中断与定时/计数器实验一、实验目的1.了解单片机中断与定时器工作原理,掌握中断与定时器程序结构;2.掌握在µVision环境中调试中断与定时器程序的方法。
二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx51。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx51.asm文件名存盘到lx51文件夹中。
ORG 0000HLJMP MAINORG 0003HMOV P2,ARL ARETIORG 0040HMAIN:MOV SP,#5FHMOV A,#0FEHSETB EASETB EX0SETB IT0SJMP $END(3)在lx51文件夹下建立新工程,以文件名lx51存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Opt ions for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择A T89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
按F5运行程序。
(6)在P3窗口的P3.2位单击鼠标(模拟INT0引脚信号),观察P2窗口变化。
(7)修改程序,使之适合字节数大于8的中断服务情况。
(8)利用单片机最小系统板演示该程序的运行情况。
2.示例及相关设置(1)建立一个文件夹:lx52。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx52.asm文件名存盘到lx52文件夹中。
实
验五中断与定时/计数器实验
一、实验目的
1.了解单片机中断与定时器工作原理,掌握中断与定时器程序结构;
2.掌握在µVision环境中调试中断与定时器程序的方法。
二、实验仪器和设备
Keil软件;THKSCM-2综合实验装置;
三、实验原理及实验内容
1.示例及相关设置
(1)建立一个文件夹:lx51。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx51.asm文件名存盘到lx51文件夹中。
ORG 0000H
LJMP MAIN
ORG 0003H
MOV P2,A
RL A
RETI
ORG 0040H
MAIN:MOV SP,#5FH
MOV A,#0FEH
SETB EA
SETB EX0
SETB IT0
SJMP $
END
(3)在lx51文件夹下建立新工程,以文件名lx51存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Opt ions for Target ‘Target1’,在弹出的窗口中
要完成一下设置:
○1单片机芯片选择A T89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
按F5运行程序。
(6)在P3窗口的P3.2位单击鼠标(模拟INT0引脚信号),观察P2窗口变化。
(7)修改程序,使之适合字节数大于8的中断服务情况。
(8)利用单片机最小系统板演示该程序的运行情况。
2.示例及相关设置
(1)建立一个文件夹:lx52。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx52.asm文件名存盘到lx52文件夹中。
ORG 0000H
LJMP MAIN
ORG 000BH
MOV P2,A
RL A
RETI
ORG 0040H
MAIN: MOV SP,#5FH
MOV A,#0FEH
MOV TMOD,#06H
MOV TH0,#0FBH ;计数值为5
MOV TL0,#0FBH
SETB EA
SETB ET0
SETB TR0
SJMP $
END
(3)在lx52文件夹下建立新工程,以文件名lx52存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:
○1单片机芯片选择A T89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
按F5运行程序。
(6)在P3窗口的P3.4位单击鼠标(模拟T0引脚信号),观察P2窗口变化。
(7)修改程序,使之适合字节数大于8的中断服务情况。
(8)利用单片机最小系统板演示该程序的运行情况。
四、实验结果和数据分析
问题:1、完成三中1与2的(5)(6)两步,并写出结果,简要说明程序的功能。
2、完成三中1与2的(7)(8)两步,写出完整程序。