www.fltk.net > 51单片机中如何用汇编语言编写流水灯

51单片机中如何用汇编语言编写流水灯

51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果.以下是程序:;假设晶振12MHZ,P1控制8个LED低电平亮 ;

ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV DPTR,#TAB MOV R7,#4FH LOOP: MOVC A,@A+DPTR INC DPTR MOV P1,A ACALL DELAY CLR A DJNZ R7, LOOP AJMP MAIN ORG 0200H TAB: ;从左到右,再从右到左,一次

假设你的51单片机的P0口接了LED 就假设8个吧 弄个循环 unsigned char i; unsigned char tmp; for(i=0;i<8;i++) { if(i==0)tmp=1; else tmp=tmp>>1; P0=tmp; } 就是tmp不断的右移,这里假设你的LED是共阴极的. 嘿嘿,自己慢慢看吧

SGML:ANL P1,#00000000; CLR C ; MOVE A,#00000001 ; ;DYP1:MOVE P1,A ;DYS1:P7 #2 ;DYS2:P6 #250 ;DYS3:P5 #250 ;DYS4:DJNZ P5,DYS4 ; DJNZ P6,DYS3 ; DJNZ P7,DYS2 ; RL A ; SJMP DYP1 ;

ORG 0000H LJMP MAIN ORG 000BH T0MS EQU NOT 50000 ; 50 mS 晶振 12.000 MHz PJSBZ EQU 20H PJSBZY EQU 21HPST0: MOV TL0, #LOW T0MS ; T0 中断 MOV TH0, #HIGH T0MS SETB PJSBZ ; 50 mS 标志 DJNZ R6, PST02 MOV R6

ORG 0000H ;程序开始 SJMP START ;跳转到START ORG 0050H ;START从ROM的0050H开始存储 START: MOVE P1.0,#00000001B ;把二进制数00000001B送到P1口 LCALL DELAY ;调用延时子程序 MOVE P1.0,#00000010B ;把二进

用P1口接8个LED流水灯,负极接P2口,采用低电平点亮LED灯.仿真图如下.

ORG 0000H LJMP MAINORG 0100HMAIN: CLR P1.5 MOV A,#0FEHLOP: MOV P0,A LCALL DELAY RL A SJMP LOPDELAY: MOV R7,#198DEL1: MOV R6,#50DEL2: MOV R5,#23 DJNZ R5,$ DJNZ R6,DEL2 DJNZ R7,DEL1 RET END

ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#0FEH MOV R2,#8LOOP: MOV P1,A RL A CLR P3.0 MOV R3,#1 LCALL DELAY SETB P3.0 MOV R3,#9 LCALL DELAY DJNZ R2,LOOP ;左流水 MOV R2,#8LOOP1: RR A MOV P1,A CLR P3

只能循环,不能灭.应该用CJNE控制它的次数

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com