8个led灯依次点亮程序汇编语言(8个led灯循环点亮程序汇编语言)
汇编语言编一个八个灯,由左至右循环闪烁的程序~~~谢谢
首先,是单灯如何点亮的问题,无非就是某个gpio口输出高电平或者低电平(由外部电路决定)使灯亮灭,假设输出高电平为亮,输出低电平为灭。
其次,1hz闪烁,即代表定时1s开、关灯。所以要用到定时器。
代码如下:
#include
"stdio.h"
#define
led_on
p1.1
=
1;
#define
led_off
p1.1
=
0;
bit
flag_1s;
bit
flag_cnt;
void
main(void)
{
sys_init();
while(1)
{
if(flag_1s
==
1)
{
flag_1s
=
0;
if(flag_cnt
^=
1)
led_on;
else
led_off;
}
}
}
sys_init()
{
//
初始化mcu的io口
//
初始化定时器
}
void
timer_isr
(void)
interrupt
1
{
//
定时器中断处理函数
1s
进入一次
flag_1s
=
1;
}
[img]怎么用汇编语言编写八个灯依次点亮后不能熄灭,然后按倒顺序依次熄灭
假设P1口接8个LED灯,灯控制部分程序如下:
LEDCTL:
MOV P1,#0FEH ;点亮第一个灯
LCALL DELAY
MOV R0,#7
LEDLP1:
CLR C
MOV A,P1
RLC A
MOV P1,A
LCALL DELAY
DJNZ R0,LEDLP1
MOV R0,#8
LEDLP2:
SETB C
MOV A,P1
RRC A
MOV P1,A
LCALL DELAY
DJNZ R0,LEDLP2
LJMP LEDCTL
DELAY:
MOV R1,#100
DELAY1:
MOV R2,#200
DJNZ R2,$
DJNZ R1,DELAY1
RET
8路流水灯汇编语言程序的写法
汇编语言程序如下:
;假设1:D1~D8八个彩灯接在P1口,输出低电平发光
;假设2:系统晶振为12MHz
;假设3:N = 5
;程序如下:
ORG 0000H
MOV R3, #5 ;N=5
LOOP0:
MOV A, #0FFH
MOV P1, #0FFH ;开始时全灭
;-------------------------------逐个点亮
MOV R2, #8
LOOP1: CLR C
RLC A
MOV P1, A
CALL DL500MS
DJNZ R2, LOOP1
;-------------------------------逐个熄灭
MOV R2, #8
LOOP2: SETB C
RLC A
MOV P1, A
CALL DL500MS
DJNZ R2, LOOP2
;-------------------------------全亮、全灭交替
MOV R2, #4
LOOP3: MOV P1, #0 ;全亮
CALL DL500MS
CALL DL500MS ;共1s
MOV P1, #255 ;全灭
CALL DL500MS ;0.5s
DJNZ R2, LOOP3
;-------------------------------
DJNZ R3, LOOP0
MOV P1, #01001001B ;5、显示为0100 1001
CALL DL500MS
CALL DL500MS ;共1s
SJMP 0000H ;重新开始N遍
;-------------------------------延时子程序
DL500MS:
MOV R5, #9 ;1T
DL1: MOV R6, #128 ;1T
DL2: MOV R7, #215 ;1T
NOP ;1T
DL3: DJNZ R7, DL3 ;2T 2 * 215 = 430 T
DJNZ R6, DL2 ;2T [1+1+430+2] * 128 = 55552 T
DJNZ R5, DL1 ;2T [1+55552+2] * 9 = 499995 T
RET ;2T 1 + 499995 + 2 = 499998 T
;-------------------------------------
END
扩展资料:
实现8路流水灯的原理:
下图为主控芯片和流水灯模块的原理图。
流水灯模块接在单片机的P1口,由原理图可以知道,在P1口给一个低电平即可点亮LED灯。相反,如果要LED灯熄灭,就要把P1口的电平变为高电平即可。
要实现流水灯功能,只要将LED1~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:
P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高。
P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。
各位单片机达人帮个忙 用汇编语言做一个 发光二极管循环点亮的程序 要求 使八只发光二极管做循环点亮一次
发光二极管循环点亮
八只发光二极管左循环点亮一次、然后右循环点亮一次。
循环。
仿真试验成功。
用汇编语言编流水灯,有8个LED灯,LED1~LED8 灯按顺序点亮,每个等亮一秒转到下个灯,一直循环亮
这个流水灯是很普通的一种花样,假设LED接P1口,程序如下:
ORG 0000H
LJMP MAIN
0RG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000) ;50毫秒定时
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
MOV A,#0FEH
MOV P1,A
MOV R2,#20
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;1秒未到直接退出
MOV R2,#20
RL A
MOV P1,A ;1秒一变的花样流水灯。
T0E:
RETI
END
8个led灯依次点亮程序汇编语言的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于8个led灯循环点亮程序汇编语言、8个led灯依次点亮程序汇编语言的信息别忘了在本站进行查找喔。微信号:ymsc_2016
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~