实验五 8051单片机定时中断实验
- 格式:doc
- 大小:271.00 KB
- 文档页数:5
实验题目:单片机定时与外部中断的作用1 一、实验目的1)熟悉单片机定时功能的使用2)熟悉外部中断的使用3)熟悉一些常用的C语言编程语句4)熟练单片机的一些使用及操作方法二、实验原理工作原理框图7_SEG_LED:8_BI Ts_LED:三、参考程序#include <reg51.h>#define FOSC 11059200L#define BAUD 9600#define TRUE 1#define FALSE 0int CmpCnt;int T0IntCnt;bit FlagTimerOk;unsigned char LedVal;sbit HC373_CLK = P3^6;sbit Int0=P3^2;sbit P1_4=P1^4;sbit P1_5=P1^5;sbit P1_6=P1^6;sbit P1_7=P1^7;unsigned char code a[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x19};void Init_T0(void){TMOD = 0x01; //T0 方式1TH0 = (65536-(FOSC)/1200)/256;TL0 = (65536-(FOSC)/1200)&0xff;ET0 = 1;TR0 = 1;}void Init_Uart(void){SCON = 0x50; //UART设置PCON = 0x80;TMOD = 0x21;TH1=0xfa; //定时器1设置TL1=0xfa;TR1=1;ES=1;EA=1;}void Init_INT0(void) interrupt 0 {int s;s=0;while(Int0==0)s++; //防抖设置if(s>100){if(CmpCnt>1)CmpCnt=CmpCnt-1;elseCmpCnt=50;s=0;}}void Init_Ram(void){T0IntCnt = 0;FlagTimerOk = FALSE;CmpCnt = 50;LedVal = 0xff;}void T0_ISR(void) interrupt 1{if(++T0IntCnt >= CmpCnt){T0IntCnt = 0;FlagTimerOk = TRUE;}TH0 =(65536-(FOSC)/1200)/256;TL0 =(65536-(FOSC)/1200)&0xff;TR0 = 1;ET0 = 1;EA = 1;}void LedCtrl(void){static int j=0;LedVal = 0xff & (~(1<<j));if(++j >= 8){j = 0;}P0 = LedVal;HC373_CLK = 1;HC373_CLK = 0;}void delay() //延时函数{int x,y;for(x=0;x<2;x++)for(y=0;y<120;y++);}void main(void){Init_Ram();Init_Uart();Init_T0();EX0=1;IT0=0;EA = 1;while(1){if(FlagTimerOk){FlagTimerOk = FALSE;LedCtrl();}P1_7=1;P1_5=0;P1_6=0;P1_4=0;P0=0x02;delay(); //七段数码管显示 P1_6=1;P1_4=0;P1_5=0;P1_7=0;P0=a[CmpCnt%10];delay(); P1_5=1;P1_4=0;P1_6=0;P1_7=0;P0=a[CmpCnt/10];delay();}}四、实验步骤1、启动Keil C,新建project;2、将写好的文件保存为.c文件;3、译生成hex文件后,用flash magic烧录到单片机中;4、片机复位上电,运行;5、按住INT0键,观察不同的数字显示对应LCD显示的变化;实验结果每按下INT0一次,数码管的显示示数减少10,从启动时的500一直减小到10,然后又恢复500,并且发光二极管的点亮时间和显示的一致,频率越高,LCD跑马灯跑得越快。
竭诚为您提供优质文档/双击可除c51定时中断实验报告篇一:51单片机定时器实验报告51单片机定时器实验实验内容:实验内容:(1)编写程序使定时器0或者定时器1工作在方式1,定时50ms触发蜂鸣器。
c语言程序#include#defineuintunsignedint#defineucahrunsignedcharsbitFm=p0^0;voidmain(){TmoD=0x01;Th0=(65535-50000)/256;Th0=(65535-50000)%256;eA=1;//开总中断eT0=1;//开定时器0中断TR0=1;while(1);}voidT0_time()interrupt1{}汇编程序oRg0000hJAmpmAInoRg000bhTh0=(65535-50000)/256;Th0=( 65535-50000)%256;Fm=~Fm;LJmpInT0_InToRg0100hmIAn:seTbeAseTbeT0AJmp$InT0_InT:moVR2,#0FAhmoVR3,#0c8hDJnZR3,$DJnZR2,InT0_InTReTI(2)编写程序使定时器0或者定时器1工作在方式1,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
#include#defineuintunsignedint#defineucahrunsignedcharuintnum,num1;sbitFm=p0^7;intshi,ge,a;voiddelay(uint);voidshumaguan();unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0 x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管0-F编码表voidmain(){TmoD=0x01;Th0=(65535-50000)/256;Th0=(65535-50000)%256;eA=1;//开总中断eT0=1;//开定时器0中断TR0=1;while(1)}voidT0_time()interrupt1{}voidshumaguan(){p3=0x01;p2=table[shi];delay(5);p3=0x02;p2=table[ge];delay(5);Th0=(65535-50000)/256;Th0=(65535-50000)%25 6;num1++;if(num1==10){}num1=0;num++;shi=num/10;ge=n um%10;if(num==100){num=0;}{}shumaguan();voidzuoyi(){}voiddelay(uintx){}(3)编写程序使定时器0或者定时器1工作在方式2,自动重装载模式,定时500ms使两位数码管从00、01、02……98、99每间隔500ms加1显示。
一、实验背景随着电子技术的飞速发展,单片机因其体积小、成本低、功能强大等优点,在各个领域得到了广泛应用。
中断技术是单片机设计中非常重要的一部分,它允许单片机在执行程序的过程中,能够及时响应外部事件,从而提高系统的实时性和效率。
本实训旨在通过实验,加深对单片机中断系统的理解,掌握中断系统的使用方法,并学会在实际应用中灵活运用中断技术。
二、实验目的1. 熟悉单片机中断系统的基本概念和原理。
2. 掌握中断源、中断优先级、中断服务程序等基本概念。
3. 学会使用单片机的中断系统实现实时响应外部事件。
4. 培养动手实践能力和问题解决能力。
三、实验器材1. 单片机实验板2. 示波器3. 电源4. 连接线5. 逻辑分析仪(可选)四、实验内容1. 实验一:外部中断实验(1)实验目的:验证外部中断功能,实现按键控制LED灯的点亮和熄灭。
(2)实验步骤:a. 将外部中断0(INT0)引脚连接到按键,按键按下时产生低电平信号。
b. 编写中断服务程序,实现按键按下时点亮LED灯,按键释放时熄灭LED灯。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的点亮和熄灭情况。
2. 实验二:定时器中断实验(1)实验目的:验证定时器中断功能,实现LED灯的定时闪烁。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断,编写定时器中断服务程序,实现LED灯的定时闪烁。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的闪烁情况。
3. 实验三:中断嵌套实验(1)实验目的:验证中断嵌套功能,实现定时器中断和外部中断的嵌套。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断和外部中断,设置中断优先级。
c. 编写定时器中断服务程序和外部中断服务程序,实现中断嵌套。
d. 编译程序,下载到单片机实验板上。
实验五中断与定时/计数器实验一、实验目的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文件夹中。
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灯闪烁频率。
实验五定时器中断实验1.实验目的:学习8031内部计数器的使用和编程方法。
进一步掌握中断处理程序的编程方法。
2.实验要求:用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转.3.实验说明:(1)关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器。
(2)定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
(3)内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是6MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷6MHZ=2uS (256-定时常数)×2uS=100us定时常数=206. 然后对100us中断次数计数10000次,就是1秒钟.(4)在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
4.实验器材:(1)G2100 实验平台 1 台(2)LabMON51 仿真器 1 台(3)计算机 1 台(4)实验连线若干5.实验电路:6.程序框图:7.实验步骤:(1)连接相关连线。
(2)编写程序并调试。
代码如下:org 0000hljmp mainorg 000bhljmp interorg 0100hmain: mov tmod,#02hmov th1,#0cehmov tl1,#0cehsetb easetb et0setb tr0sjmp $inter:djnz r6,nextdjnz r7,nextmov r6,#10hmov r7,#10hcpl p1.0 next: retiend结果:。
51单片机定时器实验内容
51单片机定时器实验的内容可以根据不同的需求和目的进行调整,以下是
一些可能的实验内容:
1. 定时器初始化实验:实验目标是了解如何初始化51单片机的定时器,包括设置定时器的工作模式、计数值、初始值等。
实验中可以编写代码,让定时器在初始化后自动开始计时,并在达到指定时间后产生中断或输出信号。
2. 定时器中断实验:实验目标是了解如何使用51单片机的定时器中断功能,实现定时器在达到指定时间后自动触发中断,并在中断服务程序中执行特定的操作。
实验中可以编写代码,让定时器在达到指定时间后自动进入中断服务程序,并在其中执行特定的操作,如点亮LED灯等。
3. 定时器PWM输出实验:实验目标是了解如何使用51单片机的定时器PWM输出功能,实现定时器输出PWM波形。
实验中可以编写代码,让定时器输出不同占空比的PWM波形,并通过调整占空比来控制LED灯的亮
度等。
4. 定时器与外部事件同步实验:实验目标是了解如何使用51单片机的定时器与外部事件同步,实现定时器在外部事件发生时自动开始计时或停止计时。
实验中可以编写代码,让定时器在外部事件发生时自动开始计时或停止计时,并在达到指定时间后执行特定的操作。
以上是一些常见的51单片机定时器实验内容,通过这些实验可以深入了解51单片机的定时器工作原理和用法,并提高编程技能和硬件控制能力。
定时器中断实验内容:(第6章中断系统.doc和第7章定时器、计数器.doc)1.基础实验5(定时器输出PWM)2.定时器中断函数实验:要求:每一次按键(查询方式),同时要求改变LED1~LED8循环点亮(定时中断)的方式。
1)初始状态或按下KEY1键(松开后保持),只点亮一只LED灯,每隔1秒(定时)右循环显示(中断),移到LED8后回到LED1。
LED1LED8…………………………LED1LED82)按下KEY2键(松开后保持),同时点亮相邻的两只LED灯,每隔1秒(定时)右循环显示(中断),移到LED8后回到LED1。
LED1LED83)按下KEY3键(松开后保持),同时点亮间隔的两只LED灯,每隔1秒(定时)右循环显示(中断),移到LED8后回到LED1。
LED1LED84)按下KEY键(松开后保持),点亮一只LED灯,每隔1秒(定时)多点亮一只LED灯(中断),直到LED灯全亮,然后回到一只LED点亮状态循环。
LED1LED8LED1LED8…………………………LED1LED85)按下KEY键(松开后保持),同时点亮相邻的两只LED灯,隔1秒(定时)后再次增加点亮相邻的两只LED灯,直到全亮后再隔1秒点亮123456,后又1234,直到全灭后重新循环。
LED1LED8LED1LED8…………………………LED1LED8…………………………LED1LED86)按下KEY键(松开后保持),开始点亮LED1灯,隔1秒(定时)后点亮23,再隔1秒点亮345,隔1秒后5678,隔1秒后8,隔1秒后76 ,隔1秒后654,隔1秒后4321,隔1秒后1重复。
LED1LED8LED1LED8LED1LED8…………………………LED1LED87)按下KEY键(松开后保持),开始点亮LED1、LED8灯,隔1秒(定时)后点亮12、78,再隔1秒点亮123、678,直到全亮后再隔1秒点亮123、678,后又12、78,直到点亮LED1、LED8灯后重新循环。
第一篇:51单片机的中断和定时自学51单片机也有两个星期了,今天第一次写关于51的博客,也是因为感觉定时和中断挺重要的,要记录一下了。
定时器/计数器51的定时器/计数器有2个分别是T1和T0,52系列的单片机有3个定时器/计数器,T0和T1是通用定时器/计数器,定时器/计数器2(简称T2)是集定时、计数和捕获三种功能于一体,功能更强。
首先看一下这个简单点的功能,我在实验中用到的定时器的作用是高精度延时的作用,之前使用的通过while和for循环的延时方法都只是大概的时间,而定时器则可以精确设定时间在1微秒(10^-6)左右(以晶振频率为11.0592MHZ来说),其最大的时间取值为0.071,可见已经可以达到钟表的误差水准了。
定时器/计数器0和1的方式控制寄存器TMOD:T1 T0T1和T0分别代表单片机两个计数器GATE:门控制位。
当门控制位GATE=1时,定时器/计数器的运行受外部引脚输入电平的控制。
其中INT0引脚控制T0,INT1引脚控制T1.当控制引脚为高电平且TR0或TR1置1时,相应的定时器/计数器才被选通。
当门控制位GATE=0时,只要TR0或TR1置1,相应的定时器/计数器就被选通,此时不受外部引脚的控制。
C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。
TH1)和一个具有32为分频的低8位计数器中的(TL0或TL1)的低5位(0~4)组合成。
模式1:16位的计数器。
(TH1,TL1)模式2:自动装载8位计数器。
主要应用在串口波特率发生器。
模式3:将16位计数器分成两个独立的8位计数器TL0和TH0.定时器/计数器的工作模式3只适用于 T0.模式0&模式3:几乎不用。
特殊功能寄存器TCONT1 T0 定时中断溢出标志位TF1/TF0:当定时器T1/T0溢出时,硬件自动将TF0/TF1置1,并申请中断。
当进入中断服务程序时,硬件又将自动清零TF1/TF0.启/停控制位TR1/TR0:该位由软件置位和复位。
定时器及中断实验报告定时器及中断实验报告引言近年来,随着科技的不断发展,计算机技术在各个领域得到了广泛应用。
定时器和中断是计算机系统中非常重要的组成部分,能够帮助我们实现各种功能和任务。
本文将介绍定时器和中断的原理和应用,并结合实验结果进行分析和讨论。
一、定时器的原理和应用定时器是计算机系统中的一种硬件设备,用于计量时间间隔并触发相应的操作。
它通常由一个时钟源和一个计数器组成。
时钟源产生固定的脉冲信号,计数器根据时钟源的信号进行计数,当计数值达到设定的阈值时,定时器会触发一个中断信号,通知处理器执行相应的操作。
定时器在计算机系统中有广泛的应用。
例如,操作系统可以利用定时器来实现任务调度,确保各个任务按照一定的时间片轮转执行。
此外,定时器还可以用于测量时间间隔,计算程序运行时间,以及实现各种定时任务等。
二、中断的原理和应用中断是计算机系统中的一种机制,用于打破程序的顺序性,以响应外部事件或异常情况。
当发生中断事件时,处理器会立即中断当前的执行任务,保存当前的上下文信息,并跳转到中断处理程序来处理中断事件。
处理完成后,再返回到原来的执行任务。
中断可以分为硬件中断和软件中断。
硬件中断由硬件设备触发,例如定时器到达设定阈值、外部设备请求等。
而软件中断则是由程序主动触发,例如调用系统函数、执行软件异常等。
中断在计算机系统中的应用非常广泛。
它可以用于处理外部设备的输入输出,例如键盘、鼠标、打印机等。
同时,中断还可以用于处理各种异常情况,例如除零错误、越界访问等。
通过中断机制,计算机系统能够实现更高效、更灵活的任务处理和异常处理。
三、实验设置和结果分析为了更好地理解定时器和中断的原理和应用,我们进行了一系列的实验。
实验使用的是一款基于8051单片机的开发板,通过编写相应的汇编程序来实现定时器和中断的功能。
首先,我们设置了一个定时器,将时钟源设置为1MHz,计数器的初始值为0,阈值为1000。
然后,我们在中断处理程序中编写了一段代码,用于在定时器触发中断时进行相应的操作。
定时器中断实验报告
《定时器中断实验报告》
实验目的:通过定时器中断实验,掌握定时器中断的原理和应用,加深对嵌入式系统中断处理的理解。
实验原理:定时器中断是一种常见的嵌入式系统中断方式,通过设置定时器的计数值和中断触发条件,可以实现定时中断功能。
在实验中,我们通过配置定时器的工作模式、计数值和中断触发条件,来实现定时中断功能。
实验过程:首先,我们在实验板上搭建了一个简单的嵌入式系统,包括主控芯片、定时器模块和LED灯。
然后,我们编写了一段简单的程序,配置定时器的工作模式为定时模式,设置定时器的计数值为1000ms,并配置定时器中断触发条件为计数器溢出。
接着,我们将LED灯的亮灭控制放在定时器中断服务函数中,当定时器中断触发时,LED灯状态发生改变。
最后,我们下载程序到实验板上,观察LED灯的亮灭情况。
实验结果:经过实验,我们成功实现了定时器中断功能,当定时器计数器溢出时,定时器中断触发,LED灯状态发生改变。
通过调整定时器的计数值,我们还可以实现不同的定时中断周期,满足不同的应用需求。
实验结论:定时器中断是一种常见的嵌入式系统中断方式,可以实现定时中断功能,用于实现定时任务、定时采样等应用场景。
通过本次实验,我们深入理解了定时器中断的原理和应用,为进一步深入学习嵌入式系统中断处理打下了坚实的基础。
通过本次实验,我们不仅掌握了定时器中断的原理和应用,还提高了对嵌入式系统中断处理的理解,为今后的嵌入式系统开发工作奠定了基础。
希望通过更
多的实验和学习,我们能够进一步提升自己的嵌入式系统开发能力,为未来的科研和工程实践做出更大的贡献。
中断及定时器实验报告中断及定时器实验报告引言:中断是计算机系统中一种重要的机制,它可以打破程序的顺序执行,响应外部事件的发生。
中断的引入使得计算机可以同时处理多个任务,提高了系统的效率和可靠性。
定时器是中断的一种常见应用,它可以在一定时间间隔内产生中断信号,实现定时任务的功能。
本实验旨在通过编程实现中断和定时器的功能,并测试其正确性和稳定性。
一、实验目的1. 学习中断的概念和原理;2. 掌握中断的编程方法和中断处理程序的编写;3. 理解定时器的工作原理和应用场景;4. 实现定时器的功能,并测试其正确性和稳定性。
二、实验过程1. 硬件准备在实验中,我们使用了一台基于8051单片机的开发板,通过连接外部电路和开发板的引脚,实现对定时器的控制。
2. 软件编程首先,我们需要在开发板上搭建一个简单的电路,包括一个LED灯和一个按钮。
然后,我们使用汇编语言编写中断处理程序,实现当按钮按下时,LED灯闪烁的功能。
具体的编程步骤如下:(1)设置中断向量表:将中断处理程序的地址存储到中断向量表中,以便系统在中断发生时能够正确地跳转到相应的处理程序;(2)初始化定时器:设置定时器的计数器初值和工作模式;(3)编写中断处理程序:当中断发生时,执行相应的处理程序。
在本实验中,我们编写了一个简单的中断处理程序,当按钮按下时,将LED灯的状态取反;(4)启用中断:使能中断,使得系统能够响应外部事件的发生。
3. 实验测试将编写的程序下载到开发板上,并连接相应的电路。
按下按钮,观察LED灯是否按照预期的频率闪烁。
通过调整定时器的计数器初值和工作模式,可以改变LED灯闪烁的频率。
三、实验结果经过多次实验测试,我们发现中断和定时器的功能正常,LED灯能够按照预期的频率闪烁。
通过改变定时器的计数器初值和工作模式,我们成功地实现了LED灯闪烁频率的调节。
实验结果表明,中断和定时器是一种有效的方法,可以实现对外部事件的及时响应和定时任务的精确控制。
5实验一:写程序,使发光二极管循环点亮。
实验二:数码管采用静态显示的方法循环显示数据P1次数,在系统设计目标❑问题:⏹中断概念❑⏹单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。
⏹中断处理过程示意图步骤分为5步:中断请求、中断判优、中断响应、中断处理、中断返回。
[P82-2]思考:进入中断→中断服务程序流程图中断系统结构示意图中断使能:CPU 对中断源的开放或屏蔽,由片内的中断允许寄存器IE 控制中断标志:特殊功能寄存器TCON 和SCON 的相应位锁存各中断请求标志优先级:中断优先级寄存器IP 的配置设定中断响应的优先级P1次数,在8051 单片机P32、P33 引脚为外部中断输入引脚,分别称为INT0、INT1,低电平或下降沿触发。
定义中断服务函数时用如下的形式函数类型函数名(形式参数n 指明所使用的中断号。
每个中断号都对应一个中断向量小结12⏹采用外部中断方式,由按键控制的亮或灭。
❑下面我们来了解:中断源8051单片机有1. 外部中断源INT0中断标志INT1P3.1引出;中断使能位ES、EA(在IE);中断标志★⏹中断允许控制寄存器⏹中断优先级控制寄存器IP中断系统有两个不能寻址的“优先级激活触发器个用于指示低优先级的中断正在执行,其将所有同级中断都阻止,但不阻断高优先级的中断请求。
一个用于指示高优先级的中断正在执行,其将阻止所有后来的中断。
看的懂,记得住。
[P77]下面我们从理论的角度来了解:一个中断请求被响应,需满足以下必要条件:(1)IE寄存器中的中断总允许位(2)该中断源的(3)该中断源发出中断请求,立即对应的1、首先由硬件自动生成一条长调用指令:2、由CPU执行该指令,3、再将址(中断向量)固定。
★中断响应遇到(1)(2)1、外部中断请求(1)(2)除了标志位清2.定时器/计数器中断请求中断请求被响应后。
硬件会3.串行口中断请求的撤消⏹中断服务程序设计的任务❑(1)(2)采用中断时的程序结构中断请求源用的情况下,可对外部中断源进究竟是哪个外设提出的中断请求?还要通过程序P1.0~P1.3 引脚上的逻辑电平来确定。
单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。
二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。
它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。
T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。
作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。
计数的最高频率一般为振荡频率的1/24。
定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。
因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。
TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
其格式如下:GATE:门控位。
GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
实验五8051单片机定时中断实验一实验目的:了解8051系列单片机的定时中断基本工作原理。
掌握8051系列单片机定时中断的用法。
二实验原理:在上一个实验里我们介绍了8051单片机的外中断应用,本实验要介绍的是定时器中断的应用。
8051系列单片机至少有两个16位的内部定时器/计数器,既可以编程为定时器使用,也可以作为计数器使用。
如果是计数内部晶振驱动时钟,它是定时器,如果是计数8051的输入管脚的信号,就是计数器。
MCS-51单片机内部的定时/计数器的结构如图5-1所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。
特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。
程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。
图5-1TMOD特殊功能寄存器的格式参见下表(表5-1):表5-1高4位为定时器/计数器1的控制字,低4位为定时器/计数器0的控制字。
其中GATE为门控信号,C/T为定时器或计数器的选择,而M1,M0是工作方式选择位。
当M1M0=00时,T/C工作在方式0。
方式0为13位的T/C,其计数器由TH的8位和TL的5位构成,计数器的计数值范围是: 1—8192(213),但是启动前可以预置计数初值。
当C/T为0时,T/C为定时器,计数脉冲为振荡源12分频的信号;当C/T为1时,T/C为计数器,对输入端T0或T1输入的脉冲进行计数。
计数脉冲加到计数器上与否决定于启动信号。
当GATE=0时,TR=1时T/C便启动,当GATE=1时,启动受到TR与INT的双重控制,即二者同时为高时才启动。
当计数满时,TH向高位进位,这时中断溢出标志TF置1,即产生中断请求。
而当CPU转向中断服务程序时,TF自动清零。
实验四定时中断实验一、实验目的1.掌握51单片机定时中断的应用。
2.掌握定时器初值的计算方法。
3. 掌握定时中断和延时函数的区别。
二、实验内容1.用定时器T0的方式1实现定时。
2.用定时器T1的方式2控制两个LED以不同周期闪烁。
三、电路图四、实验步骤说明1. 用定时器T0的方式1实现定时。
使用定时器T0的方式1来控制P0.0引脚的LED的闪烁,要求闪烁周期2s,即亮1s,灭1s。
2. 用定时器T1的方式2控制两个LED以不同周期闪烁。
使用定时器T1的方式2来控制P0.0、P0.1引脚的两个LED分别以1s和2s的周期闪烁。
实验报告格式实验四定时中断实验学院:专业:年级:实验时间:姓名:学号:指导教师:一、实验目的1.掌握51单片机定时中断的应用。
2.掌握定时器初值的计算方法。
3. 掌握定时中断和延时函数的区别。
二、实验内容1.用定时器T0的方式1实现定时。
2.用定时器T1的方式2控制两个LED以不同周期闪烁。
三、电路图(贴Proteus仿真图)四、程序与注释1)程序1(调试下列程序,在错误行后面注明错误及改正方法)#include <reg51.h>;#define uchar unsigned char//sbit P0_0=P0^0;unchar a;void main(){EA=1;TMOD=0x10;TH0=(65536-50000)/256;TL0=(65536-50000)%256;a=0;while(1)}void t0() interrupt 0{a++;if(a==10){P0_0=~P0_0;}TH0=(65536-50000)/256;TL0=(65536-50000)%256;}2)程序2(调试下列程序,在错误行后面注明错误及改正方法)#include <reg51.h>#define uchar unsigned char;sbit D0=P0^0;sbit D1=P0^1;uchar a,b;void main(){EA=1;ET1=1;TMOD=0x20;TL1=6;TR0=1;a=0;b=0;while(1);}void t1() interrupt 1{a++;b++;if(a=1000){D0=~D0a=0;}if(b=4000){D1=~D1;b=0;}六、简答题用T1,工作方式1实现1s的延时函数,晶振频率为12MHz。
实验五8051单片机定时中断实验
一实验目的:
了解8051系列单片机的定时中断基本工作原理。
掌握8051系列单片机定时中断的用法。
二实验原理:
在上一个实验里我们介绍了8051单片机的外中断应用,本实验要介绍的是定时器中断的应用。
8051系列单片机至少有两个16位的内部定时器/计数器,既可以编程为定时器使用,也可以作为计数器使用。
如果是计数内部晶振驱动时钟,它是定时器,如果是计数8051的输入管脚的信号,就是计数器。
MCS-51单片机内部的定时/计数器的结构如图5-1所示,定时器T0特性功能寄存器TL0(低8位)和TH0(高8位)构成,定时器T1由特性功能寄存器TL1(低8位)和TH1(高8位)构成。
特殊功能寄存器TMOD控制定时寄存器的工作方式,TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器T0和T1的溢出标志等。
程序开始时需对TL0、TH0、TL1和TH1进行初始化编程,以定义它们的工作方式和控制T0和T1的计数。
图5-1
TMOD特殊功能寄存器的格式参见下表(表5-1):
表5-1
高4位为定时器/计数器1的控制字,低4位为定时器/计数器0的控制字。
其中GATE
为门控信号,C/T为定时器或计数器的选择,而M1,M0是工作方式选择位。
当M1M0=00时,T/C工作在方式0。
方式0为13位的T/C,其计数器由TH的8位和TL的5
位构成,计数器的计数值范围是: 1—8192(213),但是启动前可以预置计数初值。
当C/T为
0时,T/C为定时器,计数脉冲为振荡源12分频的信号;当C/T为1时,T/C为计数器,对输入端T0或T1输入的脉冲进行计数。
计数脉冲加到计数器上与否决定于启动信号。
当GATE=0时,TR=1时T/C便启动,当GATE=1时,启动受到TR与INT的双重控制,即二者同时为高
时才启动。
当计数满时,TH向高位进位,这时中断溢出标志TF置1,即产生中断请求。
而当CPU转向中断服务程序时,TF自动清零。
当M1M0=01时,T/C工作在方式1。
方式1和方式0的区别仅在于方式0的计数器位数为13位,而方式1的为16位。
当M1M0=10时,T/C工作在方式2。
区别于前面的两种工作方式的是,方式2具有自动重装载的功能。
TH和TL作为两个8位的计数器,TH中的8位初值始终保持不变,由TL进行8位计数。
在计数溢出时不但会产生中断请求,而且自动将TH中的值加载至TL 中,即自动重装载。
当M1M0=11时,T/C工作在方式3。
但是这种工作方式只存在于T/C0中,这时TH0与TL0成为两个独立的计数器。
只有在T/C1作为串行口的波特率发生器使用,而造成定时器不够用时,T/C0才能工作在方式3。
下面是定时器时间常数计算公式,这个公式在方式1,即16 位定时或计数模式可用。
THX=(65536-定时时长[µS]/(机器周期数/时钟频率[MHz])/256;
TLX=(65536-定时时长[µS]/(机器周期数/时钟频率[MHz])%256;
在定时器重装载过程中因为TL1=0可以不写。
三实验内容:
利用中断方式在LED上输出10HZ方波,系统晶体频率11.059MHz。
四实验电路图:
图5-2
五实验方法:
1.根据如上电路图连接好实验电路。
实验板中只要将P1.3与LED1相连。
2.按照实验要求编写实验程序,建立新工程,保存为TINT。
3.调试程序。
4.将keilC51产生的tint.hex文件通过在线下载ISP或商用编程器。
六参考程序:
1.汇编源程序
ORG 0000H
LJMP MAIN
ORG 001Bh ;定时1中断服务入口地址
LJMP TMR1_INT_SRV
MAIN: LCALL INIT_TMR1
LCALL INIT_TMR1INT
AGAIN: SJMP AGAIN
TMR1_INT_SRV: MOV TH1,#0x4C ;中断服务子程序
CPL P1.3
RETI
INIT_TMR1INT: SETB ET1 ;定时中断初始化
SETB EA ;开中断
RET
INIT_TMR1: MOV TMOD,#0x11 ;初始化定时器
MOV TH1,#0x4C
CLR A
MOV TL1,A
SETB TR1
RET
END
2.C语言源程序
/********************************************************
文件名:tint.c
*描述:方波输出
********************************************************/ #include <reg51.h>
sbit LED= P1^3;
/********************************************************
* 描述:定时中断设置子程序
* 输入:无
* 返回:无
********************************************************/ void INIT_TMR1(void)
{
TMOD=0x11;
TH1=0x4C; // (65536-50000uS/(12cyc/11.0592MHz))/256
TL1=0; // (65536-50000uS/(12cyc/11.0592MHz))%256
TR1=1;
}
/**************************************************
* 描述:定时器 1 开中断程序
* 输入:无
* 返回:无
**************************************************/
void INIT_TMR1INT(void)
{
ET1=1;
EA=1;
}
/**************************************************
* 描述:中断服务子程序,输出方波
* 输入:无
* 返回:无
**************************************************/
void TMR1_INT_SRV(void) interrupt 3
{
TH1=0x4C;
LED=~LED;
}
void main(void)
{
INIT_TMR1();
INIT_TMR1INT();
while(1){}
}
思考题:
请查阅8051的数据手册,请把定时器设置成13位完成本实验的功能。