樓主你好:怎樣用程序加入準雙向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(); //按鍵掃描,子函數
}
} |