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