⑴ 如何用单片机普通I/0检测电平跳变
while(PinStD)//检测
低电平
{;}ShortDelay(5);//模拟
上升沿
时间
while
(!PinStD)//检测
高电平
{;}其中PinStD在
头文件
中以定义为单片机的某一I/O口,该程序用来检验I/O口上的正跳变,在
仿真软件
中取得了很好的效果。
⑵ 检测单片机多个引脚的跳变情况!
这样子哈,我给你举个例子:
你用P1.1、P1.2、P1.3(K1、K2、K3)这三个脚做为按键输入,用P3.3做为按键检测输入。
硬件连接:K1、K2、K3全部通过一只1K电阻接到P3.3。
初始化时:将K1、K2、K3全部置为低,设置外中断1有效(中断服务程序即是键盘处理程序,同时单片机进入掉电模式的唤醒办法)
键盘处理(中断服务1):进入后先将K1、K2、K3全部置高,然后逐一置低检测中断引脚状态,如,置低K2时,中断引脚P3.3同时也为低,那么就是按下了K2。
这样有个最好的好处就是,单片机执行完毕后立即进入掉电模式(待机模式),在掉电模式下只有复位和外中断可以激活。掉电模式下只有几微安的电流,电池随便几个月没问题。
我有150mA的锂电池做的遥控器,充次电得管2个多月。
⑶ 什么是单片机中的负跳变呀
就是信号由高电平向低电平的跳变.
⑷ 单片机数码管显示同一个数码管上出现数字跳变
for(num=0;num<16;num++)…你有16个数码管呀?
void main()
{
while(1) {
aa = 0x7f;
for(num = 0; num < 8; num++) {
P0 = table[num];
P2 = aa;
delay(50);
aa = _cror_(aa, 1);
}
}
}
⑸ 单片机开机有个跳变信号是什么原因
就是信号由高电平向低电平的跳变。
在单片机中,负跳变指平由高电平变成低电平的过程,也叫下降沿,高脉冲就是正脉冲,给一个上升沿。负跳变指令检测它前面的逻辑状态。
⑹ 51单片机INT1中断电平触发方式和跳变沿触发方式有什么区别
真正的区别在于:
电平触发方式时,中断
标志寄存器
不锁存
中断请求
信号。也就是说,单片机把每个
机器周期
的S5P2采样到的外部
中断源
口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证
外部中断
源口
线的
低电平
维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销(变为
高电平
)了,那么将得不到响应,就如同没发生一样。同样,当CPU在执行不可被中断的指令(如RETI)时,产生的电平触发中断
如果时间
太短,也得不到执行。边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该
中断服务程序
时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
选择电平触发还是边沿触发方式应从系统使用外部中断的目的上去考虑,而不是如许多资料上说的根据中断源信号的特性来取舍。
⑺ 51单片机端口跳变如何检测呢
如何写程序检测出0010到0001的跳变呢?
--循环输入。
每当输入的四位由0010变为0001时,单片机输出的四位就恒定给出一组数,如0010;
其他任意输入情况,输出端都输出0000。
--上次检测是2,现在检测是1,那就输出2;
--否则,都输出0。
如果跳变不是一组而是遇到多组该如何呢?
(如输入由0010变为0001,输出0010;输入由0100变为0010,输出1000)
--依此类推。