标题:
单片机程序问题请大神指点,根据串口传输过来的数字进行低电平输出
[打印本页]
作者:
a10861771
时间:
2020-5-15 21:39
标题:
单片机程序问题请大神指点,根据串口传输过来的数字进行低电平输出
这个程序是根据串口传输过来的数字进行低电平输出,前几次相同数据都很正常的输出低电平,但是突然就会一直输出低电平不恢复成高电平,直到再次传输相同数据才会恢复。比如一直传输1时,p2.0根据频率输出低电平再恢复高电平,到某一次传输1时,p2.0会一直处于低电平,停止传输也不恢复高电平。求大佬看看哪里需要修改
sbit Relay1=P2^0;
sbit Relay2=P2^2;
sbit Relay3=P2^4;//引脚定义
void main()
{
SCON=0x50; //串口定义
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
RI=0;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
Relay1=Relay2=Relay3=1;
while(1)
{
if(RI) /
{
RI=0;
switch(SBUF) //根据接收的字符
{
case '1': Relay1=~Relay1;Relay2=1;Relay3=1;break; //继电器1运动
case '2': Relay2=~Relay2;Relay1=1;Relay3=1;break; /继电器2运动
case '3': Relay3=~Relay3;Relay1=1;Relay2=1;break; //继电器3运动
}
}
}
}
复制代码
作者:
ahust
时间:
2020-5-15 21:39
你可以把 设置高电平放在while1里面,然后把翻转电平操作放在中断里面,这样一旦退出中断,就能保证引脚重新变为高电平。
作者:
a10861771
时间:
2020-5-16 16:07
本帖最后由 a10861771 于 2020-5-17 09:56 编辑
解决了解决了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1