求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断

求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断,第1张

//假设晶振12MHZ,检测的是P11下降沿

#include "reg51h"

unsigned int YSJS;

sbit K1 = P1^1;

void main(void)

{

TMOD |= 0X10; //定时器1工作于方式1,16位定时器

TL1 = 0x78; //设置定时初值

TH1 = 0xEC; //定时器1定时时间=5000us

ET1 = 1; //使能定时器1中断

EA =1; //开总中断

K1 = 1;

YSJS = 0;

while(1)

{

if(K1==0)TR1 = 1; //启动定时器1

if(YSJS == 12000) //已定时一分钟

{

//这里加入你自己定时一分钟后要做的处理

}

}

}

void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组

{

TL1 = 0x78; //设置定时初值

TH1 = 0xEC; //定时器1定时时间=5000us

YSJS++;

if(YSJS==12000) //已定时一分钟

{

TR1 = 0;关闭定时器1

}

}

51单片机外部中断INT0,INT1,是可以设置为下降沿触发的。但要按键必须接在P32上,为INT0,接在P33为INT1。

这只需设置对应的标志位就行,INT0,设置lT0=1,INT1设置IT1=1。

这两个标志位在TCON寄存器中。

如果按键接在其它脚上,那只有编程序检测了。

本人只讲思路:(1)首先你要明确你的按键是上拉接法还是下拉接法;(2)要明确按键是输入设备,所以按键接在PA1上,你要根据按键硬件电路的上拉或下拉接法来确定PA1这个GPIO口的输入方式,按键硬件上是上拉接入,PA1就配置上拉输入,同理,下拉对应下拉;(3)然后写程序,首先写GPIO初始化程序:包括使能时钟、输入模式设置、速度设置、上下拉设置;(4)在写按键检测程序之前要明确检测上升沿还是检测下降沿:如果按键在硬件上是上拉接法,则按下按键会产生负脉冲按键信号,按键检测程序则检测下降沿即可。如果是下拉接法,则当按键按下则产生正脉冲按键信号,按键检测程序则检测上升沿即可。(5)根据(4)中所述,写按键检测上升沿或者下降沿的按键检测程序,并且在按键检测程序中应该采用延时程序实现10至20ms的延时处理按键的抖动,目的是为了消除按键产生的机械抖动,专业说法叫做按键的消抖。(6)在按键检测程序内部,当按键检测成功,则执行自己设定的变量自加1的这一行代码。以上六步就可以实现君所需功能。

1、脉冲宽度

如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,也记录当前发生下降沿时的CNT值,两次CNT值的差值再根据计数的频率就可以算出脉冲的宽度。

上升沿及下降沿捕获的程序具体实现如下:

TIM8_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数

void TIM8_UP_IRQHandler(void)

{

if((TIM8CH4_CAPTURE_STA&0X80)==0) //还未成功捕获

{

if (TIM_GetITStatus(TIM8,TIM_IT_Update) != RESET)

{

if(TIM8CH4_CAPTURE_STA&0X40) //已经捕获到高电平了

{

if((TIM8CH4_CAPTURE_STA&0X3F)==0X3F) //高电平太长了

{

TIM8CH4_CAPTURE_STA"=0X80; //标记成功捕获了一次

TIM8CH4_CAPTURE_VAL=0XFFFF;

}

else

TIM8CH4_CAPTURE_STA++; //捕获高电平后定时器溢出的次数++

}

}

}

TIM_ClearITPendingBit(TIM8,TIM_IT_Update); //清除中断标志位

}

void TIM8_CC_IRQHandler(void)

{

if((TIM8CH4_CAPTURE_STA&0X80)==0)

{

if(TIM_GetITStatus(TIM8,TIM_IT_CC4) != RESET) //捕获1发生捕

以上就是关于求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断全部的内容,包括:求51单片机c语言程序,使用定时器中断,当接受的下降沿时,开始定时,定时一分钟,定时结束后跳出中断、若将按键的工作状态检测变为下降沿,应配置哪个寄存器,怎样配置、stm32的PA1口接一个按键,按下这个键就加1这怎么写程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10173405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存