单片机编程调试

2019-07-15 11:02发布

实现功能:输入端口p1.2 p1.3 p1.4 输出端口 p2.3 p2.4
p1.2高电平时,输出都为高
p1.2 低电平时,p1.3低电平时,p2.3 输出脉冲,p2.4输出低
p1.2 高电平时 , p1.3 高电平时,p2.3 输出脉冲,不过p1.4为低电平时就会p2.3会延时20s(这个20s就是p1.4低电平持续时间),P2.4会在p1.4前三个脉冲输出高,后三个脉冲输出低,并依次循环。
目前问题: 输入端不同情况下的输出已经满足,不过当情况改变之后,输出不会随之变化
#include<reg52.h>
sbit IN1=P1^2;
sbit IN2=P1^3;
sbit IN3=P1^4;
sbit OUT1=P2^3;
sbit OUT2=P2^4;                                               
unsigned char count1=-1;

void delay_ms(unsigned int ms)
{
  unsigned int a,b;
  for(a=ms;a>0;a--)
  for(b=124;b>0;b--);
}

void main()
{
  while(1)
{
  if(IN1==1)
  {
    OUT1=1;
        OUT2=1;
  }
  else
  {
          if(IN2==0)
        {
     OUT2=0;
         while(1)
     {
           OUT1=1;
           delay_ms(1);
           OUT1=0;
           delay_ms(1);
          }
   }
        
           else
   {  
          while(1)
     {
           OUT1=1;
           delay_ms(1);
           OUT1=0;
           delay_ms(1);
           if(IN3==0)
            {
              count1++;               
          if(count1>=3)        
          {
            count1=0;        
            OUT2=~OUT2;        
          }
                  delay_ms(20000);
            }   
      }
     }
  }
}
}
         

0条回答

一周热门 更多>