满意答案
vs2026
2013.08.31
采纳率:58%等级:12
已帮助:13269人
以下是C语言:
#include
sbit KEY=P1^0;
sbit LED=P1^1;
void delay();
void main()
{
while(1) //不断循环
{
if(KEY==0) 判断键盘是否按下
{
delay(); ///调用延迟函数消抖
if(KEY==0) //再次读键盘,以判断刚才判断到的是否为抖动
LED=~LED; //取反P1.1电平状态,即改变发光管状态
}
}
}
void delay()
{
unsigned int i=50000;
while(i--); ///不断循环自减,直到i变成0
}
以下是汇编:
ORG 0000H
AJMP MAIN ;跳转到主程序
ORG 0100H
MAIN:JB P1.0,MAIN ;判断P1.0是否被按下,如果没有,再判断,是否向下执行
CALL DELAY ;调用延迟子程序,延迟一段时间,用于键盘抖动
JB P1.0,MAIN ;再次判断按钮状态,判断是否抖动,否则向下执行
CPL P1.1 ;取反P1.1.即改变发光二极管的状态
JNB P0.0,$ ;等待按钮释放(等待)P1.0电平变高)
AJMP MAIN
DELAY:
MOV R0,#200
LOOP: MOV R1,#200
DJNZ R1,$
DJNZ R0,LOOP
RET
END
这些都是刚写好的,希望能让你满意,有问题可以hi我!
10分享举报