定时溢出中断实验报告

时间:2024.4.21

苏州大学实验报告

院、系        年级专业     姓名    学号     

课程名称                      成绩     

指导教师         同组实验者      实验日期     

实验名称:    定时溢出中断实验          

一.实验目的

  通过该实验,进一步熟悉MT-IDE嵌入式开发系统环境、汇编和C语言以及调试方式;复习串口的相关原理和编程方法;理解用定时器实现计数与定时的工作原理以及实现方法;理解课本中的程序代码。

二.实验内容

  编制一个利用定时器中断计数的程序。要求1秒钟中断一次,计数加1,该计数范围为从0255,超过又重新计数,每次的数字通过接在PTA0PTA7上的八个小灯动态显示,小灯亮,表示该位为“1”;小灯暗,表示该位为“0”。       

三.实验过程

(一)基本原理

  定时器的核心是一个不断加116位计数寄存器,该计数器的时钟频率由外部晶振时钟或总线时钟经过分频因子分频得到,在定时器内部有个控制和状态寄存器,通过对它某些位的设置,可以确定在多少时间后计数器加1。在定时器内部有个预置寄存器,当计数器的值等于预置寄存器的值时,称为计数器溢出。当计数器溢出时,计数器的值被赋0,同时将计数器溢出标志等状态置于控制和状态寄存器中。通过对控制和状态寄存器某些位的设置,可以决定在计数器溢出时,是否允许中断,利用这个中断,可以编写中断程序,实现计数与定时等功能。

四.编程

(一)流程图

(二)所用寄存器名称及其所用的位

T1状态和控制寄存器(Timer 1 Status and Control Register,T1SC)

T1计数寄存器(Timer 1 Counter Register,T1CNTH、TICNTL)

这是一个16位寄存器,分为高8位和低8位,每一个计数周期值加一。

T1预置寄存器(Timer 1 Counter Modulo Register,T1MODH、T1MODL)

这是一个16位寄存器,分为高8位和低8位,当计数寄存器中的值达到预置寄存器的值时发生中断。

(三)主要代码段

1.汇编方式:

2.C语言方式:

五.实验问答(根据实验指导书所列举的问题)

1.通过实验总结完全软件定时和利用可编程定时器定时的差异性以及各自优缺点

  完全软件定时是利用计算机执行指令的时间来实现定时。通常设计一个延时子程序,子程序中包括一定指令。设计者需要对指令的执行时间严格的计算。该方法节省硬件,但延时时要执行延时程序,降低了CPU利用率,不利于多作业环境。             

  利用可编程定时器计时,结合了完全硬件完全软件的优点,其计时可由程序设置,设置后可与CPU并行工作,不占用CPU工作时间,同时定时器成本不高。因此该方法较优。 

2.总结定时器初始化包括哪些内容?

   定时器初始化过程中需要对定时器状态和控制寄存器、计数寄存器和预置寄存器设置。具体为根据要求的时间间隔、总线频率计算出分频因子和预置寄存器的值写入相应的寄存器同时设置计数寄存器的值为0,最后允许计数寄存器计数。                                        

                                        

3.本自编程序中可以用寄存器A代替sec全局变量吗?

    不可以。因为在每次中断发生时将寄存器A中的值压入堆栈,而在退出中断时又会将A中的值恢复为中断发生前A中的值,从而使得在中断过程中对其所作的更新无效。思考用寄存器H又如何。                                                 

4.本实验中是定时器的间隔为1秒,思考任何获得更小或更大的定时间隔?

    首先可以通过对分频因子和预置寄存器的设置来获取所要求的时间间隔,当超过一定值后,可以通过中断处理程序解决。                                                 

5.想一想课本中第202页的中断程序1秒钟中断一次,最高能采用多大的时钟频率。

                                                

6.若本实验自编的中断程序时钟频率太高了,1秒钟的计数超过65535范围,中断程序该怎样处理以便解决这个问题。

    通过计数时钟频率计算出1秒钟的计数次数。将该次数等分位n段,使得每断的计数次数不超过65535,将每段的计数次数写入到预置寄存器。增加标志变量,记录进入中断处理函数的次数。当进入中断处理函数的次数为n时,此时时间间隔为1秒。                                                                            

