我是靠谱客的博主 刻苦向日葵,最近开发中收集的这篇文章主要介绍中断和定时器实验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实验五 中断和定时器实验

    名:郑旅军       号:0656061

指导老师:邹慧兰       绩:

如有疑问,请zlj800800@163.com 探讨

题目:通过外部中断0,触发一个延时过程,假定延时时间为1秒,延时期间可以点亮一个LED或让蜂鸣器发出声音。已知单片机晶振频率为6 .00MHz

提示:可以使用定时器中断,也可以不使用定时器中断。如果使用定时器中断,则把中断重新启动工作放在外部中断服务程序中,一旦定时器从新启动,延时固定的时间。程序的写法可以参考上次上机的题目,但是必须使用C语言。本程序必须包含两个中断子程序,一个是外部中断0,一个是定时器中断。在外部中断0子程序中设置定时器使之工作,完成延时,时间达到后再禁止定时器中断,这个工作应该在定时器中断子程序本身中完成。

上面的方法可以完成一个“重复触发问题”,即定时时间没有到的时候又来一个触发信号,应该怎么办?

程序流程图:

硬件电路:

首先确定各种中断的中断号,其值从0 开始,编号从0~4,分别对应外中断0、定时器0中断、外中断1、定时器1 中断和串行口中断。

 

源程序如下:

/*主函数设置定时器0的工作模式,外中断的触发模式(本实验使用的是脉冲触

发),允许总中断和外中断*/

/*外部中断服务程序的工作是:禁止外中断,启动定时器0,允许定时

0中断,led取反*/

/*定时器中断服务程序的工作是:重载TH0TL0的初值,延迟1s后,关闭定

时器0,禁止定时器0中断,允许外部中断,改变LED状态*/

#include <reg51.h>

#define uint unsigned int

uint num=8;

 

void inter0(void) interrupt 0 using 1

{

        EX0=0;          //禁止外部中断

        P1=0xFF;       //延时期间使灯亮

    ET0=1;          //允许定时0中断

        TR0=1;          //重启动定时0

       

}

 

 

void time0(void) interrupt 1 using 2

 

{

    num--;   //记数

    TH0=0x0b;

    TL0=0xdc;

    if(num==0)

         {

                 TR0=0;    //关闭定时器0

                 ET0=0;    //禁止定时器0中断

        num=8;

                 EX0=1;     //允许外部中断0

                 P1=0x00;    //LED灯灭

             }

    }

void main()

 {

       P1=0x00;

       TH0=0x0b;

    TL0=0xdc;

        EA=1;

        TMOD=0x01;

        IT0=1;

        EX0=1;

        while(1);

    }

  实验结果:

预期结果:程序运行后,LED灯是灭的。当有外部脉冲进入P3.2口时,LED灯进入亮状态。持续1s后,LED灯变灭,等待下一个外部脉冲。在LED灯亮的期间,再次给P3.2口送入一脉冲,LED灯依旧亮,说明程序没有响应外中断,因为如果响应外中断0服务程序,LED应该进入灭状态。

实际结果:给一次脉冲,灯亮,经历1s后灯灭;但在这一秒内持续给脉冲,灯就一直亮着,最后一个脉冲给过后,灯亮一秒后再灭去。这不符合预期的试验结果,从程序上来看是没有问题的,因为在进入外中断函数后,外中断已经被关闭了,外部中断信号不可能进来的。原因可能出在内部电路上,也就是1s内有脉冲输入时,中断信息被存在锁存器里,但由于此时外中断被关,没有送进CPU,所以没有响应,但这我们没有现象觉察到;一旦定时程序跳出,外中断被打开,中断请求数据被送入,CPU响应,于是又开始新的一轮中断+定时服务,这个过程很短暂,人眼很难从LED的变化中觉察到。

最后

以上就是刻苦向日葵为你收集整理的中断和定时器实验的全部内容,希望文章能够帮你解决中断和定时器实验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部