51单片机控制问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 10:37:10
请教用51单片机控制5个继电器,要求继电器有不同的闭合状态,输入端是用5个霍尔开关,控制单片机的5个脚,组合8种状态,c语言程序怎样实现。
如:2个霍尔控制2个单片机的脚为低电平,输出端的2个继电器闭合。
请教,谢谢!!
一个控制端用if语句,可判断。2个控制端用什么方法?5个输入控制,7种状态。如:一种状态单片机P0口为输入端P0_1为低电平,输出端P2_1为低电平,其余为高电平。又一种状态是P0_1、P0_2为低电平,输出端P2_2为低电平。。。。输入端共7种状态。程序怎样写?只请教输入端2个脚同时为低电平时怎样写程序,用什么语句?
不盛感激!!

主控部分已解决了,非常感谢“物理狂人”,受益匪浅。
还有个小问题:输出端要有控制,用P3_6脚作为参考,在P2_1为低电平时P3_6为高电平,这个高电平一直保持,在其他输入状态变化时,输出端参考这个高电平,是高电平就有输出,是低电平就无输出。断电后,再上电这个高电平就为低电平,输出端无输出,只有输入端P2_1为低电平时,P3_6才变为高电平,输出才有。除P2_1之外,其他输入端都不能使P3_6变为高电平,这样在其他输入状态下,断电、再上电输出也没有。请教这段程序怎么写。这里先谢谢了!!
用那个P口开始提问题的时候是随意比喻的,意思是一样的,在实际用的时候,是P2口作为输入,P0口作为输出,P1口作为发光管指示。发光管的问题已解决,请指教上边怎样控制输出的问题,谢谢!!

main()
{
while(1)
{
switch(P_0)
{
case 0xfd:P_2=0xfd;break;
case 0xf9:P_2=0xfb;break;
… //七种情况一一列出
default:break;
}
}
}

P_0不是常量,它对应的是P0口寄存器的值,还有你前面不是说P0是输入端怎么变成P2了?

初始化:P2=0Xff;
if(P0_1==0)P2_1=0;
if(P0_1==0&&P0_2==0)P2_2=0;以此类推。