楼主你好:怎样用程序加入准双向io口呢
#include <reg52.h>
//定义一下,方便使用
#define uchar unsigned char
#define uint unsigned int
//sbit key1=P2^4; //按键1定义
//sbit key2=P2^5; //按键2定义
//sbit key3=P2^6; //按键3定义
//sbit key4=P2^7; //按键4定义
sbit led1=P3^0; //led1端口
sbit led2=P3^1; //led2端口
sbit led3=P3^2; //led3端口
sbit led4=P3^3; //led4端口
void keyscan() //按键扫描程序
{
static bit sign=0; //按键有效标志
static uint count=0; //消抖计数变量
uchar num=0; //临时变量
if((P2&0xf0)!=0xf0) //检测按键有效
{
count++; //消抖计数
if(count>=500) //100~1000,根据主循环周期调整约10~20ms
{
count=500;
if(sign==0) //测试按键有效标志0
{
sign=1; //按键有效标志置1
num=(P2&0xf0); //保存P2高4位值xxxx 0000,x为0或1
switch(num)
{
case 0xe0: led1=~led1; break;
case 0xd0: led2=~led2; break;
case 0xb0: led3=~led3; break;
case 0x70: led4=~led4; break;
default: break;
}
}
}
}
else //键抬起
{
sign=0; //按键有效标志清0
count=0; //消抖计数清0
}
}
void main()
{
P3=(P3&0xf0); //初始化P3低4位
while(1) //程序循环执行
{
keyscan(); //按键扫描,子函数
}
} |