发布网友 发布时间:2022-04-20 08:16
共5个回答
热心网友 时间:2023-07-28 18:11
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。
#include<reg51.h>
#include<intrins.h>
仿真图效果。
热心网友 时间:2023-07-28 18:12
简单说下程序要点。首先应该对P0和P1端口初始化,P0.0一P0.3初始化为1,LED灯全灭,P1.0一P1.3初始化为1,当外部引脚上对应的按钮按下时,在相应的I/O位会读到0。
循环点亮LED比较简单,只要逐位写人0,延时一段时间,再恢复写1,不断循环就可以实现点亮了。耍全灭时再次写入全1。
检查k1按钮要注意,因手按下时间长短不定,会造程序多次读到按下状态,所以最好以检测按钮释放为一次有效按下。另外机械按钮在按下和释放时有可能会有抖动造成软件误判,在程序中还应加入滤除抖动的判断。
若想要具体代码可网上搜索。追问这个思路我看的明白,一直循环灯亮应该怎么写呢,c程序,
追答可定义一个无符号全局或静态变量 i, 如下所示:
unsigned char i
变量i用于点灯的计数变量。
用定时器做一个0.5秒定时程序(定时器中断例子网上可以搜索),在0.5秒定时程序中写入以下代码:
……
if (i>3) i=0 ;
switch ( i )
{
//---点亮D1,熄灭其它LED ---
case 0 :
P0=0xFE ;
break ;
//--- 点亮D2,熄灭其它LED ---
case 1 :
P0=0xFD ;
break ;
//--- 点亮D3,熄灭其它LED ---
case 2 :
P0=0xFB ;
break ;
//--- 点亮D4,熄灭其它LED ---
case 3 :
P0=0xF7 ;
break ;
}
i++ ;
……
这样采用定时中断方法,实现0.5秒循环点亮LED。利用中断的优点是代码运行效率高。如果要改变亮灯时间,修改定时时间即可。
热心网友 时间:2023-07-28 18:12
看到女朋友生病了好难受,真希望生病的是我
那样我就可以请假不用上班了
热心网友 时间:2023-07-28 18:13
、你看看单片机数据手册你的单片机P0口内部上拉没,一般的单片机P0口都是没上拉的,使用P0口一般都需要外部上拉.要么不使用P0口.2、
热心网友 时间:2023-07-28 18:14
手机丢了先别慌,想想丢在什么地方了,想起来了就去找找看。如果想不起来,那就赶紧去营业厅把你的手机卡挂失,防止别人捡到你的手机为所欲为,如果想起来是被人偷了,那就赶紧报警,尽管可能跟我的经历一样报警没什么鸟用,但不排除你会遇到一个好*。