帮忙用汇编语言写个程序,控制两个LED交替闪烁。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮忙用汇编语言写个程序,控制两个LED交替闪烁。相关的知识,希望对你有一定的参考价值。

要求:用单片机控制两个灯闪烁,一个灯快闪两下,接着另一个闪一下,然后就这样重复

假设p1.0,p1.1控制两个LED灯,低亮高灭。
ORG 0000H
LJMP START
ORG 0030H
START:
CLR EA
MOV SP,#60H
SETB P1.0
SETB P1.1
LOOP:
LCALL DELAY30
CLR P1.0
LCALL DELAY30
SETB P1.0
LCALL DELAY30
CLR P1.0
LCALL DELAY30
SETB P1.0
LCALL DELAY30
CLR P1.1
LCALL DELAY30
LCALL DELAY30
SETB P1.1
SJMP LOOP
DELAY30: ;延时30毫秒
MOV R0,#60
DELAY1:
MOV R1,#250
DJNZ R1,$
DJNZ R0,DELAY1
RET
END
参考技术A /程序:ex1_1.c
//功能:控制一个信号灯闪烁程序
#include <reg51.h> //包含头文件REG51.H,定义了MCS-51单片机的特殊功能寄存器
sbit P1_0=P1^0; //定义位名称
void delay(unsigned char i); //延时函数声明
void main() //主函数

while(1)
P1_0=0; //点亮信号灯
delay(10); //调用延时函数,实际变量为10
P1_0=1; //熄灭信号灯
delay(10); //调用延时函数,实际变量为10


//函数名:delay
//函数功能:实现软件延时
//形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次
//返回值:无
void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数

unsigned char j,k; //定义无符号字符型变量j和k
for(k=0;k<i;k++) //双重for循环语句实现软件延时
for(j=0;j<255;j++);
参考技术B #include "reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit ledD1=P2^0;
sbit ledD2=P2^1;
void delay(u16 i)

while(i--);

void main()

while(1)

ledD1=0;
delay(40000);
ledD1=1;
delay(40000);
ledD2=0;
delay(40000);
ledD2=1;

参考技术C KUAI EQU P1.0
MAN EQU P1.1
ORG 0
MAIN:
CLR KUAI
CLR MAN
DISPLAY:
SETB KUAI
ACALL DELAY_KUAI
CLR KUAI
SETB KUAI
ACALL DELAY_KUAI
CLR KUAI
SETB MAN
ACALL DELAY_MAN
AJMP DISPLAY
DELAY_KUAI:
MOV R0, #0
DJNZ R0, $
RET
DELAY_MAN:
ACALL DELAY_KUAI
ACALL DELAY_KUAI
RET
END

参考资料:END

求汇编,八个led交替闪烁,汇编语言汇编语言

求汇编,八个led交替闪烁,汇编语言汇编语言按按下开关s1(开关是那种按下去不会弹回来的),led1.3.5.7和led2.4.6.8交替闪烁,按下s2,led1234和led5678交替闪烁,间隔都是0.5秒,按下s3全灭

求汇编,八个led交替闪烁,汇编语言汇编语言

按下开关s1(开关是那种按下去不会弹回来的),led1.3.5.7和led2.4.6.8交替闪烁,

按下s2,led1234和led5678交替闪烁,间隔都是0.5秒,

按下s3全灭

-------------------

电路与程序,都在下面。

本程序,经过硬件验证,是正确的。

提问者采纳的回答,是错误的。

参考技术A S1 EQU P1.0
S2 EQU P1.1
S3 EQU P1.2
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIHG(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB ET0
SETB EA
LOOP:
JB S1,LOOP1
MOV P0,#55H
SETB TR0
CLR A
SJMP LOOP
LOOP1:
JB S2,LOOP2
MOV P0,#0FH
CLR A
SETB TR0
SJMP LOOP
LOOP2:
JB S3,LOOP
CLR TR0
MOV P0,#0FFH
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIHG(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC A
CJNE A,#10,T0E
MOV A,P0
CPL A
MOV P0,A
CLR A
T0E:
RETI
END追问

可以再加一个s4,8个灯都闪烁吗,1秒

本回答被提问者和网友采纳

以上是关于帮忙用汇编语言写个程序,控制两个LED交替闪烁。的主要内容,如果未能解决你的问题,请参考以下文章

arduino两个led灯交替闪烁

求汇编,八个led交替闪烁,汇编语言汇编语言

编制一个循环闪烁灯的程序,每次其中某个灯闪烁10次后,转到下一个闪烁10次,循环不止(用汇编语言编制)

编制一个循环闪烁灯的程序,每次其中某个灯闪烁10次后,转到下一个闪烁10次,循环不止(用汇编语言编制)

cc2530控制两个LED灯交替闪烁,闪烁周期为0.5左右.其中p1_2连LED1p1-3连2

传感网灯闪烁代码