焊接资讯

您现在的位置是:首页 > led灯 > 正文

led灯

单片机led灯不亮灭程序灭一秒亮一秒(单片机控制led灯亮灭的程序)

工品易达2022-10-27led灯13

求实现51单片机按下按钮LED灯亮1秒后熄灭?

外部中断的优先级是高于定时器中断的。首先是触发外部中断嘛,在外部中断程序里面开定时器中断,定时器设置为50ms,这个直接装初值大概46000(晶振12m)的样子,具体你自己算一下。然后在调用定时器中断程序里面肯定是要有个标志位的,这个标志位会累加n个定时器时间直到8s,然后在这个定时器中断程序里面不断检测3.2口电平就行了,如果变回高电平就把灯在点亮(比如在这句直接将flag赋到设定的技术最大值)就行了。最好用下降沿触发,低电平触发容易出问题总感觉,可能你程序逻辑是完全正确的,但是仿真或者实物的时候会出问题。

led灯亮一秒灭一秒,循环十次c语言,

你得设定是什么环境,如果是单片机ARM板之类的底层环境,可以采用延时函数或者中断设定;如果是windows编程,可以调用系统的Timer;下面就提供一个最简单的延时方案:

for (i=0; i20; i++){ //一亮一灭算一个周期,所以循环20次

PORT_LED = ~PORT_LED;

delay_ms(1000);

}

void delay_ms(uint16 n){

while (n--){

//.....

}

}

如图 我想用单片机汇编语言来编写中断程序,要求是 LED灯初始化是灭的,当按下按钮灯亮一秒灭一秒,

TCOUNT EQU 30H

ORG 0000H

LJMP START

ORG 000BH

LJMP T0INT

ORG 0050H

START:

CLR EA

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

MOV 30H,#0

SETB ET0

CLR 00H

SETB P1.0

LOOP:

JNB 00H,NOLED

SETB TR0

SJMP KEY

NOLED:

CLR TR0

SETB P1.0 ;灯灭

KEY:

MOV A,#01H

MOV P2,A

LCALL DELAY

MOV A,P2

ANL A,#10H

JNB ACC.4,LOOP ;有键按下

CPL 00H

SJMP LOOP

DELAY:

MOV R0,#250

DJNZ R0,$

RET

T0INT:

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000)

INC TCOUNT

MOV A,TCOUNT

CJNE A,#20,T0INTE ;1秒亮灭

CPL P1.0

MOV TCOUNT,#0

T0INTE:

RETI

END

如图 我想用单片机汇编语言编写中断程序,要求是 开始等不亮,当按钮按下,LED等亮一秒灭一秒,这样循环。

思路:

1,程序开始准备

2,标志位为0?是则等待中断,为1则执行下一步

3,亮灯,延时一秒,灭灯,延时一秒

4,跳到第二步步

中断程序:

1,标志位取反

2,reti

还有就是你按键接错了,你那样是查询方法,不是中断。

单片机led灯不亮灭程序灭一秒亮一秒的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机控制led灯亮灭的程序、单片机led灯不亮灭程序灭一秒亮一秒的信息别忘了在本站进行查找喔。微信号:ymsc_2016

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~