编程实现用LED指示单个按钮的状态
步骤:
(1)编程实现:按下按钮S1 发光二极管发光,放开按钮发光二极管熄灭;
(2)保存到“单片机练习三”文件夹中,命名为“LED指示按钮状态”;
(3)用仿真软件设计原理图,并进行仿真;
(4)把仿真结果保存到“单片机练习三”文件夹中,命名为“LED指示按钮状态”。
参考程序一:
ORG 0000H
START: JB P1.0, LOOP ;P1.0 口为低电平时,执行下一条指令,即执行CLR P0.0
CLR P0.0 ;P1.0 口为高电平时,跳转到LOOP 开头的指令,即执行
SETB P0.0
LJMP START
LOOP: SETB P0.0 ;P0.0 口输出高电平,即二极管熄灭
LJMP START
END
程序参考二:
/***********************************************************************************************************************************************
按一下灯亮,按一下灯灭
***********************************************************************************************************************************************/
#include<reg52.h>
sbit S1=P1^0; //将S1位定义为P1^0,检测独立按键
sbit led0=P0^0; //将led0定义为P0.0口的LED
/***********************************************************************************************************************************************
延时函数
***********************************************************************************************************************************************/
void delay(void)
{
unsigned int i;
for(i=5000;i>0;i–)
;
}
/***********************************************************************************************************************************************
主函数
***********************************************************************************************************************************************/
void main(void)
{
while(1)
{
if(S1==0) //判断是否有键按下
{
delay(); //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键
if(F0==0) //用F0标志位判断键按下是否已经处理,因刚学C语言没多久,
//不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用
{
F0=1; //F0置1,表示这次按键按下已处理
led0=~led0; //将LED亮灭状态取反
}
}
else //S1=1说明按键释放
{
F0=0; //F0清零,清按键已处理标志
}
}
}
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!