单片机编程调试
时间:10-02
整理:3721RD
点击:
实现功能:输入端口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);
}
}
}
}
}
}
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);
}
}
}
}
}
}
while(1)用的不对 而且 时间也不准啊 要用定时器