欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機外部中斷0下降沿觸發(fā)控制鍵盤掃描實驗的項目工程
[打印本頁]
作者:
51黑電子會員
時間:
2020-3-8 16:39
標題:
單片機外部中斷0下降沿觸發(fā)控制鍵盤掃描實驗的項目工程
本帖最后由 51黑電子會員 于 2020-3-8 16:43 編輯
/***外部中斷0掃描鍵盤,按下S1鍵時,P2口的8位LED正向流水點亮;按下S2鍵時,P2口的
8位LED反向流水點亮;按下S3鍵時,P2口的8位LED熄滅;按下S4鍵時,P2口的8位LED閃爍。***/
#include<reg52.h>//包含51單片機寄存器定義的頭文件
#define uchar unsigned char
#define uint int
sbit S1=P1^4;//將S1位定義為P1.4引腳
sbit S2=P1^5;//將S2位定義為P1.5引腳
sbit S3=P1^6;//將S3位定義為P1.6引腳
sbit S4=P1^7;//將S4位定義為P1.7引腳
uchar keyvalue;//儲存按鍵值
uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
/*************************************************
函數(shù)功能:流水燈延時
**************************************************/
void led_delay(void)
{
uchar i,j;
for(i=0;i<200;i++)
for(j=0;j<200;j++);
}
/*************************************************
函數(shù)功能:軟件消抖延時
**************************************************/
void delay20ms(void)
{
uchar i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++);
}
/*************************************************
函數(shù)功能:正向流水點亮LED
**************************************************/
void forward(void)
{
// P2=0xfe; //第一個燈亮
// led_delay();
// P2=0xfd; //第二個燈亮
// led_delay();
// P2=0xfb; //第三個燈亮
// led_delay();
// P2=0xf7; //第四個燈亮
// led_delay();
// P2=0xef; //第五個燈亮
// led_delay();
// P2=0xdf; //第六個燈亮
// led_delay();
// P2=0xbf; //第七個燈亮
// led_delay();
// P2=0x7f; //第八個燈亮
// led_delay();
// P2=0xff;
// P2=0xfe; //第一個燈亮
// led_delay();
uint i;
for(i=0;i<8;i++)
{
P2=table[i];
led_delay();
}
}
/*************************************************
函數(shù)功能:反向流水點亮LED
**************************************************/
void backward(void)
{
// P2=0x7f; //第八個燈亮
// led_delay();
// P2=0xbf; //第七個燈亮
// led_delay();
// P2=0xdf; //第六個燈亮
// led_delay();
// P2=0xef; //第五個燈亮
// led_delay();
// P2=0xf7; //第四個燈亮
// led_delay();
// P2=0xfb; //第三個燈亮
// led_delay();
// P2=0xfd; //第二個燈亮
// led_delay();
// P2=0xfe; //第一個燈亮
// led_delay();
uint i;
for(i=7;i>=0;i--)
{
P2=table[i];
led_delay();
}
}
/*************************************************
函數(shù)功能:關(guān)閉所有LED
**************************************************/
void stop(void)
{
P2=0xff;//關(guān)閉8個LED
}
/*************************************************
函數(shù)功能:閃爍點亮LED
**************************************************/
void flash(void)
{
P2=0xff;//關(guān)閉8個LED
led_delay();
P2=0x00;//點亮8個LED
led_delay();
}
/*************************************************
函數(shù)功能:外部中斷0的中斷初始化程序
**************************************************/
void outside0_init()//外部中斷0初始化
{
EA=1; //開總中斷
EX0=1; //打開外部中斷0
IT0=1; //設(shè)置為下降沿觸發(fā)
}
/*************************************************
函數(shù)功能:外部中斷0的中斷服務(wù)子程序
**************************************************/
void outside0_serve(void) interrupt 0
{
P1=0Xf0;
EX0=0;
if((P1&0xf0)!=0xf0)//判斷是否有按鍵按下
{
delay20ms();//延時20ms再去檢測
if((P1&0xf0)!=0xf0)//再判斷是否有按鍵按下
{
if(S1==0)//按鍵S1被按下
keyvalue=1;
if(S2==0)//按鍵S2被按下
keyvalue=2;
if(S3==0)//按鍵S3被按下
keyvalue=3;
if(S4==0)//按鍵S4被按下
keyvalue=4;
}
}
EX0=1;
}
/*************************************************
函數(shù)功能:主函數(shù)
**************************************************/
void main(void)//主函數(shù)
{
outside0_init();//外部中斷0初始化
keyvalue=0;//按鍵值初始化為0
while(1)
{
switch(keyvalue)
{
case 1:
forward();
break;
case 2:
backward();
break;
case 3:
stop();
break;
case 4:
flash();
break;
}
}
}
復(fù)制代碼
3385d2e97596b054633ec0f33b874af.png
(83.28 KB, 下載次數(shù): 37)
下載附件
2020-3-8 16:39 上傳
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1