历史上的今天
今天是:2024年08月23日(星期五)
2021年08月23日 | 51单片机-外部中断测脉冲个数
2021-08-23 来源:eefocus
1.外部中断的常用功能
外部中断经常用来记录外部脉冲的个数,也就是当我们使用外部中断1时,如果想记录自身单片机的某个引脚的下降沿个数,只需用杜邦线把这个引脚和P3.3连接即可。
比如P2.3引脚产生这样的电平无规律跳转,则下降沿的个数为5

所以我们就用外部中断1来实现记录K4按键从按下到松手的抖动过程中经历了多少个下降沿,把下降沿的个数显示在数码管上。
2.程序思路
我们定义一个16位的全局变量pulse用来记录P2.3下降沿的个数,在中断函数中的任务就是简单的pulse自加,因为引脚遇到下降沿就会进入中断函数。
在主函数里就是负责数码管显示即可。
3.代码
#include #include u16 pulse=0; void main() { u16 x,PULSE_buf; IT1 = 1; //下降沿触发模式 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 KEY_Init();//初始化按键功能模块 ShowNumber(pulse); while(1) { SEG_Scan(); if(PULSE_buf!=pulse)ShowNumber(pulse);//pulse不再是前一次的值,也就是pulse数值更新了,所以数码管缓存区也要更新pulse的数值以便显示出来 x++; if(x>=50)//隔一段时间过来记录此时的pulse数值 { x=0; PULSE_buf=pulse; } } } //请把P3.3和P2.3用杜邦线连接起来 void EXTI1_IRQHandler() interrupt 2 { pulse++; } 大家多按几次K4,发现按下后松手的一个动作里有时pulse就自加了几次,显示在数码管上的数加了好几下。 4.稳定测试 我们再用P2.3提前设定好会产生多少个脉冲,然后观察数码管显示的是不是我们设定好的脉冲数。这里我们让P2.3跳变电平15次,看看数码管显示的数值是多少。 #include #include u16 pulse=0; void main() { u8 i=0; IT1 = 1; //下降沿触发模式 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 KEY_Init();//初始化按键功能模块 while(i<15)//让P2.3产生脉冲数,然后结束循环 { KEY4=!KEY4; i++; delay_ms(1); //让电平保持的时间多一点 } ShowNumber(pulse);//更新数码管缓存区内容 while(1) { SEG_Scan(); //显示脉冲数 } } //请把P3.3和P2.3用杜邦线连接起来 void EXTI1_IRQHandler() interrupt 2 { pulse++; } 数码管显示的是8,画出状态图一目了然! 拔了杜邦线再复位开发板就是显示0了。
上一篇:51单片机-中断的实验现象
下一篇:51单片机-定时器概念
史海拾趣
|
请教高手,芯片半成品(wafer),在工控机上安装采集卡,测试其频率(30k左右)、占空比(标准方波),怎样测量?哪款采集卡比较合适?希望能和大侠们交流请教一下。 俺的qq号:308676575 。 &nbs ...… 查看全部问答> |
|
Intel82551网卡大包(65535 bytes)不通问题 小弟正在做MPC8377的板子,板载一片Intel82551 PCI网卡,还有Intel82574 pci-e网卡,vxworks的版本是6.6,之前我是使用命令行编译的,这两个网卡的大包(65535字节)都不通.后来,使用workbench编译,通过比较prjParams.h文件,添加了大包的相关组件后, 82574 ...… 查看全部问答> |
|
在wince 4.2 的引用过程中碰到如下几个问题,由于版本过老,很难找到资料,望高手指点 1.原IE是4.0,需要升级到6.0,网上很难找到IE升级包,有没有什么方法可以解决呢?主要是用在远程监控的IE访问,要安装插件(诚风的远程监控 硬盘录像机),有 ...… 查看全部问答> |
|
目前在wince6 R3环境下开发Silverlight程序,计划采用DirectDraw作为2D加速方式。处理器为pxa310,是支持DirectDraw的2D硬件加速的。 按照msdn上的介绍配置好环境变量,SYSGEN_XAML_RUNTIME,BSP_XRPLUGIN_DDRAW and BSP_XRPLUGIN_OPENGL。在系统b ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:26 编辑 我做的速度+电流双闭环PID调节程序,速度外环,电流内环,在双环调节的时候出现这样的问题: 1: 调节反馈速度值,在达到临界点的时候(临界点就是误差值在0点附近)这时整个PID的输出不稳定, 观察此时输出 ...… 查看全部问答> |
|
真正使用430是这次换工作以后,新项目是用430单片机来实现的,主要是430的微功耗功能,确实让我感受到这款单片机的强大。以前做项目采用c8051单片机,功能在10mA左右,认为这种功耗已经很小了,接触430后才感觉到TI对MCU的设计的水平,能够很好的把 ...… 查看全部问答> |
|
quartus中哪些模块占用on-chip memory,怎么看哪些ip占了多少M4K模块,谢谢。 10485760是10Mbit这是on-chip memory的大小? EP2C35的M4K是105个RAM,也就是483840bit,这和上面的有什么关系? function ...… 查看全部问答> |
|
DigitalSignalProcessor是对模拟信号变成数字信号的高速处理。其处理器处理速度为普通的5-10倍。在数字电话,调制解调器技术(mode),个人计算机(显卡),消费电子。现在在DSP市场占有率的老大是TI(45%),老二是朗讯(20%),老三是ADI和摩托罗 ...… 查看全部问答> |




