// P1.0
接开?/p>
K1
?/p>
P1.1
接开?/p>
K2
?/p>
P2.0
?/p>
LED1,P2.1
?/p>
LED2
,实
现:
// 1. K1
合上?/p>
LED1
?/p>
0.5
秒周期闪烁,
LED2
?/p>
1
秒闪烁;
K
断开
时,两个都按
0.1
秒闪?/p>
// 2. K2
合上时执?/p>
1
动作?/p>
K2
断开?/p>
LED
常亮
//
硬件?/p>
K
合上读到低电平(
0
),输出低电?/p>
LED
?/p>
#include
<reg51.h>
sbit K1=P1^0;sbit K2=P1^1; sbit LED1=P2^0;sbit LED2=P2^1;
void
main()
{
TMOD=0X01; TH0=236; TL0=120;
// 5ms (65536-5000)/256;(65536-5000)%256
TR0=1;ET0=1;EA=1;
while
(1);
}
void
T0_ISR() interrupt 1
// 0.005
秒执行一?/p>
{
static
char
c1=0,c2=0;
//
两个
LED
闪烁周期计数?/p>
char
m1,m2;
//
电平改变的时间(
5ms
的倍数?/p>
if
(K1==0) {m1=50;m2=100;}
else
{m1=10;m2=10;}
if
(++c1==m1) {
c1=0;
if
(K2==0) LED1=!LED1;
else
LED1=0;
}
if
(++c2==m2) {
c2=0;
if
(K2==0) LED2=!LED2;
else
LED2=0;
}
TH0=236; TL0=120;
//
重装初?/p>
}