单片机C语言,用什么语句检测某输入口的电平是否发生过变化呢?

本人菜鸟,只在上学时学过单片机,多年没用过,现在都还给老师了,现在我要写一个单片机C程序,其中一段是检测某个输入口(假设是P1口),当输入口的电平发生过变化时,每变化过一次,某个变量(TIME0)自动加1,求问这2个语句怎么写,我忘了检测输入电平的语句了,,急,谢谢

如果是查询检查,用 if 条件判断语句,由于你不是只检测高低电平,而是要检测变化,所以要定义一个参考变量记忆当前电平状态。

unsigned char oldP1; //原端口状态

if (oldP1!=P1) //不相等没变化
{
oldP1!=P1
TIME0++
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-04-01
您好,就直接用
if (P_^_==0) ……这里的_表示数字,51有四个端口,各有八个,你随便用。
要用MAX232经过电平的转换,将TTL电平转化成232电平,才能与上位机(电脑)通信啊;然后用单片机的串行通信功能写个程序直接发就行了。

SBUF=temp;51里与串口发送的实际只一句,它就把temp传到SBUF然后再一位一位的串行发送了呀,至于它是怎么发的,我们没必要知道啊;那是串行通信的协议;比如吧,
sbit shu=P2^0;
if (shu==0 )
SBUF=0;它就把0这个数据发到上位机。
第2个回答  推荐于2018-04-04
如果 P1是可以位寻址的话,定义另一个位变量来保存P1口的值,通过比较此变量与P1口的值来判断电平有没有变化。
if(pbak!=P1)
{
pbak=P1;
TIME0++;
}
第3个回答  2015-04-01
每变化过一次,某个变量(TIME0)自动加1,
----

如果是按键,按下,加一;松开,再加一。

即,按键一次,加二,是这样吗?
相似回答