如何给单片机IO口输入高电平

我的想法是,单片机检测到外部有一个高电平输入时,就输出一些端口控制外围继电器,定义不同的脚位来检测外部输入的高电平,还有就是只需要在有这些外部高电平输入时,才做相应的动作(相应的端口输出),否则就一直检测这些输入点口。

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit countsingle=P1^0; //定义计数信号输入
sbit relay1=P1^1; //定义继电器1位置
sbit relay2=P1^2; //定义继电器2位置
sbit relay3=P1^3; //定义继电器3位置
sbit relay4=P1^4; //定义继电器4位置

sbit passsingle=P1^5; //定义pass信号输入
sbit testsingle=P1^6; //定义再次测试信号

/******************************************************************/
/* 延时函数 */
/******************************************************************/
void delay(unsigned int cnt)
{
while(--cnt);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
while(1)
{
if(countsingle=1) //当计数输入为高电平时
{
relay1=1; //产生信号让继电器1吸合
relay3=1; //产生信号让继电器3吸合
relay4=1; //产生信号让继电器4吸合
delay(5000);
}

{
if(passsingle=1) //High Voltage pass信号为高电平时
{
relay2=1; //产生信号让继电器2吸合
relay3=0; //产生信号让继电器3释放
relay4=0; //产生信号让继电器4释放
delay(5000);
testsingle=1; //产生信号让外部继电器导通再次给出测试信号
}
}

}
}
比如说以上的程序: 先定义了不同的脚位,然后是在检测到countsingle脚位输入为高电平是,做下面的动作。
还有就是我在外部输入高电平时,就直接用的+5V电源端去触发,为什么不行呢单片机根本没反应?要怎样才能输入高电平呢?
谢谢 ,
我用的是AT89S52单片机

if(countsingle=1) //错
if(countsingle==1) //应该是“双等号”。
后面还有一个错的地方。
----------------------------------
试试下面这个:
main()
{
while(1) {
if(countsingle == 1) { //当计数输入为高电平时
relay1 = 1; //产生信号让继电器1吸合
relay3 = 1; //产生信号让继电器3吸合
relay4 = 1; //产生信号让继电器4吸合
delay(5000);
}
if(passsingle == 1) { //High Voltage pass信号为高电平时
relay2 = 1; //产生信号让继电器2吸合
relay3 = 0; //产生信号让继电器3释放
relay4 = 0; //产生信号让继电器4释放
delay(5000);
testsingle = 1; //产生信号让外部继电器导通再次给出测试信号
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-14
方法:
1.p1口做输入输出口前要先写值,1为输入,0为输出,且要接上拉电阻,不如换到其他口。
2.if(countsingle=1)改为if(countsingle==1) 。
3.最好先读取端口值再判断。
第2个回答  2010-06-19
4点建议
1.p1口做输入输出口前要先写值,1为输入,0为输出,且要接上拉电阻,不如换到其他口
2.if(countsingle=1)改为if(countsingle==1)
3.最好先读取端口值再判断
4. 一楼说的用中断也不错本回答被提问者采纳
第3个回答  2010-06-12
你直接荣 for 就可以了 别问我具体的很久不写了

例如检测P1^1 高电平 首先定义 P1^1 = 0 for(P1^1=1;其他的动作=1)这样循环就可以了
第4个回答  2010-06-12
你直接5V进去难道不怕烧了端口啊,多大的电流啊!
你要是用这种查询电平方式就在端口上接个电阻上拉5V好了,控制电流在你的单片机管教可承受的范围内
相似回答