蓝桥杯stc15f2k60s2芯片编程(按键控制)
(1)按键控制LED灯的亮灭
#include <stc15f2k60s2.h>
#include <intrins.h>
sbit BUZZ=P0^6;
sbit RELAY=P0^4;
sbit K2=P3^0;
sbit K1=P3^1;
void Delay10ms();
void chushihua();
void main(void)
{
chushihua();
while(1)
{
if(K1==0)
{
Delay10ms();
if(K1==0)
{
P0=0xfe;
P2=(P2&0X1F)|0X80; //´ò¿ªÊ¹ÄÜ¶Ë 0001 1111 1000 0000
P2=P2&0X1F;//¹Ø±ÕËø´æÆ÷
}
while(!K1);
}
if(K2==0)
{
Delay10ms();
if(K2==0)
{
P0=0xFF;
P2=(P2&0X1F)|0X80; //´ò¿ªÊ¹ÄÜ¶Ë 0001 1111 1000 0000
P2=P2&0X1F;//¹Ø±ÕËø´æÆ÷
}
while(!K2);
}
}
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}
void chushihua()
{
P0=0Xfe;//³õʼ»¯ledµÆ ²¢µãÁÁL1 1111 1110
P2=(P2&0X1F)|0X80; //´ò¿ªÊ¹ÄÜ¶Ë 0001 1111 1000 0000
P2=P2&0X1F;//¹Ø±ÕËø´æÆ÷
RELAY=0;//¹Ø±Õ¼ÌµçÆ÷
BUZZ=0; //¹Ø±Õ·äÃùÆ÷
P2=(P2&0X1F)|0XA0; // 1010 0000
P2=0X1F; //
P0=0XFF;//ÏûÓ° ¹Ø±ÕÊýÂë¹Ü
P2=(P2&0X1F)|0XE0; //´ò¿ª¶ÎÑ¡
P2&=0X1F; //¹Ø±Õ¶ÎÑ¡
}
(2)按键控制数码管显示数字加一
#include <stc15f2k60s2.h>
#include <intrins.h>
unsigned char shuzu[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF};
unsigned char i,j,miao;
sbit K1=P3^0;
void anjian();
void Delay10ms(); //@11.0592MHz
void main()
{
P2=0XC0;P0=0X01;P2=0XFF;P0=0XFF; //????????,???
while(1){
anjian();
P2=(P2&0X1F)|0XC0; //´ò¿ªÎ»Ñ¡
P0=0x80; //0000 0001
P2&=0X1F;
P2=(P2&0X1F)|0XE0; //´ò¿ª¶ÎÑ¡
P0=shuzu[miao%10];
P2&=0X1F;
j=1000;while(j--);
P2=(P2&0X1F)|0Xc0; //´ò¿ªÎ»Ñ¡
P0=0x40; //0000 0001
P2&=0X1F;
P2=(P2&0X1F)|0XE0;
P0=shuzu[miao/10];
P2&=0X1F;
j=1000;while(j--);
}
}
void anjian()
{
if(K1==0)
{
Delay10ms();
if(K1==0)
{
miao++;
}
while(!K1);
}
}
void Delay10ms() //@11.0592MHz
{
unsigned char i, j;
i = 108;
j = 145;
do
{
while (--j);
} while (--i);
}