帮忙用汇编语言写个程序,控制两个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.0S2 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交替闪烁。的主要内容,如果未能解决你的问题,请参考以下文章
编制一个循环闪烁灯的程序,每次其中某个灯闪烁10次后,转到下一个闪烁10次,循环不止(用汇编语言编制)
编制一个循环闪烁灯的程序,每次其中某个灯闪烁10次后,转到下一个闪烁10次,循环不止(用汇编语言编制)