實(shí)驗(yàn)內(nèi)容:
電路如圖特姐,只有一個(gè)鍵按下有效侈净,軟件延時(shí)疯坤,功能如下肢簿。
按下P1.0鍵—D0D2與D5D7交替點(diǎn)亮靶剑;
按下P1.1鍵—D0D7→D1D6→D2D5→D3D4→D0D7…
按下P1.2鍵—D3D4→D2D5→D1D6→D0D7→D3D4…
按下P1.3鍵—8只LED全滅;
電路圖
實(shí)現(xiàn)思路:封裝函數(shù)
#include "reg51.h"
#define uchar unsigned char
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
sbit k4=P2^3;
void delay(unsigned int ms){
unsigned int x,y;
for(x=0;x<ms;x++)
for(y=0;y<110;y++);
}
void k1yes()
{
P2=0xfa;
delay05s();
P2=0x5f;
delay05s();
}
void k2yes()
{
unsigned char i,count1,count2;
count1=0x10;
count2=0x08;
for(i=0;i<4;i++)
{
P2=~(count1+count2);
delay02s();
count1=count1<<1;
count2=count2>>1;
}
}
//測(cè)試
//void k3yes()
//{
//unsigned char i,count;
//count=0x01;
//for(i=0;i<8;i++)
//{
//P2=~count;
//delay02s();
//count=count<<1;
//}
//}
void k3yes()
{
unsigned char i,count1,count2;
count1=0x01;
count2=0x80;
for(i=0;i<4;i++)
{
P2=~(count1+count2);
delay02s();
count1=count1<<1;
count2=count2>>1;
}
}
void k4yes()
{
P2=0xff;
}
void main(void)
{
while(1)
{
if(k1==0&&k2!=0&&k3!=0&&k4!=0) k1yes();
if(k2==0&&k1!=0&&k3!=0&&k4!=0) k2yes();
if(k3==0&&k1!=0&&k2!=0&&k4!=0) k3yes();
if(k4==0&&k2!=0&&k3!=0&&k1!=0) k4yes();
P2=0xff;
}
}