梦想农场

流水灯汇编程序 流水灯汇编程序讲解

梦想农场 1

51单片机,用定时器中断,在P1口实现1S移动一次的流水灯,用汇编语言编写的程序

JB K2,LOOP2

//晶振12M

流水灯汇编程序 流水灯汇编程序讲解流水灯汇编程序 流水灯汇编程序讲解


流水灯汇编程序 流水灯汇编程序讲解


DSEG AT 30H

timetemp: DS 1

LED: DS 1

CSEG AT 00H

ORG 0000H

LJMP DJNZ timetemp,NEXTT1START

LJMP Timer0Interrupt

START:

MOV SP,#60H

MOV timetemp,#20

MOV P1,#0FFH;LED低电平点亮

LCALL InitTimer0

MOV LED,#0FEH

MOV P1,LED ;add your code here!

LJMP LOOP

InitTimer0:

MOV TMOD,#01H

MOV TH0,#HIGH(65536-50000)

MOV TL0,#LOW(65536-50000);延时50ms

SETB EA

SETB ET0

SETB TR0

Timer0Interrupt:

PUSH PSW

CLR TR1

MOV A,TL1

ADD A,#LOW(65536-50000)+7

MOV TL1,A

CLR A

ADDC A,#HIGH(65536-50000)

SETB TR1

MOV timetemp,#20

;========================

MOV A,LED

RL A

MOV LED,A;add your code here!

;========================

POP PSW

POP ACC

RETI

CNT EQU 30H

ORG 0000H

SJMP STA

LJMP T0ISR

ORG 0050H

STA:

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H ;50ms

MOV P1,#0FEH

MOV CNT,#20

SETB ET0

SETB TR0

SETB EA

SJMP $

T0ISR:

CLR TR0

MOV TH0,#3CH

MOV TL0,#0B0H ;50ms

SETB TR0

DEC CNT

MOV A,CNT

JNZ T0ISRE

MOV CNT,#20

MOV A,P1

RL A

MOV P1,A

T0ISRE:

RETI

单片机汇编流水灯后段程序怎么理解,L1L2L3 R2R3是什么作用?我不懂,求高手指点

PUSH ACC

L1 L2 L3是程序的标号。R2和R3是寄存器,保存相应的数据。以DJNZ R2,L1,,这一行的是把DB 83H ;"B" 0BHR2里面的内容减去1,判定是不不等于0,如果不等于0就跳转到L1执行。L1的功能是MOV R3,#00H。。。

流水灯先亮4个再亮另外4个全亮 全灭 不断循环汇编程序

DB 0C6H ;"C" 0CH

ORG 0000H

MOV SCANLED,#0

MOV P0, #0FH

MOV P0, #0F0H

MOV P0, #00H

MOV P0, #0FFH

SJMP 0000H

谁帮我解释一下这个汇编语言写的流水灯程序,并帮我画个流程图 ?拜托各位大神

SETB P2.1

ORG 0000H 表示程序从0000H开始 START:MOV R2,#8 将立即数8(10进制,二进制是1000B)放入R2 MOV A,#0FEH 将立即数FEH(16进制,二进制是11111110B)放入A,以上是初始化 S0 :MOV P0,A 将A里面的数输出到P0端口 CALL DELAY 执行Delay延迟段代码,不延迟的话就不是流水灯了而是全亮。。。 RL A 左移A寄存器内容(移动后变成11111100B) DJNZ R2,S0 (R2-1)为0?不是则跳转到S0句 SJMP MAIN 跳转到main句 DELAY:MOV R4,#20 D2:MOV R5,#20 D1:MOV R6,#248 D0:NOP DJNZ R6,D0 DJNZ R5,D1 DJNZ R4,D2 RET MAIN:MOV P0,#0DBH 将DBH输出到P0端口(DB二进制为11011011B) ACALL WA 调用WA延时程序 MOV P0,#06DH 将6DH输出到P0端口(6D二进制为01101101B) ACALL WA 调用WA延时程序 MOV P0,#0B6H 将B6H输出到P0端口(B6二进制为10110110B) ACALL wa 调用WA延时程序 MOV P0,#0BEH 将BEH输出到P0端口(BE二进制为10111110B) ACALL WA 调用WA延时程序 MOV P0,#07EH 将7eH输出到P0端口(7e二进制为01111110B) ACALL WA WA 调用WA延时程序 SJMP START 跳转到START WA: MOV R7,# S1: MOV R3,# S2: DJNZ R3,S2 DJNZ R7,S1 RET END 如果你的单片机是低电平亮灯的话效果就是看输出到P0的二进制为0的亮为1的灭

ORG 000BH

单片机汇编语言按键控制流水灯,两个开关k1,k2。实现功能按下k1,流水灯左移动,按下k2,流水灯右移动。

DELAY1: MOV R2,#7FH ;127

K2 EQU P1.1

DB 80H ;"8" 08H

ORG 0000H

ORG 0030H

MAIN:

MOV A,#0FEH

CLR 00H