7.计数寄存器可以如何清零?

    向计数寄存器中直接写入0可以使计数寄存器清零;向定时器复位位写入1时会清除计数寄存器;在允许计数的情况下,当计数寄存器的值达到预置寄存器的设定值时,计数寄存器亦自动清零。                                                                            

六.实验小结

  通过该实验,了解了如何使用定时器溢出中断进行计时,熟悉和掌握了MT-IDE嵌入式开发系统环境及其调试方式,进一步熟悉汇编编程和C语言编程;复习了串口通信(SCI)的相关原理和方法。     


第二篇:实验报告(中断和定时的使用1)


中国地质大学(北京)

实  验  报  告

课程名称:        单片机原理               

实验名称:  单片机定时和外部中断的使用(1)

姓    名:           徐奥              

学    号:         1010092225                

班    级:         10100922                

指导教师:         曾 卫 华                

评    分:                                 

实验时间:          20##-10                 

实验题目:单片机定时和外部中断的使用(1)

一、      实验目的

1、了解单片机C语言程序的设计和调试方法

2、掌握单片机定时和中断控制程序的简单编程

    3、进一步熟悉单片机上机操作实践过程,加深对硬件应用的理解

二、  实验要求

   通过使用51单片机的定时器功能,控制P89V51RD2单片机实验板上的8个LED灯。要求上电复位后,每个LED跑马灯的点亮时间为500ms,每按一次INT0键并产生外部中断后,LED灯的点亮时间减少10ms,程序运行期间4位7段数码管显示当前点亮时间,显示不闪烁。

实验原理

1)工作原理框图

7_SEG_LED:

8_BI Ts_LED:

2)实验原理                              

     见以下参考程序:

参考程序

#include<reg51.h>

void Time0(void);

void int0(void);

void display(unsigned char);

void UART(void);

void send(unsigned char j);

void delay();

static unsigned char ksbl=50;

unsigned char counter;

sbit fd=P3^2;

sbit clk=P3^6;

unsigned char code Tab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

