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

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

/程序: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++);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-11
假设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本回答被提问者采纳
第2个回答  2011-12-12
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

第3个回答  2019-05-13
#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;
}
}
相似回答