1. 单片机,什么是下降沿
单片机中的下降沿,并非是一般意义的下降沿。
单片机工作时,它会自动的,每隔一个机器周期,检测一次引脚上的电压。
当,前一次检测,是高电平,后一次,却检测到了低电平,
单片机,就认为是收到了一个《下降沿》。
在单片机中,所说的《下降沿滑滑散》,必须有一个高电平、有一个低电平。
高电平、信氏低电平的持续时间,都必须超过一个机器周期。
否则,单片机就检测不到。
高、低之间的《斜坡》,不要超过一个机器周期,让液否则,单片机就难以检测。
2. 求教关于单片机下降沿捕获的问题
1.一开始让430的内部定时器跑起来,你要做的就是设置定时器的时钟,是否分频,是否中断,计数模式这些。要是用到捕获模式测频率就要选择成捕获模式,还有上升沿或者下降沿捕获这些。2.之后的过程是这样的,当单片机的特殊引脚检测到你设定的触发信号之后就会立刻把当前时刻的TAR(定时器的16位计数器)中的数据记录到CCR中(也是一个16位计数器)。然后就跳进一个中断,如果你要测频的话就记录下此刻的CCR值,挑出中断,随后在下一个触发信号到来时再记录一次CCR的值,两次数据之差就是再除以定时器时钟频率就得到了被测信号一个方波的时间了。3.关于特殊引脚,就是一个复用的脚,可以作为一般IO口,也可以作为捕获信号入口,就像msp430F449中P2.0还可以作为定时器A,CCR2的信号捕获口。4.如果你要测的信号频率太低还需要一个溢出中断,溢出的话就是一个62256,最后溢出了几个就加上几个62256即可。
3. 如何写一个单片机输入上升沿和下降沿的脉冲输出信号的c语言程序
如果是循环中查询的话我一般这样做, 定义一个变量比如keyLastStatus来记录上一次扫描周期的状态
sbit key=P2.0; char keyLastStatus=0;
keyLastStatus=key; //初始化
while (1)
{
if(key==0 && keyLastStatus!=key) Todo(); //上升沿
if(key==1 && keyLastStatus!=key) Todo(); //下降沿
keyLastStatus=key; //记录上一次的状态
}
4. 用51单片机汇编语言检测上升沿和下降沿
这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别io端口上升沿和下降沿中断,且方式不止一种。
sbit
io_inp=p2^1;输入端
bit
old_bit;输入端电平记忆
unsigned
char
low_high;上升下降沿标志,0=无变化,1=上升沿,2、下降沿
void
io_rest(void)
{
if(old_bit=!io_inp)
{
old_bit=io_inp;
if(io_inp=1)
low_high=1;
else
low_high=2;
}
}
void
main(void)
{
old_bit=io_inp=p2^1;
while(1)
{
low_high=0;
io_rest(void);
//在此应用
}
}
(4)单片机下降沿扩展阅读:
直接使用肢猛汇编指令编写单片机程序,对硬件的控制更加直接,可以直接操作物理地址,寄存器,端口等;历坦桥其它更高级的语言(如:C语言)对硬件的控制是依赖于类库来实现的。并且,对于一些对程序大小和运行速度有非常严苛要求的项目而言,都必须使用汇编指令。
C语言只是为了方便编写,与机器打交道的信山其实都是2进制得代码,汇编语言就是这些代码好记忆的名称和规则,只是比C语言难理解些。