原创 中断和定时器实验--c语言实现中断嵌套【转载】

2009-6-24 14:29 5109 13 13 分类: MCU/ 嵌入式

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


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


解:对于“重复触发问题”,单片及不响应外部中断。


硬件电路:


                       



--------------------------------------------------------------------------------


实验程序:


//程序说明,外部中断服务程序的工作是:禁止外中断,启动定时器0,允许定时//器0中断,led1(p1.0口)取反。


//定时器中断服务程序的工作是:重载TH0和TL0的初值,延迟3s后,关闭定//时器0,禁止定时器0中断,允许外部中断,led进入灭状态。


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


//yzxled.h


#include <reg51.h>


sbit LED1=P1^0;


#define ON 1


#define OFF 0


#define RELOADTH0 0x3c


#define RELOADTL0 0x0b0


typedef unsigned char uchar;


uchar time="0",delaytime=10;


//yzxled.c


#include "yzxled.h"


void inter1(void) interrupt 0 using 1 {


        EX0=0;                     //


        LED1=! LED1;


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


       TR0=1;          //启动定时0


       }


void time0(void) interrupt 1 using 2 {


       time++;                                                   //记数


       TH0=RELOADTH0;


       TL0=RELOADTL0;


       if(time==delaytime)


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


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


                         time="0";                


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


                         LED1=OFF;        //led灯灭


             }            


       }


void main() {


       LED1=OFF;


              TMOD="0x01";


              IT0=1; //脉冲触发


              EA="1";


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


              while(1);


              }


 


  实验结果:程序运行后,led灯进入灭状态。当有外部脉冲进入p3.2口时,led灯进入亮状态。在led灯亮的期间,再次给p3.2口送入一脉冲,led灯依旧亮,说明程序没有响应外中断,因为如果响应外中断0服务程序,led 应该进入灭状态。定时结束后,led灯进入灭状态,程序等待下次外中断。


------------------------------------------------------------------------------------------------------------------------------


本文来自CSDN博客,转载请标明出处:


http://blog.csdn.net/yzxtc/archive/2006/04/24/675298.aspx

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
13
关闭 站长推荐上一条 /3 下一条