求一个简单的51单片机程序 (一个按键控制两个口输出)

2024-11-19 09:24:06
推荐回答(2个)
回答1:

确实是初学呀,P0,P1,P2都有8个IO口,所以暂且给你都安排在第一个口吧。
#include
#define uchar unsigned char
sbit key=P0^0;
sbit pluse1=P1^0;
sbit pluse2=P2^0;
void delay(int ms)
{
uchar i ;
while(ms--)for(i=0;i<120;i++);
}
main()
{
uchar num;
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
num++;
num%=2;
if(num==1)
{
pluse1=0;
delay(500);
pluse1=1;
}
else
{
pluse2=0;
delay(500);
pluse2=1;
}
}
}
}
}

回答2:

#include
typedef unsigned char uint8;
sbit KEY = P0^0;
void delay1ms(uint8 m) //?? 0us
{
unsigned char a,b ,c;
for(c = m ; c > 0 ; c-- )
for(b=199;b>0;b--)
for(a=1;a>0;a--);
}
void main()
{
uint8 flag = 0;
while(1)
{
if(!KEY)
{
delay(5);
if(!KEY)
{
flag++;
while(!KEY);
}
}

if(flag != 0)
{
if(flag&0x01)
{
P1 = 0;
delay(250); //×¢Òâ²»ÄÜд500 À¨ºÅÀï×î´ó255
delay(250);
P1 = 0xff;
}
else
{
P2 = 0;
delay(250);
delay(250);
P2 = 0xff;
}
}
}
}
这个程序还是比较简单的,建议还是好好看一看单片机,毕竟弄懂了才好用!