標題:
STC8單片機一個IO檢測兩個按鍵+LED 源程序
[打印本頁]
作者:
jaco_li
時間:
2022-3-29 15:30
標題:
STC8單片機一個IO檢測兩個按鍵+LED 源程序
#include<all.h>
sbit LED=P1^0;
sbit k=P1^1;
bit led1=0,led2=0;
u8 value=0;
void GPIO_Init()
{
P7M0=0X00;
P7M1=0X00;
P6M0=0X00;
P6M1=0X00;
P5M0=0x00;
P5M1=0X00;
P4M0=0X00;
P4M1=0X00;
P3M0=0X00;
P3M1=0X00;
P2M0=0x00;
P2M1=0X00;
P1M0=0X00;
P1M1=0X00;
P0M0=0X00;
P0M1=0X00;
}
void LEDRY(u8 a)
{
switch(a)
{
case 0:P1M1|=0X01;break;//高阻,全滅
case 1:P1M1&=0XFE;LED=1;break;//上拉,一個亮
case 2:P1M1&=0XFE;LED=0;break;//上拉,一個亮
case 3:P1M1&=0XFE;LED=~LED;break;//上拉模式
}
}
void key_scan(u8 c)
{
switch(c)
{
case 0://k=0;
P1M0=0X00;
P1M1|=0X02;//高阻模式
//if(k==1)//一定是正按鍵按下
break;
case 1:k=1;
P1M0=0X00;
P1M1&=0XFD;//上拉模式
//if(k==0)//一定是負按鍵按下
break;
}
}
void Key_Enter()
{
static bit k12=0,flag=1,flag2=1;
static u16 count=0;
if(flag)//掃描檢測
{
k12=~k12;
key_scan(k12);
}
if((k12&&k==0&&flag2)||(k12==0&&k==1&&flag2))
{
flag=0;//停止掃描
count++;
if(count>=1000)
{
count=0;
flag2=0;//禁止再次進入
if(k)
led2=~led2;
else
led1=~led1;
}
}
if((k12&&k)||(k12==0&&k==0))
{
flag=1;//允許掃描
count=0;
flag2=1;//
}
}
void main()
{
u16 count=0,i=0;
u8 xdata j=0;
GPIO_Init();
UartInit();
while(1)
{
value=0;
if(led1)
value+=2;
if(led2)
value++;
LEDRY(value);
Key_Enter();
count++;
if(count>=500)
{
count=0;
i++;
if(i>=1000)
{
i=0;
j++;
j%=4;
}
}
}
}
復(fù)制代碼
Keil代碼下載:
STC8-一個IO檢測兩個按鍵 LED.rar
(51.87 KB, 下載次數(shù): 16)
2022-3-29 15:35 上傳
點擊文件名下載附件
STC8-一個IO檢測兩個按鍵+LED
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1