CLR 01H

JB K1,LOOP1

SETB 00H

CLR 01H

SJMP LOOP

LOOP1:

SETB 01H

CLR 00H

LOOP2:

JB 01H,LOOP3

JB 00H,LOOP4

SJMP MAIN

LOOP3:

MOV P0,A

SJMP LOOP

LOOP4:

MOV P0,A

RL A

SJMP LOOP

DELAY:

MOV R2,#200

DLY:

MOV R3,#

DJNZ R3,$

DJNZ R2,DLY

求助:用汇编实现按钮控制流水灯

MOV P3,#01H

楼主写三个子程序,用三个按键控制,分别调用,即可。

MOV P1, A

这个程序用中断比较好写一点,不用中断写起来就比较麻烦,也有很多种写法。我以前应该写过这样的程序,楼主如果需要,可以回复我

8个流水灯依次都亮的汇编程序

MOV COUNT_KEY,#50

ORG 00H

LJMP START

ORG 30H

LO2、单片机AT89C51的P1口接8个发光二极管,让这8个发光二极管能够双灯左移之后再双灯右移,OP: RL A

INC A

LCALL DELAY

LJMP LOOP

DELAY: MOV R5, #5

DELAY01: MOV R6, #200

DELAY02: MOV R7, #

DELAY03:

DJNZ R7, DELAY03

DJNZ R6, DELAY02

DJNZ R5, DELAY01

求汇编程序:6M晶振51单片机控制流水灯从右到左逐个点亮同时从p3.5脚输出1KHZ方波,用T1中断产生

END

#include "reg51.h"

LJMP MAIN

unsigned char P1BUF=0XFE;

bit led;

void main(void)

{TMOD |= 0X10; //定时器1工作于方式1,16位定时器

TH1 = 0XFF; //定时器1定时时间=500uS

TL1 = 0X06; //

ET1 = 1; //使能定时器1中断

TR1 = 1; //开启定时器1

EA =1;

while(1)

{}

}void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组

{TH1 = 0XFF; //定时器1定时时间=500uS

TL1 = 0X06;

P3^5=!P3^5; //输出方波

YSJS++;

{P1 = P1BUF;

led = P1BUF & 0X80;

P1BUF <<= 1; //预备下一位

if(led)P1BUF = P1BUF | 1;

}}

led发光二极管实现流水灯然后全部显示1S钟,在循环,汇编程序

;12M晶振

;其中P2.0到P2.7分别连1盏led灯

;ORG 0000H

AJMP START

ORG 0030H

START: MOV P2 ,0X00

SETB P2.0

ACALL DELOOP:LAY0

CLR P2.0

ACALL DELAY0

CLR P2.1

SETB P2.2

ACALL DELAY0

L TR1LR P2.2

SETB P2.3

ACALL DELAY0

CLR P2.3

SETB P2.4

ACALL DELAY0

CLR P2.4

SETB P2.5

ACALL DELAY0

CLR P2.5

SETB P2.6

ACALL DELAY0

CLR P2.6

SETB P2.7

ACALL DELAY0

CLR P2.7

AJMP START

DELAY0: MOV R1,#0CH ;12

DELAY2: MOV R3,#7FH ;127

DELAY3: NOP

DJNZ R3,DELAY3

DJNZ R2,DELAY2

DJNZ R1,DELAY1

;电路原理图

请问单片机汇编语言流水灯程序,如何实现两颗灯流动(11111100/11111001/111100

MOV COUNT_K,A

MRETOV A , #0FCH

LOOP:MOV P1, A ;设灯在P1口

RL A

ACALL DELAY ;延时

SJMP LOOP

这样就行了.

51单片机汇编控制8个流水灯

LCALL DELAY

这是C程序。。。汇编忘记不太会了。P1口接8个LED灯

#include

#include

#define uchar unsigned char

uchar j,temp;

int i if(YSJS==1000)= 8;

void delay(unsigned int ms) //延时

{uchar t;

while(ms--)

for(t=0;t<123;t++); //500122

}void display(int wei) //显示

{P1=0xff; //P1口拉高。低电平LED灯亮。

temp = 0x7F; //0111 1111 通过位右移达到流水灯目的

delay(500); //500ms?

for(j=1;j<=wei;j++) //wei为选择右移的位数

{P1=temp;

delay(500);

if(j != wei) //当右移位数到后,那一位常亮不闪。

{P1&=~temp;

delay(500);//延时闪烁

temp=_cror_(temp,1);//循环右移当位数到后,停止右移

}}

}void main() //主函数

{while(1)//主函数循环

{switch(i)

{case 1:

display(1);

break;

case 2:

display(3);

break;

case 3:

display(3);

break;

case 4:

display(4);

break;

case 5:

display(5);

break;

case 6:

display(6);

break;

case 7:

display(7);

break;

case 8:

display(8);

break;

default:break;

}i--;

if(i==0)

{P1=0x00;//常亮

//i=8;//或者返回重新开始

while(1);//程序停在这里?

}}

}