单片机led灯不亮灭程序灭一秒亮一秒(单片机控制led灯亮灭的程序)
求实现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
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~