求一个51单片机的流水灯(从1-8的...)的汇编程序??? 51单片机16位流水灯汇编程序
流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:
ORG 0000H;复位启动AJMP START;ORG 001BH;T1中断AJMP T1INT;
;定义变量========================YSJSEQU 30H;延时计数器LEDEQU 31H;LED控制缓冲器
;主程序==========================START:MOV LED,#0FEH;初始化数据MOV YSJS,#0;MOV TMOD,#10H;定时器1工作于方式1,16位定时器MOV TL1,#0B0H;设置定时初值MOV TH1,#3CH;定时时间=50mSSETB ET1;使能定时器1中断SETB TR1;启动定时器1SETB EA;开总中断
MOV P1,LED;初始化流水灯LOOP:JMP LOOP;循环等待中断T1INT:PUSH PSW;定时器1中断程序PUSH ACC;保护现场MOV TH1,#3CH;定时时间=50mSMOV TL1,#0B0H;INC YSJS;
PUSH ACC;保护ACCMOV A,YSJI;CJNE A,#2,QT1;50mS*2=100mSMOV P1,LED;MOV A,LED;RL A;累加器A的值循环左移1位MOV LED,A;MOV YSJS,#0;QT1:POP ACC;恢复现场POP PSW;RETI;返回主程序END;汇编程序结束
扩展资料:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。
花样流水灯的玩法,一个51单片机8位端口轮流输出16颗灯珠,
ORG 00H
MAIN:MOV P3,#00H
SETB P3.2
CALL DELY
CLR P3.2
SETB P3.3
CALL DELY
CLR P3.3
SETB P3.4
CALL DELY
.........按照上面省略,你自己补全。
AJMP MAIN
DELY:延时省略。
END
这种方法比较麻烦。但容易理解,你可以用循环左移,或者查表比较简洁
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:MOV A,#0FFH
LOOP:MOV P1,A
CLR P1.0
CALL DELAY
CLR P1.1
CALL DELAY
CLR P1.2
CALL DELAY
CLR P1.3
CALL DELAY
CLR P1.4
CALL DELAY
CLR P1.5
CALL DELAY
CLR P1.6
CALL DELAY
CLR P1.7
MOV P1,A
CLR P1.7
CALL DELAY
CLR P1.6
CALL DELAY
CLR P1.5
CALL DELAY
CLR P1.4
CALL DELAY
CLR P1.3
CALL DELAY
CLR P1.2
CALL DELAY
CLR P1.1
CALL DELAY
CLR P1.0
SJMP MAIN
DELAY:MOV R7,#250
DEL:MOV R6,#250
NOP
NOP
DJNZ R6,$
DJNZ R7,DEL
RET
END
这个我下午才在试验箱上做了,从0到7。再从7到0,也就是左右左循环,这个是最容易看懂的!还有其他的,你如果要我还可以给你。
八个LED灯,P3.0~P3.7才行,程序如下:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R2,#8
MOV A,#0FEH
LOOP:
MOV P3,A
CLR C
RLC A
LCALL DELAY
DJNZ R2,LOOP
SJMP MAIN
DELAY:
MOV R2,#200
DLY:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DLY
RET
END
ORG 0030H
N1:MOV P3,#11111011B; // P3.2先亮
N2:LCALL YS0_5S; // 延时0.5S
MOV A,P3;
SETB CY;
RLC A; // 带进位左移
JNC N1; // 若CY=0则跳往N1
MOV P3,A;
SJMP N2;
YS0_5S:MOV 40H,#10;
S1: MOV 41H,#200;
S2: MOV 42H,#250;
S3: DJNZ 42H,S3;
DJNZ 41H,S2;
DJNZ 40H,S1;
RET
END
P3.2-P3.7的LED一个一个……--这才6个灯。
(从1-8的...),……--这是8个灯。
--
这程序,谁都没有办法编写。
楼上几位给出程序的,都是“大忽悠”赵本山的徒弟,组团卖拐呢。
只有“回答者: 怎能平庸”例外。