unsigned char code Tab0[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

                       

void main(void)

{;

    IP=0x01;

    IT0=1;

    EX0=1;

    TMOD=0x01;

    TH0=(65536-55536)/256;

    TL0=(65536-55536)%256;

    ET0=1;

    EA=1;

    TR0=1;

    UART();

    counter=0;

    send(ksbl);

    while(1)

      {display(ksbl);}

}

void Time0(void) interrupt 1 using 0

{   static unsigned char i=0;

    counter++;

   

    if(counter==ksbl)

      {

          P0=Tab[i];

           clk=1;

           clk=0;

           counter=0;

           if(i<7) i++;

           else i=0;        

       }

       

       TH0=(65536-46083)/256;

        TL0=(65536-46083)%256;

       TR0=1;

}

void Int0(void) interrupt 0 using 0

{  int s;

    s=0;

   while(fd==0)

    s++;

    if(s>100)

   {

    if(ksbl>0)

   {

    ksbl--;

    send(ksbl);

   }

    else ksbl=50;

       s=0;

       EX0=1;

       IT0=1;

    }

}

void display(unsigned char ksbl)

{

    P1=0x8e;

    P0=0x03;

    delay();

    P1=0x4e;

    P0=Tab0[ksbl%10];

    delay(); 

   P1=0x2e;

    P0=Tab0[ksbl/10];

    delay();  

}

void delay()

{

    unsigned char i;

    for(i=0;i<250;i++)

       ;

}

void UART(void)

{

    TMOD=0x20;

    SCON=0x40; 

    PCON=0x00;

    TH1=0xfd;

    TL1=0xfd;

     EA=1;

     ES=0;

     TR1=1;

}

void send(unsigned char ksbl)

{

    SBUF=Tab0[ksbl/10];

    while(TI==0);

if(TI)

    TI=0;

    SBUF=Tab0[ksbl%10];

    while(TI==0) ;

if(TI)

    TI=0;

    SBUF=Tab0[0];

    while(TI==0);

if(TI)

    SBUF=0x20;

    while(TI==0);

if(TI)

    TI=0;

}

实验步骤

1、在keil软件中新建实验项目exp2;

2、新建文件,输入实验程序并补充完整,保存为.c文件;

3、将上述.c文件添加到实验项目exp2中,编译调试实验程序,并修改错误;

4、再次编译生成hex文件,用flash magic烧录到单片机中

5、将单片机复位上电,运行

6、按INT0键,观察led管的显示数字,每按一次观察是否有变化,变化是否按设计进行

实验结果

个人感觉非常成功,实现了用外中断控制闪亮时间,通过使用P0的锁存器,用P0口点亮了LED灯和数码管。闪的很好看哦。按键的防抖设置有了很好的效果,若没有防抖,闪亮速度会变化的没规律。

七、实验感想

编程是个很细致的活,一点错都会导致没有预期效果,而且编程真的建立在理解单片机工作原理的基础上,必须对单片机每一步执行的细节细致考虑,不然什么现象都没有。

复杂功能最好一点点实现,从最开始的点亮一个灯开始,很多事情不是想象的那样的,做完了才知道,原来是那样的。

更多相关推荐:
单片机中断实验报告

实验三定时器中断实验一实验目的1掌握51单片机定时器基本知识2掌握定时器的基本编程方法3学会使用定时器中断二实验内容1利用定时器设计一个秒表计数范围为059并在数码管实时显示三实验设备PC机一台单片机实验箱主要...

中断实验报告报告

中断试验试验报告班级电信1001姓名张贵彬学号20xx46830213一实验目的1掌握PC机中断处理系统的基本原理2学会编写中断服务程序二实验原理与内容1实验原理PC机用户可使用的硬件中断只有可屏蔽中断由825...

实验报告一 中断处理

实验报告一中断处理姓名xxxx学号xxxx班级xxxxx一实习内容运用某种高级语言如C或C模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序二实习目的现代计算机系统的硬件部分都设有中断机构中断机构能发...

中断优先级控制及中断保护实验报告

中断优先级控制及中断保护学生学号20xx03870408专业班级自动化1202指导老师杨东勇20xx年12月一实验目的1掌握单片机中断机制2熟悉中断的应用和编程二实验设备统一电子开发平台三实验要求连接单片机最小...

8259A中断实验报告

实验十一8259A中断实验一实验目的1学习80868088与8259A的连接与控制方法掌握其工作原理2完成程序设计题学会编写中断服务程序二实验原理8259A是一种可编程序中断控制器与808886微机兼容能处理8...

8259中断实验实验报告

实验报告实验名称8259A中断控制器实验姓名学号班级教师日期一实验内容与要求11实验内容了解8259A终端控制器的工作原理了解PC中断的原理和过程设计并编写程序设置8259A的命令字定义中断服务程序使在TPCU...

指示灯、数码管的中断控制实验报告

学生实验报告参考样本学院软件与通信工程课程名称单片机原理专业班级通信101姓名学号学生实验报告一实验目的及要求1目的掌握外部中断原理学习中断编程与程序调试方法2内容及要求熟悉uvision3的软件调试方法完成c...

单片机外部中断实验报告

实验三外部中断实验报告班级学号姓名教师一实验目的1掌握单片机外部中断的原理及过程2掌握单片机外部中断程序的设计方法3掌握单片机外部中断时中断方式的选择方法二实验内容如下图所示P32设为输入P2设为输出位连有8个...

单片机中断技术实验报告

实验名称中断技术基本时钟和定时功能实验45姓名学号实验班号21机器号一实验目的1了解中断原理包括对中断源中断向量中断类型号中断程序以及中断响应过程的理解2掌握单片机C语言中断程序设计方法3了解MSP430G25...

51单片机外部中断实验报告

51单片机外部中断实验实验报告要求1整理本实验涉及的程序将它们按正确的格式详细书写在实验报告纸上1无中断时发光让发光二极管从左到右依次点亮有外部中断请求时4位数码管从0000开始加1显示加到9999后复位为00...

实验4 指示灯、数码管的中断控制实验报告

洛阳理工学院实验报告

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

单片机实验报告(二)实验名称:定时器及外部中断南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技术的基本使用方法;3、学习中断处理程序的编程方法。二、实验原理(1)以P1口作为…

中断实验报告(34篇)