急求51单片机c语言简易程序:二个输入口,分别控制三个输出口

急求51单片机c语言简易程序:二个输入口,分别控制三个输出口,第一次输出低电平,第二次输出高电平。要求每一个输入口为低电平触发一下的时候,相应输出口一直送出高电平,直到二次输入口再有触发信号时,相应输出口就一直送出高电平,如些循环。。。谢谢
更正:
急求51单片机c语言简易程序:二个输入口,分别控制二个输出口,第一次输出低电平,第二次输出高电平。要求每一个输入口为低电平触发一下的时候,相应输出口一直送出高电平,直到二次输入口再有触发信号时,相应输出口就一直送出高电平,如些循环。。。谢谢

第1个回答  2012-12-15
#include<reg51.h>
sbit Key1=P3^2;//输入1,不能更改
sbit Key2=P3^3;//输入2,不能更改,因为 51外部中断就这两个IO口是
sbit Out1=P0^0;//输出1
sbit Out2=P0^1;//输出2
void Delay(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++)
;
}

void INT_Init()
{
EX0 = 1; //开外部中断0
IT0 = 0; //低电平触发,这句不写也可以
EX1 = 1; //开外部中断1
IT1 = 0; //低电平触发,这句不写也可以
EA = 1; //开总中断
}
void Key1_OnPush()interrupt 0
{
Delay(2);
if(KEY1 == 0)
{
Out1=!Out1;
}
while(Key1==0);
}
void Key2_OnPush()interrupt 2
{
Delay(2);
if(Key2==0)
{
Out2=!Out2;
}
while(Key2==0);
}

void main()
{
INT_Init();

while(1);
}
第2个回答  2012-12-14
P0_0,P0_1输入(如有必要,要加上拉电阻),P2_0,P2_1输出。不考虑按键去抖。程序入下:
unsigned char bufin,last,tmp;
last = P0 & 0x03;
while(1)
{
bufin = P0 & 0x03;
tmp = (~bufin) & last;
last = bufin;
P2^ = tmp;
//去抖动的话,在这加点延时10ms即可
}本回答被网友采纳